Виртуальный хостинг · 3 min read · Dec 16, 2025

Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью)

Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это значительно более производительно и позволяет иметь тысячи ftp-пользователей на одной машине. В дополнение к этому я покажу использование квоты и ограничений на загрузку/выгрузку с этой настройкой. Пароли будут храниться зашифрованными в виде строк MD5 в базе данных.

Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, который также будет установлен в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не нужно возиться с командной строкой.

Этот учебник основан на Debian Sarge (Debian 3.1). Вы уже должны были настроить базовую систему Debian, как описано здесь: https://www.howtoforge.com/perfect_setup_debian_sarge и https://www.howtoforge.com/perfect_setup_debian_sarge_p2. Он должен применяться к другим дистрибутивам на основе Debian, таким как Ubuntu, Knoppix и т. д., без изменений. В других дистрибутивах, таких как SuSE, Fedora, Mandriva и т. д., только установка PureFTPd отличается; конфигурация PureFTPd также должна применяться к этим дистрибутивам.

Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.

Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!

1 Установите MySQL и phpMyAdmin

Все это можно установить одной командой:

apt-get install mysql-server mysql-client libmysqlclient12-dev phpmyadmin

Вам будет задано несколько вопросов:

Включить suExec? <– Да
Настройка mysql-server (Установочные подсказки) <– ОК
Какой веб-сервер вы хотите автоматически перенастроить? <– apache, apache2
Хотите, чтобы я перезапустил apache сейчас? <– Да

Создайте пароль для пользователя MySQL root (замените yourrootsqlpassword на желаемый пароль):

mysqladmin -u root password yourrootsqlpassword

2 Установите PureFTPd с поддержкой MySQL

Для Debian доступен предварительно настроенный пакет pure-ftpd-mysql. Установите его как отдельный демон следующим образом:

apt-get install pure-ftpd-mysql

Запустить pure-ftpd из inetd или как отдельный сервер? <– отдельный
Хотите, чтобы pure-ftpwho был установлен с правами root? <– Нет

Затем мы создаем группу ftp (“ ftpgroup “) и пользователя (“ ftpuser “), к которым будут привязаны все наши виртуальные пользователи. Замените идентификаторы группы и пользователя 2001 на номер, который свободен в вашей системе:

groupadd -g 2001 ftpgroup
useradd -u 2001 -s /bin/false -d /bin/null -c “pureftpd user” -g ftpgroup ftpuser

3 Создайте базу данных MySQL для PureFTPd

Теперь мы создаем базу данных с именем pureftpd и пользователя MySQL с именем pureftpd, который позже будет использоваться демоном PureFTPd для подключения к базе данных pureftpd:

mysql -u root -p
CREATE DATABASE pureftpd;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd.
TO ‘pureftpd’@’localhost’ IDENTIFIED BY ‘ftpdpass’;
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP ON pureftpd. TO ‘pureftpd’@’localhost.localdomain’ IDENTIFIED BY ‘ftpdpass’;
FLUSH PRIVILEGES;

Замените строку ftpdpass на любой пароль, который вы хотите использовать для пользователя MySQL pureftpd. Все еще в оболочке MySQL мы создаем необходимую таблицу базы данных (да, есть только одна таблица!):

USE pureftpd;

CREATE TABLE ftpd (
User varchar(16) NOT NULL default ‘’,
status enum(‘0’,’1’) NOT NULL default ‘0’,
Password varchar(64) NOT NULL default ‘’,
Uid varchar(11) NOT NULL default ‘-1’,
Gid varchar(11) NOT NULL default ‘-1’,
Dir varchar(128) NOT NULL default ‘’,
ULBandwidth smallint(5) NOT NULL default ‘0’,
DLBandwidth smallint(5) NOT NULL default ‘0’,
comment tinytext NOT NULL,
ipaccess varchar(15) NOT NULL default ‘
‘,
QuotaSize smallint(5) NOT NULL default ‘0’,
QuotaFiles int(11) NOT NULL default 0,
PRIMARY KEY (User),
UNIQUE KEY User (User)
) TYPE=MyISAM;*

quit;

Как вы могли заметить, с помощью команды quit; мы вышли из оболочки MySQL и вернулись в оболочку Linux.

Кстати, (я предполагаю, что имя хоста вашей ftp-системы — server1.example.com) вы можете получить доступ к phpMyAdmin по адресу http://server1.example.com/phpmyadmin/ (вы также можете использовать IP-адрес вместо server1.example.com) в браузере и войти как pureftpd. Затем вы можете взглянуть на базу данных. Позже вы можете использовать phpMyAdmin для администрирования вашего сервера PureFTPd.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.