FTP Hosting · 4 min read · Jan 30, 2026
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Ubuntu 14.04LTS
Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это гораздо более производительно и позволяет иметь тысячи ftp пользователей на одной машине. В дополнение к этому я покажу использование квот и ограничений на загрузку/выгрузку с этой настройкой. Пароли будут храниться в зашифрованном виде как строки MD5 в базе данных. Этот учебник основан на Ubuntu 14.04.
Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, который также будет установлен в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не придется возиться с командной строкой.
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.
Убедитесь, что вы вошли как root (введите
sudo su чтобы стать root), потому что мы должны выполнять все шаги из этого учебника от имени пользователя root.
2 Установка MySQL и phpMyAdmin
Все это можно установить одной командой:
apt-get install mysql-server mysql-client phpmyadmin apache2
Вам будут заданы следующие вопросы:
Новый пароль для пользователя MySQL “root”: <– вашпарольmysql Повторите пароль для пользователя MySQL “root”: <– вашпарольmysql Веб-сервер для автоматической перенастройки: <– apache2 Настроить базу данных для phpmyadmin с dbconfig-common? <– Нет
3 Установка PureFTPd с поддержкой MySQL
Для Ubuntu 14.04 доступен предварительно настроенный пакет pure-ftpd-mysql. Установите его следующим образом:
apt-get install pure-ftpd-mysql
Затем мы создаем группу ftp (ftpgroup) и пользователя (ftpuser), к которым будут привязаны все наши виртуальные пользователи. Замените идентификаторы группы и пользователя 2001 на номер, который свободен в вашей системе:
groupadd -g 2001 ftpgroup useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser
4 Создание базы данных 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) ) ENGINE=MyISAM;
quit;
Как вы могли заметить, с помощью команды quit; мы вышли из оболочки MySQL и вернулись в оболочку Linux.
Кстати, (я предполагаю, что имя хоста вашей ftp-системы server1.example.com) вы можете получить доступ к phpMyAdmin по адресу http://server1.example.com/phpmyadmin/ (вы также можете использовать IP-адрес вместо server1.example.com) в браузере и войти как пользователь pureftpd. Затем вы можете взглянуть на базу данных. Позже вы сможете использовать phpMyAdmin для администрирования вашего сервера PureFTPd.
5 Настройка PureFTPd
Отредактируйте /etc/pure-ftpd/db/mysql.conf. Он должен выглядеть так:
cp /etc/pure-ftpd/db/mysql.conf /etc/pure-ftpd/db/mysql.conf_orig cat /dev/null > /etc/pure-ftpd/db/mysql.conf vi /etc/pure-ftpd/db/mysql.conf
| MYSQLSocket /var/run/mysqld/mysqld.sock #MYSQLServer localhost #MYSQLPort 3306 MYSQLUser pureftpd MYSQLPassword ftpdpass MYSQLDatabase pureftpd #MYSQLCrypt md5, cleartext, crypt() or password() - md5 is VERY RECOMMENDABLE uppon cleartext MYSQLCrypt md5 MYSQLGetPW SELECT Password FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetUID SELECT Uid FROM ftpd WHERE User="\L" AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetGID SELECT Gid FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MYSQLGetDir SELECT Dir FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthUL SELECT ULBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetBandwidthDL SELECT DLBandwidth FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTASZ SELECT QuotaSize FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") MySQLGetQTAFS SELECT QuotaFiles FROM ftpd WHERE User="\L"AND status="1" AND (ipaccess = "*" OR ipaccess LIKE "\R") ``` | Убедитесь, что вы заменили строку ftpdpass на реальный пароль для пользователя MySQL pureftpd в строке MYSQLPassword! Обратите внимание, что мы используем md5 как метод MYSQLCrypt, что означает, что мы будем хранить пароли пользователей как строку MD5 в базе данных, что гораздо безопаснее, чем использование паролей в открытом виде! Затем создайте файл /etc/pure-ftpd/conf/ChrootEveryone, который просто содержит строку yes: echo “yes” > /etc/pure-ftpd/conf/ChrootEveryone Это заставит PureFTPd помещать каждого виртуального пользователя в его домашний каталог, чтобы он не мог просматривать каталоги и файлы вне своего домашнего каталога. Также создайте файл /etc/pure-ftpd/conf/CreateHomeDir, который снова просто содержит строку yes: echo “yes” > /etc/pure-ftpd/conf/CreateHomeDir Это заставит PureFTPd создавать домашний каталог пользователя, когда пользователь входит в систему, и домашний каталог еще не существует. Наконец, создайте файл /etc/pure-ftpd/conf/DontResolve, который снова просто содержит строку yes: echo “yes” > /etc/pure-ftpd/conf/DontResolve Это заставит PureFTPd не искать имена хостов, что может значительно ускорить соединения и снизить использование пропускной способности. После этого мы перезапускаем PureFTPd: service pure-ftpd-mysql restart ``
Get new posts in your inbox
No spam. Unsubscribe anytime.