Виртуальный хостинг · 6 min read · Jan 31, 2026
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на CentOS 6.4
Виртуальный хостинг с PureFTPd и MySQL (включая управление квотами и пропускной способностью) на CentOS 6.4
Версия 1.0
Автор: Фалько Тимме
Следите за мной в Twitter
Этот документ описывает, как установить сервер PureFTPd, который использует виртуальных пользователей из базы данных MySQL вместо реальных системных пользователей. Это гораздо более производительно и позволяет иметь тысячи ftp пользователей на одной машине. В дополнение к этому я покажу использование квот и ограничений на загрузку/скачивание с этой настройкой. Пароли будут храниться в зашифрованном виде в виде строк MD5 в базе данных.
Для администрирования базы данных MySQL вы можете использовать веб-инструменты, такие как phpMyAdmin, которые также будут установлены в этом руководстве. phpMyAdmin — это удобный графический интерфейс, что означает, что вам не придется возиться с командной строкой.
Этот учебник основан на CentOS 6.4. Вы уже должны были настроить базовую систему CentOS 6.4, например, как описано в первых шести главах этого учебника: Идеальный сервер - CentOS 6.4 x86_64 (Apache2, Dovecot, ISPConfig 3)
Это руководство предназначено как практическое руководство; оно не охватывает теоретические основы. Они рассматриваются во многих других документах в сети.
Этот документ предоставляется без каких-либо гарантий! Я хочу сказать, что это не единственный способ настройки такой системы. Существует множество способов достижения этой цели, но это тот путь, который я выбираю. Я не даю никаких гарантий, что это сработает для вас!
1 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100. Эти настройки могут отличаться для вас, поэтому вам нужно заменить их там, где это необходимо.
2 Установка MySQL и phpMyAdmin
Сначала мы включаем репозиторий EPEL на нашей системе CentOS, так как некоторые пакеты, которые мы собираемся установить в ходе этого учебника, недоступны в официальных репозиториях CentOS 6.4:
rpm --import https://fedoraproject.org/static/0608B895.txt
wget http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
rpm -ivh epel-release-6-8.noarch.rpmyum install yum-prioritiesОтредактируйте /etc/yum.repos.d/epel.repo…
vi /etc/yum.repos.d/epel.repo… и добавьте строку priority=10 в секцию [epel]:
| [epel] name=Extra Packages for Enterprise Linux 6 - $basearch #baseurl=http://download.fedoraproject.org/pub/epel/6/$basearch mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-6&arch=$basearch failovermethod=priority enabled=1 priority=10 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6 [...] |
Теперь мы можем установить 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 гарантирует, что никто не сможет войти в 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 для CentOS поддерживает различные бэкенды, такие как 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)
) 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.