Виртуальный хостинг · 3 min read · Dec 15, 2025
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Debian Etch
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Debian Etch
Версия 1.0
Автор: Фалко Тимме
Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это гораздо более производительно и позволяет иметь тысячи ftp пользователей на одной машине. В дополнение к этому я покажу использование квот и ограничений на загрузку/выгрузку с этой настройкой. Пароли будут храниться в зашифрованном виде в виде строк MD5 в базе данных.
Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, который также будет установлен в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не придется возиться с командной строкой.
Этот учебник основан на Debian Etch (Debian 4.0). Вы должны уже настроить базовую систему Debian Etch, как описано в первых шести главах этого учебника: https://www.howtoforge.com/perfect_setup_debian_etch
Этот документ предназначен как практическое руководство; он не охватывает теоретические основы. Они рассматриваются во многих других документах в интернете.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.
2 Установка MySQL и phpMyAdmin
Все это можно установить одной командой:
apt-get install mysql-server mysql-client libmysqlclient15-dev phpmyadmin apache2
Создайте пароль для пользователя MySQL root (замените yourrootsqlpassword на пароль, который вы хотите использовать):
mysqladmin -u root password yourrootsqlpassword
Затем проверьте с помощью
netstat -tap | grep mysql
на каких адресах MySQL слушает. Если вывод выглядит так:
tcp 0 0 localhost.localdo:mysql *:* LISTEN 2713/mysqld
что означает, что MySQL слушает только на localhost.localdomain, тогда вы в безопасности с паролем, который вы установили ранее. Но если вывод выглядит так:
tcp 0 0 *:mysql *:* LISTEN 2713/mysqld
вам также следует установить пароль MySQL для вашего имени хоста, потому что в противном случае любой сможет получить доступ к вашей базе данных и изменить данные:
mysqladmin -h server1.example.com -u root password yourrootsqlpassword
3 Установка PureFTPd с поддержкой MySQL
Для Debian доступен предварительно настроенный пакет 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) ) 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.