Рубрика:
Администрирование /
Продукты и решения
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
Сергей Яремчук
Панель управления хостингом SysCP
Как упростить управление хостингом? Даже при тщательно спланированной архитектуре и выборе компонентов будущей системы без некоторой автоматизации процесса потребуется очень много времени, чтобы решить все возможные задачи.
Только на первый взгляд распределение места на сервере может показаться стандартной и решаемой с помощью скриптов или ручной правкой файлов. По мере увеличения числа виртуальных пользователей следить за всеми параметрами будет все труднее, а на администрирование будет затрачиваться все большее количество времени. Ведь придется создавать и управлять почтовыми учетными записями, субдоменами, базами данных, прописывать необходимые записи в DNS, выделять и квотировать место на FTP и веб-серверах, а еще следить за трафиком и объемом места на дисках, чтобы эти параметры не превысили лимит. Плюс не стоит забывать о резервном копировании, борьбе со спамом и прочими задачами. Конечно, шаблоны и скрипты могут частично помочь решить эту задачу. Но каждое изменение конфигурации, например добавление еще одного почтового адреса для субдомена, потребует вмешательства специалиста. Неподготовленный пользователь вряд ли сможет разобраться с ситуацией. Поискав в Интернете, можно найти ряд инструментов, задача которых упростить управление виртуальным хостингом. Такие программы ориентированы на неспециалиста. Администратор (или человек с некоторой подготовкой, например менеджер) лишь создает новых пользователей и настраивает ресурсы, которые он может использовать: объем места под сайт, наличие и количество поддоменов, количество почтовых адресов, работа с СУБД и FTP. Остальные параметры может устанавливать уже сам пользователь, в том числе и не обладающий специальной подготовкой, ему доступна упрощенная панель, в которой он уже сам определяет нужные имена, логины и прочее.
Имеются коммерческие решения вроде CPanel, DirectAdmin, Plesk и прочие. Поиск по ключевому слову hosting на freshmeat.net выдает 155 ссылок, не все из их соответствуют искомому, но, просмотрев возможности некоторых проектов, в большинстве случаев можно найти приемлемое решение. Единственное, о чем следует помнить, – универсального решения на все случаи жизни не существует. Всегда следует присматриваться к сервисам, на обслуживание которых ориентировано конкретное решение. Например, в требованиях Domain Technologie Control (DTC) [1] указаны такие сервисы: Bind 8/9 (или совместимый), MySQL, Apache 1.3, php4, Qmail, Postfix, Courier, Dovecot, ProFTPd, Webalizer. В том случае, если условия внедрения иные, следует подыскать другой вариант, подходящий по функциональности. Многие проекты предлагают демоверсию, что позволяет оценить удобство интерфейса и некоторые возможности по администрированию без установки.
Возможности SysCP
Началом проекта можно считать ноябрь 2003 года, когда Флориан Липперт (Florian Lippert) стал администрировать почтовый сервер. Скоро он заметил, что добавлять новых пользователей, субдомены не совсем удобно, некоторые изменения заносились в конфигурационный файл, и требовался перезапуск сервера.
Осенью 2004 года были сформулированы требования к будущей системе:
- по возможности она не должна создавать локальных (системных) пользователей;
- позволять управлять почтовыми адресами и пересылкой писем;
- создавать новые базы в MySQL;
- управлять субдоменами для клиентов.
И впоследствии было добавлено еще одно требование – создание новых зон в BIND.
Результат System Control Panel (SysCP) под лицензией GNU GPL был представлен общественности 15 июня 2004 года. Сама система написана на PHP, для хранения информации использован MySQL. Поддерживаются следующие сервисы:
- веб-сервер – Apache 1.3 и 2.x с поддержкой PHP 4/5 (ранее рекомендовался только 1.3 и PHP 4, PHP должен поддерживать командный интерфейс CLI);
- MTA Postfix;
- POP3/IMAP – Courier (возможно использование Dovecot, хотя этот вариант полностью не оттестирован);
- ftp-сервер – ProFTPd (может быть заменен на Pureftp);
- аутентификация – Cyrus-sasl;
- статистика – Webalizer.
Опционально могут быть установлены BIND (может быть заменен на PowerDNS), Maildrop, ClamAV и Spamassassin, PHPmyAdmin и веб-интерфейс к почте вроде SquirrelMail. Используя клиентскую часть ПО, можно: управлять почтовыми учетными записями с возможностью Catch-all (то есть ловить все письма, идущие в домен), управлять перенаправлением почты, субдоменами, паролями, базой данных, установкой паролей на каталоги, а также доступом к webmail и PHPmyAdmin. Административный интерфейс позволяет создавать новых пользователей, задавать доступные ресурсы и лимиты, поддерживается работа с реселлерами с заданием зоны видимости каждого. Перед установкой можно ознакомиться с полнофункциональной демоверсией SysCP [3].
Установка SysCP
Изначально SysCP работает в кооперации с Debian GNU/Linux, поэтому на сайте проекта, кроме исходных текстов, представлены и пакеты для Debian. Тестовая установка производилась на Ubuntu 7.04, к которому пакеты для Debian Etch подходят без проблем. В составе группы разработчиков есть мантайнер пакетов FreeBSD, поэтому в систему портов включен порт syscp, который можно найти в sysutil/syscp. Причем имеется и патч, упрощающий настройку связки с Dovecot. Патча для Linux нет, как, впрочем, и необходимости в нем. Актуальной на момент написания статьи была версия 1.2.16, поэтому все сказанное относится к ней. В нестабильной версии 1.3 установка несколько отличается, хотя процесс установки SysCP, как вы увидите, не самый тяжелый.
Cкачиваем файл:
$ wget –c http://debian.syscp.de/etch/syscp_1.2.16_all.deb
Смотрим зависимости:
$ sudo dpkg-deb --info ./syscp_1.2.16_all.deb
Устанавливаем все необходимое:
$ sudo apt-get apache2-mpm-prefork libapache2-mod-php5 mysql-server postfix-mysql proftpd-mysql libsasl2 \
courier-authlib courier-authlib-mysql courier-base courier-pop-ssl bind9 php5 php5-mysql php5-cli webalizer
Создаем символическую ссылку с каталога /etc/apache2/mods-available в mods-enabled, чтобы активировать поддержку PHP в веб-сервере:
$ a2enmod php5
This module is already enabled!
|
Установка с исходных текстов:
$ cd /var/www
$ sudo tar -xzvf syscp-1.2.16.tar.gz
$ chown www-data:www-data syscp/lib/userdata.inc.php
$ chmod 777 syscp/lib/userdata.inc.php
Теперь заходим по адресу http://server_name/syscp и нажимаем ссылку в строке «You have to configure SysCP first!». В появившемся окне выбираем язык интерфейса, которым будут выводиться подсказки при инсталляции, в раскрывающемся списке присутствует только английский, французкий и немецкий (см. рис. 1).
Рисунок 1. Настройки параметров доступа
Ниже вводим параметры для доступа к MySQL: узел, имя базы данных, пользователя для доступа к БД.
В поле «Administrator Account» указываем пароль администратора, в целях безопасности можно указать учетную запись, отличную от admin. И в «Server settings» указываем FQDN сервера и версию Apache. После нажатия на «ОК» будут проверены введенные данные и созданы все необходимые для работы таблицы, введенная информация будет сохранена в файле /var/www/syscp/lib/userdata.inc.php. В случае ошибки некорректное поле будет отмечено красным цветом. По окончании установки можно зарегистрироваться в системе с администраторскими правами, здесь уже можно выбрать русский язык интерфейса.
Хотя делать это еще рано. Сначала необходимо указать Postfix, Courier и ProFTPd, чтобы они получали настройки из MySQL и настроить Apache для работы с виртуальными серверами.
Во вкладке «Сервер -> Настройки служб» даны подсказки команд для Debian 3.1/4.0 и SUSE Linux 10.0, причем в них уже выставлены все необходимые имена применительно к установленной системе, поэтому часто их можно просто скопировать (см. рис. 2).
Рисунок 2. Подсказка в настройке
Некоторые пути, предлагаемые скриптом, можно изменить зайдя в «Настройки сервера» (см. рис. 3).
Рисунок 3. Установки сервера
По умолчанию считается, что все сервисы размещены на одном компьютере, но ничего не мешает перенести почтовый сервер на другую машину, забирая данные из базы под управлением MySQL по сети.
Настройки серверов
Все указанные настройки не догма, можно добавить и другие параметры, не нарушающие общий принцип настроек. Комментировать их не буду, в журнале уже были статьи по этим серверам.
Строку MYSQL_PASSWORD необходимо заменить на пароль пользователя syscp, который является владельцем базы данных.
Начнем с Apache. Создаем и подключаем файл, в который будет заноситься информация о виртуальных узлах:
$ sudo echo -e "\nInclude /etc/apache2/sites-available/99_syscp_vhosts.conf" >> /etc/apache2/httpd.conf
$ sudo touch /etc/apache2/sites-available/99_syscp_vhosts.conf
И каталог для виртуальных узлов:
$ sudo mkdir -p /var/kunden/webs/
Перезапускаем веб-сервер:
$ sudo /etc/init.d/apache2 restart
Теперь настроим BIND, чтобы он добавлял необходимые записи автоматически. Создаем файл для записи виртуальных зон:
$ sudo touch /etc/bind/syscp_bind.conf
Подключаем его в основном файле:
$ sudo echo "include \"/etc/bind/syscp_bind.conf\";" >> /etc/bind/named.conf
Добавляем в файл /etc/bind/default.zone информацию о своем компьютере (вместо 127.0.0.1 указываем рабочий адрес):
$TTL 1W
@ IN SOA ns root (
2004060501 ; serial
8H ; refresh
2H ; retry
1W ; expiry
11h) ; minimum
IN NS ns
IN NS ns1.provider.com.
IN NS ns2.provider.com.
IN MX 10 mail
IN A 127.0.0.1
IN MX 10 mail
* IN A 127.0.0.1
IN MX 10 mail
ns IN A 127.0.0.1
mail IN A 127.0.0.1
IN MX 10 mail
И перезапускаем BIND:
$ sudo /etc/init.d/bind9 restart
Настройки ProFTPd вообщем то стандартны. Сначала в /etc/proftpd/modules.conf указываем необходимые для работы модули:
ModulePath /usr/lib/proftpd
ModuleControlsACLs insmod,rmmod allow user root
ModuleControlsACLs lsmod allow user *
#LoadModule mod_ctrls_admin.c
LoadModule mod_tls.c
LoadModule mod_sql.c
LoadModule mod_ldap.c
LoadModule mod_sql_mysql.c
LoadModule mod_quotatab.c
LoadModule mod_quotatab_file.c
LoadModule mod_quotatab_ldap.c
LoadModule mod_quotatab_sql.c
LoadModule mod_radius.c
LoadModule mod_wrap.c
LoadModule mod_rewrite.c
LoadModule mod_ifsession.c
<IfModule mod_delay.c>
DelayEngine off
</IfModule>
И в основном конфигурационном файле /etc/proftpd/proftpd.conf особое внимание обращаем на параметры доступа к MySQL, остальные параметры стандартны:
Include /etc/proftpd/modules.conf
ServerName "grinder.com FTP Server"
ServerType standalone
DeferWelcome off
MultilineRFC2228 on
DefaultServer on
ShowSymlinks on
AllowOverwrite on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayFirstChdir .message
ListOptions "-l"
DenyFilter \*.*/
Port 21
MaxInstances 30
User nobody
Group nogroup
<Directory /*>
Umask 022 022
AllowOverwrite on
</Directory>
DefaultRoot ~
RequireValidShell off
SQLAuthTypes Crypt Plaintext
SQLAuthenticate users* groups*
# здесь меняем MYSQL_PASSWORD на пароль
SQLConnectInfo syscp@127.0.0.1 syscp MYSQL_PASSWORD
SQLUserInfo ftp_users username password uid gid homedir shell
SQLGroupInfo ftp_groups groupname gid members
SQLUserWhereClause "login_enabled = 'y'"
SQLLog PASS login
SQLNamedQuery login UPDATE "last_login=now(), login_count=login_count+1 WHERE username='%u'" ftp_users
SQLLog RETR download
SQLNamedQuery download UPDATE "down_count=down_count+1, down_bytes=down_bytes+%b WHERE username='%u'" ftp_users
SQLLog STOR upload
SQLNamedQuery upload UPDATE "up_count=up_count+1, up_bytes=up_bytes+%b WHERE username='%u'" ftp_users
И перезапускаем сервер:
$ sudo /etc/init.d/proftpd restart
Теперь приступаем к настройке почтовой подсистемы. Создадим необходимые для работы Postfix каталоги и новую учетную запись:
$ sudo mkdir -p /etc/postfix/sasl
$ sudo mkdir -p /var/spool/postfix/etc/pam.d
$ sudo mkdir -p /var/spool/postfix/var/run/mysqld
$ sudo groupadd -g 2000 vmail
$ sudo useradd -u 2000 -g vmail vmail
$ sudo mkdir -p /var/kunden/mail/
$ sudo chown -R vmail:vmail /var/kunden/mail/
В главный конфигурационный файл /etc/postfix/main.cf вносим информацию о подключении виртуальных почтовых ящиков:
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no
append_dot_mydomain = no
myhostname = grinder.com
mydomain = grinder.com
myorigin = $myhostname
mydestination = $myhostname $mydomain localhost localhost.$mydomain
mynetworks = 127.0.0.0/8
alias_maps = $alias_database
smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated reject_unauth_destination
virtual_mailbox_base = /var/kunden/mail/
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_alias_domains =
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual_alias_maps.cf
virtual_uid_maps = static:2000
virtual_gid_maps = static:2000
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
Остальные параметры оставлены в значении по умолчанию, напомню, что просмотреть все настройки можно, использовав команду postconf. Ничто не мешает добавить TLS и прочие возможности. И далее создаем конфигурационные файлы, на которые есть ссылки в main.cf:
$ sudo cat > /etc/postfix/mysql-virtual_alias_maps.cf
user = syscp
# меняем MYSQL_PASSWORD на пароль
password = MYSQL_PASSWORD
dbname = syscp
table = mail_virtual
select_field = destination
where_field = email
additional_conditions = and destination <> '' and destination <> ' '
hosts = 127.0.0.1
Следующий:
$ sudo cat > /etc/postfix/mysql-virtual_mailbox_domains.cf
user = syscp
# меняем MYSQL_PASSWORD на пароль
password = MYSQL_PASSWORD
dbname = syscp
table = panel_domains
select_field = domain
where_field = domain
additional_conditions = and isemaildomain = '1'
hosts = 127.0.0.1
$ sudo cat > /etc/postfix/mysql-virtual_mailbox_maps.cf
user = syscp
# меняем MYSQL_PASSWORD на пароль
password = MYSQL_PASSWORD
dbname = syscp
table = mail_users
select_field = maildir
where_field = email
hosts = 127.0.0.1
Настройка связки с Cyrus SASL:
$ sudo cat > /etc/postfix/sasl/smtpd.conf
pwcheck_method: auxprop
auxprop_plugin: sql
mech_list: plain login cram-md5 digest-md5
sql_engine: mysql
sql_hostnames: 127.0.0.1
sql_user: syscp
# меняем MYSQL_PASSWORD на пароль
sql_passwd: MYSQL_PASSWORD
sql_database: syscp
sql_select: select password from mail_users where username='%u@%r'
И перезапускаем Postfix:
$ sudo /etc/init.d/postfix restart
Для настройки Courier в каталоге /etc/courier/ необходимо отредактировать два файла.
Основные настройки работы демона указываются в файле authdaemonrc:
authmodulelist="authmysql"
authmodulelistorig="authcustom authcram authuserdb authldap authmysql authpam"
daemons=5
version=""
authdaemonvar=/var/run/courier/authdaemon
# и на всякий случай? Потом можно будет перевести в 0
DEBUG_LOGIN=1
И создаем файл /etc/courier/authmysqlrc, в котором описываются параметры подключения к MySQL:
MYSQL_SERVER 127.0.0.1
MYSQL_USERNAME syscp
# меняем MYSQL_PASSWORD на пароль
MYSQL_PASSWORD MYSQL_PASSWORD
MYSQL_PORT 0
MYSQL_DATABASE syscp
MYSQL_USER_TABLE mail_users
MYSQL_CRYPT_PWFIELD password_enc
MYSQL_UID_FIELD uid
MYSQL_GID_FIELD gid
MYSQL_LOGIN_FIELD username
MYSQL_HOME_FIELD homedir
MYSQL_MAILDIR_FIELD maildir
Перезапускаем демоны Courier:
$ sudo /etc/init.d/courier-authdaemon restart
$ sudo /etc/init.d/courier-pop restart
Последним шагом необходимо обеспечить периодическое обновление конфигурации серверов. Для этих целей используется скрипт cronscript.php, запускаемый с помощью сrond:
$ sudo echo "*/5 * * * * root /usr/bin/php –q /var/www/syscp/scripts/cronscript.php " >> /etc/crontab
$ sudo /etc/init.d/cron restart
Создаем нового пользователя
Теперь можно воспользоваться веб-интерфейсом. На первой странице показана статистика по использованным ресурсам, информация по системе. Выбрав ссылку внизу «Запросить через веб-сервис», можно уточнить наличие новой версии на сайте проекта. Прежде чем начинать создавать новых пользователей, следует указать IP-адреса сервера, с которых будут приниматься запросы, для этого выбираем «Сервер -> IP-адреса и порты» и, нажав «Добавить комбинацию IP/порт», вводим данные в доступные поля.
Перейдя по ссылке «Клиенты», можно раздавать пространство на виртуальном сервере. В появившемся поле следует заполнить персональную информацию о клиенте и указать доступные ресурсы, создание поддомена, пароль и прочее (см. рис. 4). К сожалению, если ввести имя на русском, при последующем просмотре в основном окне разобрать что-либо будет невозможно, поэтому лучше использовать транслит. После нажатия на кнопку «Сохранить» через некоторое время будут созданы все необходимые подкаталоги для FTP, HTTP-серверов и добавлены необходимые записи в конфигурационные файлы. Все имеющиеся поддомены можно просмотреть и при необходимости отредактировать/добавить, перейдя по ссылке «Домены». Как уже говорилось, раздачу места можно разрешить другим администраторам или реселлерам, для этого следует зайти по ссылке «Админы» и установить разрешения и объем/количество ресурсов, которыми он может распоряжаться.
Рисунок 4. Создаем нового клиента
Доступные настройки не очень отличаются от пользовательских, но «Админы» сами могут распределять ресурсы.
Вывод
Несмотря на кажущуюся трудность, настройка SysCP незначительно отличается от установки стандартной связки серверов. Но если необходимо часто создавать виртуальные серверы и почтовые аккаунты с установкой различных ограничений и работой с DNS, решения вроде SysCP на порядок упростят вам жизнь.
Приложение
Модуль Webmin
Всем, кто пользуется Webmin, можно предложить модуль Virtualmin (http://www.webmin.com/index8.html), который позволяет, используя единый интерфейс, управлять множеством виртуальных узлов module Apache, BIND, баз MySQL и почтовыми ящиками Sendmail или Postfix. Для каждого виртуального сервера создается новый пользователь, который может в дальнейшем самостоятельно администрировать свой участок. Для настройки используются имеющиеся для этих серверов стандартные модули, в которые добавляются новые возможности, поэтому Virtualmin будет работать в большинстве конфигураций. Доступны две версии – GPL и коммерческая Pro (http://www.virtualmin.com). В последней дополнительно доступны HTML-редактор, настройка антиспамовой и вирусной проверки, поддержка реселлеров и некоторые другие возможности.
- Сайт проекта Domain Technologie Control – http://www.gplhost.com/software-dtc.html.
- Сайт проекта SysCP – https://www.syscp.org/wiki, http://www.syscp.de.
- Демоверсия SysCP – http://demo.syscp.org.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|