Виртуальный хостинг · 5 min read · Feb 14, 2026
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Fedora 13
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на Fedora 13
Версия 1.0
Автор: Фалко Тимме
Следите за мной в Twitter
Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это гораздо более производительно и позволяет иметь тысячи ftp пользователей на одной машине. В дополнение к этому я покажу использование квот и ограничений на загрузку/выгрузку с этой настройкой. Пароли будут храниться в зашифрованном виде в виде строк MD5 в базе данных.
Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, который также будет установлен в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не придется возиться с командной строкой.
Этот учебник основан на Fedora 13. Вы должны уже настроить базовую систему Fedora 13, например, как описано в первых пяти главах этого учебника: https://www.howtoforge.com/perfect-server-fedora-13-x86_64-ispconfig-2
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует много способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их, где это необходимо.
2 Установка MySQL и phpMyAdmin
Все это можно установить одной командой:
yum install mysql mysql-server phpMyAdmin httpd
После этого мы должны отредактировать файл /etc/httpd/conf.d/phpMyAdmin.conf, чтобы сделать phpMyAdmin доступным с любых IP-адресов. По умолчанию он доступен только с 127.0.0.1. Закомментируйте этот раздел:
#
# Order Deny,Allow
# Deny from All
# Allow from 127.0.0.1
# Allow from ::1
#так что файл будет выглядеть так:
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 (чтобы оба запускались автоматически при загрузке системы) и запускаем оба сервиса:
chkconfig --levels 235 mysqld on
/etc/init.d/mysqld startchkconfig --levels 235 httpd on
/etc/init.d/httpd startСоздайте пароль для пользователя MySQL root (замените yourrootsqlpassword на пароль, который вы хотите использовать):
mysql_secure_installation[root@server1 ~]# mysql_secure_installation
ПРИМЕЧАНИЕ: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ MySQL
СЕРВЕРОВ В ПРОИЗВОДСТВЕ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ!
Чтобы войти в MySQL для его защиты, нам понадобится текущий
пароль для пользователя root. Если вы только что
установили MySQL и
еще не установили пароль root,
пароль будет пустым,
поэтому вам просто нужно нажать enter здесь.
Введите текущий пароль для root (нажмите enter для отсутствия): <– ENTER
OK, успешно использован пароль, продолжаем…
Установка пароля root гарантирует, что
никто не сможет войти в пользователя root MySQL
без надлежащей авторизации.
Установить пароль 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 ftpuser4 Создание базы данных MySQL для PureFTPd
Теперь мы создаем базу данных с именем pureftpd и пользователя MySQL с именем pureftpd, который позже будет использоваться демоном PureFTPd для подключения к базе данных pureftpd:
mysql -u root -pCREATE 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.