Панель управления хостингом SysCP::Журнал СА 8.2007
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
Журнал "Системный администратор"
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
20.12.2019г.
Просмотров: 5397
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 6594
Комментарии: 0
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 7877
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 8168
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 7165
Комментарии: 0
Django 2 в примерах

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Панель управления хостингом SysCP

Архив номеров / 2007 / Выпуск №8 (57) / Панель управления хостингом SysCP

Рубрика: Администрирование /  Продукты и решения

Сергей Яремчук

Панель управления хостингом 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. Настройки параметров доступа

Рисунок 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. Подсказка в настройке

Рисунок 2. Подсказка в настройке

Некоторые пути, предлагаемые скриптом, можно изменить зайдя в «Настройки сервера» (см. рис. 3).

Рисунок 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. Создаем нового клиента

Рисунок 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-редактор, настройка антиспамовой и вирусной проверки, поддержка реселлеров и некоторые другие возможности.

  1. Сайт проекта Domain Technologie Control – http://www.gplhost.com/software-dtc.html.
  2. Сайт проекта SysCP – https://www.syscp.org/wikihttp://www.syscp.de.
  3. Демоверсия SysCP – http://demo.syscp.org.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru