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

Версия для печатиОтправить другуPDF version

SysCP

Когда-то давно интересовался общей информацией по существующих панелях управления хостингом. Акцент, конечно-же, делался в сторону свободного ПО. Заинтересовало решение на базе SysCP. Ознакомиться с даной панелью управления рекомендую именно на оф. сайте, поскольку (как ни странно) информации в Интернете немного.

Что радует, так это то, что во время работы данная панель не создает системных пользователей, и сохраняются все стандартные пути FreeBSD, тоесть каталоги пользователей панели будут размещаться в /usr/local/customers/, а не в /home.

Сама система написана на PHP, а для хранения информации используется СУБД MySQL.

Итак, приступим к установке. Кстати, спешу обратить внимание, что поскольку SysCP максимально адаптирована под стандартный веб-сервер с ОС FreeBSD, то я установку буду производить на уже работающий веб-сервер, где крутится несколько сайтов. К конфликтам это не приведет, если обратить внимание на некоторые моменты.

Система, на которую будет производится установка:

# uname -a
FreeBSD web0.muff.kiev.ua 7.2-STABLE FreeBSD 7.2-STABLE #0: Sat Aug 8 04:58:58 EEST 2009 muff [at] web0 [dot] muff [dot] kiev [dot] ua:/usr/obj/usr/src/sys/Web0 amd64

Диски разбиты следующим образом (настроен RAID 1 на основе gmirror):

# df -h
Filesystem Size Used Avail Capacity Mounted on
/dev/mirror/gm0s1a 1.9G 232M 1.6G 13% /
devfs 1.0K 1.0K 0B 100% /dev
/dev/mirror/gm0s1d 3.9G 54K 3.6G 0% /home
/dev/mirror/gm0s1f 1.9G 52K 1.8G 0% /tmp
/dev/mirror/gm0s1g 383G 3.6G 349G 1% /usr
/dev/mirror/gm0s1e 58G 701M 53G 1% /var
devfs 1.0K 1.0K 0B 100% /var/named/dev
 

 Опять же, есть еще одна приятность. SysCP есть в портах.

# cd /usr/ports/
# make search name='syscp'

Port:   syscp-1.4.2.1
Path:   /usr/ports/sysutils/syscp
Info:   PHP-based ISP System Control Panel
Maint:  ek [at] purplehat [dot] org
B-deps: apache-2.2.11_7 expat-2.0.1 gettext-0.17_1 libiconv-1.13.1 mysql-client-5.0.84 pcre-7.9 perl-threaded-5.8.9_3 postgresql-client-8.2.13
R-deps: apache-2.2.11_7 dovecot-1.2.3 expat-2.0.1 freetype2-2.3.9_1 gd-2.0.35_1,1 gettext-0.17_1 jpeg-7 libiconv-1.13.1 libxml2-2.7.3 mysql-client-5.0.84 mysql-server-5.0.84 pcre-7.9 perl-threaded-5.8.9_3 php5-5.2.10 php5-bcmath-5.2.10 php5-filter-5.2.10 php5-gettext-5.2.10 php5-mysql-5.2.10 php5-pcre-5.2.10 php5-posix-5.2.10 php5-session-5.2.10 php5-simplexml-5.2.10 php5-spl-5.2.10 php5-xml-5.2.10 pkg-config-0.23_1 png-1.2.38 postfix-2.6.3,1 postgresql-client-8.2.13 proftpd-mysql-1.3.2 webalizer-2.21.2_1
WWW:    http://www.syscp.org/

Приступаем с установке...

# cd /usr/ports/sysutils/syscp
make install clean

По ходу установки подтягиваются необходимые для работы порты, если они еще не были установлены в системе. По завершению установки обновляем пути и добавляем необходимый алиас в httpd.conf:

Alias /syscp "/usr/local/www/syscp"
<Directory "/usr/local/www/syscp">
  AllowOverride None
  Order allow,deny
  Allow from all
</Directory>

Проверяем не допустили ли ошибок в конфигурации и перезапускаем apache.

# apachectl configtest
Syntax OK
# apachectl graceful

Открываем браузер и в строке адреса набиваем путь http://ip_adress_servera/syscp/

Если не допустили ошибок, то в браузере откроется окно с уведомлением, что мы впервые принимаемся за настройку SysCP :)

Выбор у нас небольшой, поэтому княпаем на линк "configure SysCP".

В следующем окне будет немного интересней... Разработчики поблагодарили нас за выбор SysCP, а также предупреждают, что если мы выберем существующую на сервере БД, то все данные в этой БД будут уничтожены. Ну и чтобы немного наградить нас, предлагают на выбор три языка инсталяции:

  • немецкий
  • французкий
  • английский.

Русского к сожалению нет :(  Но отчаиваться не стоит, надеюсь с English более-менее все дружат.

Займемся настройкой коннекта к БД Mysql.

При работе syscp работает от имени двох пользователей: первый с ограниченными правами (только для редактирования данных БД самой панели), а второй с неограниченными правами (в целях безопасности всегда создаю своего пользователя и даю ему полные права, а пользователя root удаляю). Кстати, БД и пользователя для работы панель создаст автоматически. Необходимо только создать пользователя с неограниченными правами.

Пользователем с ограниченными правами у нас будет пользователь syscp, БД называться тоже будет syscp. Пользователя с полным доступом назовем syscp-root.

# mysql -u muff -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 18717
Server version: 5.0.84-log FreeBSD port: mysql-server-5.0.84
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create user 'syscp-root'@'localhost' identified by 'password1';
Query OK, 0 rows affected (0.00 sec)
mysql> grant all privileges on *.* to 'syscp-root'@'localhost' with grant option;
Query OK, 0 rows affected (0.00 sec)
mysql> quit
Bye

 
Заполняем необходимыми данными поля формы. В следующей форме определяемся с именем пользователся и назначаем ему пароль (рекомендую, чтобы имя пользователся отличалось от предложенного "admin").

В следующем поле формы необходимо вбить имя сервера, его IP-адресс, какой именно веб-сервер установлено (предлагаются два варианта, это Lighttpd и Apache2. Также необходимо вписать имя пользователя и группу, от имени которых работает веб-сервер (обычно это пользователь www групы www).

Кажется все... Жмем "Next" и наблюдаем за результатом. Инсталяция прошла успешно, если не считать того, что дамп базы не был создан. Но и создаватьто было не с чего :)

Итак, инсталяция окончена, и внизу страницы появился линк с предложением "Нажми здесь, чтобы авторизоваться". Почему бы и не нажать?... ;) Теперь вспомните поле формы, где было предложено ввести логин пользователя и пароль? Вот сейчас они нам и пригодятся.

После авторизации рекомендую посетить пункт "Change language" и установить язык панели в русский.

Кстати... В целях безопасности, после установки рекомендую полностью удалить каталог install:

# rm -R /usr/local/www/syscp/install/

Далее начнем настраивать сервисы на работу с SysCP. SysCP в этом нам очень поможет. По порядку будем выбирать необходимые службы в разделе "Сервер", пункт "Настройки служб".

 
Apache

Для работы Apache в связке с SysCP (предполагается что Apache уже настроен инеобходимо выполнить следующие команды (будьте внимательны, возможно с новой версией они изменятся):

# mkdir -p /usr/local/etc/apache22/syscp/htpasswd/
# touch /usr/local/etc/apache22/syscp/vhosts.conf
# touch /usr/local/etc/apache22/syscp/diroptions.conf
# mkdir -p /usr/local/customers/webs/
mkdir -p /usr/local/customers/logs/
# echo "Include etc/apache22/syscp/vhosts.conf" >> /usr/local/etc/apache22/httpd.conf

Ну и перечитаем конфигурацию Apache для применения новых настроек:

# /usr/local/etc/rc.d/apache22 graceful
 
Bind9

Настройка сервера имен Bind9 на работу с SysCP вообще минимальна (за условия, что Bind9 уже сконфигурирован и работает, если нет - смотри сюда).

Необходимо выполнить всего три команды в shell:

# echo 'include "syscp_bind.conf";' >> /var/named/etc/namedb/named.conf
# touch /var/named/etc/namedb/syscp_bind.conf
# rndc reload

Dovecot

Здесь уже немного интерестней. Есть где развернуться, поскольку Dovecot - очень мощный POP3/IMAP-server. А файл конфигурации позволяет довольно гибко работать с почтовым сервером. Стоит отметить, что Dovecot разрабатывался в расчёте на безопасность, гибкость настройки и быстродействие.

Основные особенности:

  • Поддержка форматов почтовых ящиков mbox и Maildir, а так же собственные форматы dbox и Cydir

  • Высокое быстродействие благодаря индексации содержимого ящиков

  • Большое количество поддерживаемых механизмов хранения аутентификационой информации (включая LDAP) и самой аутентификации (поддерживается SSL).

  • Собственная реализация SASL. Postfix 2.3+ и Exim 4.64+ могут аутентифицироваться напрямую через Dovecot.

  • Полная поддержка IMAP ACL для гибкой настройки прав пользователей

  • Поддержка общих ящиков и папок (shared mailboxes and folders)

  • Расширяемость при помощи плагинов

  • Собственный MDA с поддержкой Sieve

  • Строгое следование стандартам - Dovecot один из немногих кто проходит тест на соответствие всем стандартам IMAP [3]

  • Возможность модификации индексов с нескольких компьютеров - что позволяет ему работать с NFS и кластерными файловыми системами

  • Поддерживает различные виды квот

  • Поддержка различных ОС: Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X

  • Простота настройки.
     

Приступаем к настройке. Во время установки SysCP, если Dovecot не был установлен в системе раньше, было доступно окно конфигурации. Надеюсь вы отметили работу с MySQL ;). Просмотреть, с какими опциями у вас собран Dovecot можно в файле /var/db/ports/dovecot/options.

Для начала создадим для Dovecot сертификат безопасности:

# mkdir -p /etc/ssl/dovecot
# cd /etc/ssl/dovecot
# openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 3650
Generating a 1024 bit RSA private key
.....++++++
.....................++++++
writing new private key to 'key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UA
State or Province Name (full name) [Some-State]:Kiev Region
Locality Name (eg, city) []:Kiev
Organization Name (eg, company) [Internet Widgits Pty Ltd]:muff.kiev.ua Ltd.
Organizational Unit Name (eg, section) []:IT department
Common Name (eg, YOUR name) []:muff.kiev.ua
Email Address []:admin'at'muff.kiev.ua
# chmod 0600 *.pem

Приступаем к редактированию основного конфигурационного файла Dovecot. Очистим послеустановочный вариант и добавляем необходимые опции. Предложенный SysCP вариант конфига был немного "подрихтован", было добавлено несколько строк. Выделено то, что изменялось, или на что необходимо обратить внимание.

# cat /dev/null > /usr/local/etc/dovecot.conf
# cat /usr/local/etc/dovecot.conf
protocols = imap imaps pop3 pop3s
disable_plaintext_auth = no
log_path = /var/log/dovecot/dovecot.log
log_timestamp = "%b %d %H:%M:%S "
syslog_facility = local0

ssl_disable = no
ssl_cert_file = /etc/ssl/dovecot/cert.pem
ssl_key_file = /etc/ssl/dovecot/key.pem
login_process_size = 64
login_process_per_connection = yes
login_processes_count = 3
login_max_processes_count = 128
login_max_connections = 256
login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c
login_log_format = %$: %s

login_greeting = Dovecot Ready.
mail_uid = 125
mail_gid = 125
mail_privileged_group = mail
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_uid = 125
first_valid_gid = 125
maildir_copy_with_hardlinks = yes
protocol imap {
  mail_plugins = quota imap_quota
  login_greeting_capability = yes
  imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
  mail_plugins = quota
  pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol lda {
  postmaster_address = postmaster_e-mail_here
  sendmail_path = /usr/sbin/sendmail
}
auth_username_format = %Lu
auth default {
  mechanisms = plain login
  passdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  userdb sql {
    args = /usr/local/etc/dovecot-sql.conf
  }
  user = root
  socket listen {
    client {
      path = /var/spool/postfix/private/auth
      mode = 0660
      user = postfix
      group = postfix
    }
  }
}
dict {
}
plugin {
}

Поскольку добавились некоторые опции для логирования, внесем изменения в syslogd для поддержки  логов Dovecot.

Создадим каталог, где будут хранится логи:

# mkdir /var/log/dovecot

Добавим в syslogd перехват сообщений от Dovecot и настроим ротацию логов:

# echo 'local0.*                                        /var/log/dovecot/dovecot.log' >> /etc/syslog.conf
# echo '/var/log/dovecot/dovecot.log            644  10    *    $W6D0 JC' >> /etc/newsyslog.conf
# sh /etc/rc.d/syslogd restart

Далее создаем файл с конфигурацией обращений к MySQL-базе, на который ссылается основной конфиг и приводим его к следующему виду:

# touch /usr/local/etc/dovecot-sql.conf
# cat /usr/local/etc/dovecot-sql.conf
driver = mysql
connect = host=localhost dbname=syscp user=syscp password=MYSQL_PASSWORD
default_pass_scheme = CRYPT
password_query = SELECT username AS user, password_enc AS password \
 FROM mail_users WHERE username = '%u'
user_query = SELECT CONCAT(homedir,maildir) AS home, concat('maildir:',homedir,maildir) \
 AS mail, uid, gid FROM mail_users where username = '%u'
 

Кстати, если запамятовали, какой пароль SysCP для коннекта с MySQL-базой, то "подсмотреть" его можно в файле /usr/local/www/syscp/lib/userdata.inc.php.

Добавим загрузку Dovecot при запуске системы и стартуем Dovecot:

# echo '# Dovecot' >> /etc/rc.conf
# echo 'dovecot_enable="YES"' >> /etc/rc.conf
# sh /usr/local/etc/rc.d/dovecot start

В моем случае Dovecot ругнулся на неизвестные опции в 6 строке и 27, а именно:

- ssl_disable
- login_greeting_capability

После общения с google понял, что для версии Dovecot 1.2.х эта опция заменена на "ssl = no". Вносим необходимые изменения в конфигурационный файл.

Опция login_greeting_capability разрешает посылать возможности IMAP в приветственном сообщении. Это избавляет клиентов от необходимости запрашивать это в команде CAPABILITY, таким образом экономится один запрос. Но в нашем случае данная опция неизвестна - ф топку. Обойдемся без нее. То есть - комментируем!

 

Postfix

Приступим к настройке SMTP-сервера на базе Postfix. Конечно, Exim мне более милее, но в стандартной поставке SysCP использует именно Postfix. Возможно позже статья будет переписана с использованием именно MTA Exim.

Итак, начнем с редактирования /usr/local/etc/postfix/main.cf. Необходимо придать ему следующий вид:

# cat /usr/local/etc/postfix/main.cf
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions =
  permit_mynetworks,
  permit_sasl_authenticated,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname
smtpd_sasl_auth_enable = yes
smtpd_sasl_authenticated_header = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth   
smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_cert_file = /etc/ssl/postfix/smtpd.pem
smtpd_tls_CAfile = /etc/ssl/postfix/smtpd.pem
smtpd_tls_loglevel = 0
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom
virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_alias_maps.cf
virtual_gid_maps = static:125
virtual_mailbox_base = /usr/local/customers/mail/
virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf
virtual_mailbox_limit = 51200000
virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf
virtual_minimum_uid = 125
virtual_transport = virtual
virtual_uid_maps = static:125
virtual_create_maildirsize = yes
virtual_mailbox_extended = yes
proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps
  $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains
  $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps
  $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks
virtual_mailbox_limit_override = yes
virtual_maildir_limit_message = Sorry, this user has overdrawn their diskspace quota. Please try again later.
virtual_overquota_bounce = yes
alias_maps = $alias_database
queue_directory = /var/spool/postfix
command_directory = /usr/local/sbin
daemon_directory = /usr/local/libexec/postfix
data_directory = /var/db/postfix
mail_owner = postfix
myhostname = muff.kiev.ua
mydomain = muff.kiev.ua
myorigin = $mydomain
unknown_local_recipient_reject_code = 550
mynetworks_style = host
debug_peer_level = 2
debugger_command =
  PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
  ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/local/sbin/sendmail
newaliases_path = /usr/local/bin/newaliases
mailq_path = /usr/local/bin/mailq
setgid_group = maildrop
html_directory = no
manpage_directory = /usr/local/man
sample_directory = /usr/local/etc/postfix
readme_directory = no

 Далее на очереди - /usr/local/etc/postfix/master.cf. Раскомментируем, или добавим следующие строки:

smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject

Создаем mysql-virtual_alias_maps.cf и приводим к следующему виду:

# touch /usr/local/etc/postfix/mysql-virtual_alias_maps.cf
# cat /usr/local/etc/postfix/mysql-virtual_alias_maps.cf

user = syscp
password = MYSQL_PASSWORD
dbname = syscp
table = mail_virtual
select_field = destination
where_field = email
additional_conditions = and destination <> '' and destination <> ' '
hosts = localhost

Потом создаем файл /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf и наполняем его следующим содержимым:

# touch /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf
# cat /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf

user = syscp
password = MYSQL_PASSWORD
dbname = syscp
table = panel_domains
select_field = domain
where_field = domain
additional_conditions = and isemaildomain = '1'
hosts = localhost

Еще один аналогичный файл:

# touch /usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf
# cat /usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf

user = syscp
password = MYSQL_PASSWORD
dbname = syscp
table = mail_users
select_field = maildir
where_field = email
hosts = localhost

 Создаем каталог для приходящей почты:

# mkdir -p /usr/local/customers/mail/
# chown -R postfix:postfix /usr/local/customers/mail/

Инициализируем базу данных псевдонимов:

# /usr/local/bin/newaliases

Займемся сертификатом безопасности...

# mkdir -p /etc/ssl/postfix
# cd /etc/ssl/postfix
# openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650

Generating a 1024 bit RSA private key
..........++++++
..................................++++++
writing new private key to 'smtpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UA
State or Province Name (full name) [Some-State]:Kiev Region
Locality Name (eg, city) []:Kiev
Organization Name (eg, company) [Internet Widgits Pty Ltd]:muff.kiev.ua Ltd.
Organizational Unit Name (eg, section) []:IT department
Common Name (eg, YOUR name) []:muff.kiev.ua
Email Address []:admin'at'muff.kiev.ua
# chmod 750 /etc/ssl/postfix
# chmod 640 /etc/ssl/postfix/smtpd.pem
# chgrp -R postfix /etc/ssl/postfix

 Также позаботимся о том, чтобы никто не подсмотрел параметры соединения с MySQL-базой:

# chmod 640 /usr/local/etc/postfix/mysql-virtual_*
# chgrp postfix /usr/local/etc/postfix/mysql-virtual_*

Отменим старт Sendmail и добавим в /etc/rc.conf загрузку Postfix при старте системы:

# echo '# SMTP' >> /etc/rc.conf
# echo 'sendmail_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_submit_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_outbound_enable="NO"' >> /etc/rc.conf
# echo 'sendmail_msp_queue_enable="NO" >> /etc/rc.conf
# echo 'postfix_enable="YES"' >> /etc/rc.conf

 Отключим специфические для Sendmail опции:

# touch /etc/periodic.conf
# cat /etc/periodic.conf

daily_clean_hoststat_enable="NO"
daily_status_mail_rejects_enable="NO"
daily_status_include_submit_mailq="NO"
daily_submit_queuerun="NO"

Останавливаем Sendmail и запускаем Postfix:

# killall -9 sendmail
# sh /usr/local/etc/rc.d/postfix start
postfix/postfix-script: starting the Postfix mail system

 ProFTPd

Следующим сервисом будет ФТП (демон ProFTPd).

Займемся созданием сертификата для даного демона:

# mkdir -p /etc/ssl/proftpd
# cd /etc/ssl/proftpd
# openssl req -new -x509 -days 3650 -nodes -out cert.pem -keyout key.pem

Generating a 1024 bit RSA private key
.............................++++++
.............++++++
writing new private key to 'key.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:UA
State or Province Name (full name) [Some-State]:Kiev Region
Locality Name (eg, city) []:Kiev
Organization Name (eg, company) [Internet Widgits Pty Ltd]:muff.kiev.ua Ltd.
Organizational Unit Name (eg, section) []:IT department
Common Name (eg, YOUR name) []:muff.kiev.ua
Email Address []:admin'at'muff.kiev.ua
# chmod 640 *.pem

Приступаем к редактированию конфигурационного файла ProFTPd - /usr/local/etc/proftpd.conf. Необходимо привести его к следующему виду:

# cat /usr/local/etc/proftpd.conf

ServerName "muff.kiev.ua FTP Server"
ServerType standalone
DefaultServer on
Port 21
UseIPv6 off
Umask 022
SyslogLevel emerg
SystemLog /var/log/xferlog
LogFormat auth "%v [%P] %h %t \"%r\" %s"
ExtendedLog /var/log/xferlog AUTH auth
DeferWelcome off
MultilineRFC2228 on
ShowSymlinks on
TimeoutNoTransfer 600
TimeoutStalled 600
TimeoutIdle 1200
DisplayLogin welcome.msg
DisplayChdir .message
ListOptions "-l"
DenyFilter \*.*/
MaxInstances 30
CommandBufferSize 512
User nobody
Group nogroup
AllowOverwrite on
DefaultRoot ~
RequireValidShell off
AuthOrder mod_sql.c
SQLAuthTypes Crypt
SQLAuthenticate users groups
SQLConnectInfo syscp@localhost 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
<IfModule mod_delay.c>
DelayEngine off
</IfModule>
<IfModule mod_tls.c>
TLSEngine on
TLSLog /var/log/xferlog
TLSProtocol SSLv23
TLSRequired off
TLSRSACertificateFile /etc/ssl/proftpd/cert.pem
TLSRSACertificateKeyFile /etc/ssl/proftpd/key.pem
TLSVerifyClient off
TLSRenegotiate required off
</IfModule>

Добавим загрузку ProFTPd в /etc/rc.conf:

# echo '# ProFTPd' >> /etc/rc.conf
# echo 'proftpd_enable="YES"' >> /etc/rc.conf

Ну и, напоследок, запускаем саму службу:

# sh /usr/local/etc/rc.d/proftpd start
Starting proftpd.
 

 Cron

Настроим планировщик заданий cron на выполнение следующих процедур:

# cat /etc/crontab | grep syscp
*/5     *       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_tasks.php
0       0       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_traffic.php
30      0       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_ticketarchive.php
0       1       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_used_tickets_reset.php
*/5     *       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_autoresponder.php
*/5     *       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_apsinstaller.php
*/30    *       *       *       *       root    /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_apsupdater.php
 

Не забываем перезапустить cron после внесения изменений:

# killall -HUP cron

 Для подержки awstats (поддержку можно будет настроить в панели) необходимо установить порт. Перейдем в /usr/ports/www/awstats и начнем установку:

# cd /usr/ports/www/awstats
# make install clean

 По завершению установки необходимо добавить следующие строки в /usr/local/etc.apache22/httpd.conf:

Alias /awstatsclasses "/usr/local/www/awstats/classes/"
Alias /awstatscss "/usr/local/www/awstats/css/"
Alias /awstatsicons "/usr/local/www/awstats/icons/"
ScriptAlias /awstats/ "/usr/local/www/awstats/cgi-bin/"

<Directory "/usr/local/www/awstats/">
    Options None
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

Создаем необходимые каталоги и файлы:

# mkdir /usr/local/etc/awstats/
# cp /usr/local/www/awstats/cgi-bin/awstats.model.conf /usr/local/etc/awstats

 Продолжение следует...

Ваша оценка: Нет Средняя: 3.7 (6 голосов)

Здравствуйте,

Здравствуйте, автор!

Попытался установить шаг в шаг.

Вопрос всал на FTP. Не хочет авторизовываться. 530 ошибка. Может в вашем коде ошибка? Я его копировал.

Спасибо за ответ!

По поводу FTP

По ходу данный конфиг генерирует сама панель (поэтому его и разместил). Как всегда, приходится обрабатывать "напильником". При "разборе полетов" обнаружил, что не вполне корректно обрабатываются sql-запросы. Немножко потанцевал с бубном и добился успешного результата. При следующих параметрах все работает (навожу только строки, которые относятся к SQL-запросам).

 

SQLConnectInfo syscp@localhost sql_login_here sql_passwd_here
SQLAuthTypes Crypt
SQLUserInfo ftp_users username password uid gid homedir shell
SQLGroupInfo ftp_groups groupname gid members
SQLAuthenticate users groups
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
 

 

P.S. Извините за столь запоздалый ответ, как-то закрутился и не заглядывал в раздел коментариев. Надеюсь вопрос еще актуален.

 

 Не подскаже, пожалуйста, а

 Не подскаже, пожалуйста, а какие права на /usr/local/etc/apache22/syscp/vhosts.conf надо выставить, а то syscp не записывает в него.

Насколько помнится - права не

Насколько помнится - права не менял...

# ls -la /usr/local/etc/apache22/syscp/vhosts.conf
-rw-r--r--  1 root  wheel  72014  6 окт 21:30 /usr/local/etc/apache22/syscp/vhosts.conf

 

 C доступом разобрался.

 C доступом разобрался. Необходимо было поставить XML обработчик php5-xml

Ясно. А как так? Если

Ясно.

А как так? Если устанавливать из портов зависимости должны были тоже установиться. Их список можно увидеть в начале статьи, где идет описание порта.

 Прошу прощения, что давно не

 Прошу прощения, что давно не отвечал. был в командировке.  XML не подтянулся, хотя странно. Все это хозяйство устанавливалось на свжеустановленную Фрю 8.2 x32

Добрый день! Подскажить есть

Добрый день! Подскажить есть в SYSCP менеджер файлов?

Нету. Предлагают использовать

Нету.

Предлагают использовать Web-FTP. Пример настройки web-ftp - здесь.

Спасибо)

Спасибо)

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".

Вставай, Україно!

Литература