Виртуальный хостинг · 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.
Get new posts in your inbox
No spam. Unsubscribe anytime.