Виртуальный хостинг · 5 min read · Feb 13, 2026
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Fedora 18
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Fedora 18
Версия 1.0
Автор: Фалько Тимме
Следите за мной в Twitter
Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это гораздо более производительно и позволяет иметь тысячи ftp-пользователей на одной машине. В дополнение к этому я покажу использование квот и ограничений на загрузку/выгрузку с этой настройкой. Пароли будут храниться в зашифрованном виде в виде строк MD5 в базе данных.
Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не нужно возиться с командной строкой.
Этот учебник основан на Fedora 18. Вы должны уже настроить базовую систему Fedora 18.
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в интернете.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их, где это необходимо.
2 Установите MySQL и phpMyAdmin
Все это можно установить одной командой:
yum install mysql mysql-server phpMyAdmin httpd
Теперь мы настраиваем phpMyAdmin. Мы изменяем конфигурацию Apache, чтобы phpMyAdmin разрешал подключения не только с localhost (закомментировав все в разделе
vi /etc/httpd/conf.d/phpMyAdmin.conf
| # phpMyAdmin - Веб-браузер MySQL на основе php # # По умолчанию разрешает только localhost # # Но разрешение phpMyAdmin для всех, кроме localhost, следует считать # опасным, если не обеспечить надлежащую безопасность с помощью SSL Alias /phpMyAdmin /usr/share/phpMyAdmin Alias /phpmyadmin /usr/share/phpMyAdmin |
Затем мы создаем системные ссылки для автозагрузки MySQL и Apache (чтобы оба запускались автоматически при загрузке системы) и запускаем оба сервиса:
systemctl enable mysqld.service systemctl start mysqld.service
systemctl enable httpd.service systemctl start httpd.service
Создайте пароль для пользователя MySQL root (замените yourrootsqlpassword на пароль, который вы хотите использовать):
mysql_secure_installation
[root@server1 ~]# mysql_secure_installation
ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MySQL
СЕРВЕРОВ В ПРОИЗВОДСТВЕ! Пожалуйста, внимательно прочитайте каждый шаг!
Чтобы войти в MySQL для его защиты, нам нужен текущий
пароль для пользователя root. Если вы только что
установили MySQL и еще не установили пароль root,
пароль будет пустым, поэтому вам просто нужно
нажать Enter здесь.
Введите текущий пароль для root (нажмите Enter для отсутствия): <– ENTER
OK, успешно использован пароль, продолжаем…
Установка пароля root гарантирует, что никто не сможет
войти в MySQL под пользователем root без
надлежащей авторизации.
Установить пароль root? [Y/n] <– ENTER
Новый пароль: <– yourrootsqlpassword
Повторите новый пароль: <– yourrootsqlpassword
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
… Успех!
По умолчанию установка MySQL имеет
анонимного пользователя, позволяя любому
войти в MySQL без необходимости создания
учетной записи для них. Это предназначено
только для тестирования и для того, чтобы
установить систему немного проще.
Вы должны удалить их перед переходом в
производственную среду.
Удалить анонимных пользователей? [Y/n] <– ENTER
… Успех!
Обычно root должен иметь возможность
подключаться только с ‘localhost’. Это
гарантирует, что кто-то не сможет
угадать пароль root из сети.
Запретить удаленный вход root? [Y/n] <– ENTER
… Успех!
По умолчанию MySQL поставляется с
базой данных под названием ‘test’, к которой
любой может получить доступ. Это также
предназначено только для тестирования и
должно быть удалено перед переходом в
производственную среду.
Удалить тестовую базу данных и доступ к ней? [Y/n] <– ENTER
- Удаление тестовой базы данных…
… Успех! - Удаление привилегий на тестовую базу данных…
… Успех!
Перезагрузка таблиц привилегий гарантирует,
что все изменения, сделанные до сих пор,
вступят в силу немедленно.
Перезагрузить таблицы привилегий сейчас? [Y/n] <– ENTER
… Успех!
Очистка…
Все готово! Если вы выполнили все
вышеуказанные шаги, ваша установка MySQL
должна быть теперь защищена.
Спасибо за использование MySQL!
[root@server1 ~]#
3 Установите PureFTPd с поддержкой MySQL
Пакет PureFTPd для Fedora поддерживает различные бэкенды, такие как MySQL, PostgreSQL, LDAP и т.д. Поэтому все, что нам нужно сделать, это установить обычный пакет PureFTPd:
yum install pure-ftpd
Затем мы создаем группу 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.
Get new posts in your inbox
No spam. Unsubscribe anytime.