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

  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:8d75ca3f37abe5c75451c626fbeb0b08' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><img alt=\"SysCP\" src=\"http://muff.kiev.ua/files/syscp.gif\" style=\"height:70px; width:200px\" /></p>\n<p class=\"rtejustify\">Когда-то давно интересовался общей информацией по существующих панелях управления хостингом. Акцент, конечно-же, делался в сторону свободного ПО. Заинтересовало решение на базе <a href=\"http://www.syscp.org\">SysCP</a>. Ознакомиться с даной панелью управления рекомендую именно на оф. сайте, поскольку (как ни странно) информации в Интернете немного.</p>\n<p class=\"rtejustify\">Что радует,&nbsp;так это то, что во время работы данная панель не создает системных пользователей, и сохраняются все стандартные пути FreeBSD, тоесть каталоги пользователей&nbsp;панели&nbsp;будут размещаться в /usr/local/customers/, а не в /home.</p>\n<p class=\"rtejustify\">Сама система написана на PHP, а&nbsp;для хранения информации используется СУБД MySQL.</p>\n<p class=\"rtejustify\">Итак,&nbsp;приступим к установке. Кстати, спешу обратить внимание, что поскольку SysCP максимально адаптирована под стандартный веб-сервер с ОС FreeBSD, то я установку буду производить на уже работающий веб-сервер,&nbsp;где крутится несколько сайтов. К&nbsp;конфликтам это не приведет, если обратить внимание на некоторые моменты.</p>\n<p class=\"rtejustify\">Система,&nbsp;на которую будет производится установка:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>uname -a</strong><br />\n FreeBSD web0.muff.kiev.ua 7.2-STABLE FreeBSD 7.2-STABLE #0: Sat Aug 8 04:58:58 EEST 2009 <span class=\"spamspan\"><span class=\"u\">muff</span> [at] <span class=\"d\">web0 [dot] muff [dot] kiev [dot] ua</span></span>:/usr/obj/usr/src/sys/Web0 amd64</td>\n</tr>\n</tbody>\n</table>\n<p>Диски разбиты следующим образом (настроен RAID 1 на основе gmirror):</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>df -h</strong><br />\n Filesystem Size Used Avail Capacity Mounted on<br />\n /dev/mirror/gm0s1a 1.9G 232M 1.6G 13% /<br />\n devfs 1.0K 1.0K 0B 100% /dev<br />\n /dev/mirror/gm0s1d 3.9G 54K 3.6G 0% /home<br />\n /dev/mirror/gm0s1f 1.9G 52K 1.8G 0% /tmp<br />\n /dev/mirror/gm0s1g 383G 3.6G 349G 1% /usr<br />\n /dev/mirror/gm0s1e 58G 701M 53G 1% /var<br />\n devfs 1.0K 1.0K 0B 100% /var/named/dev<br />\n &nbsp;</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Опять же,&nbsp;есть еще одна приятность. SysCP есть в портах.</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><strong># cd /usr/ports/<br />\n # make search name=&#39;syscp&#39;</strong><br />\n Port:&nbsp;&nbsp; syscp-1.4.2.1<br />\n Path:&nbsp;&nbsp; /usr/ports/sysutils/syscp<br />\n Info:&nbsp;&nbsp; PHP-based ISP System Control Panel<br />\n Maint:&nbsp; <span class=\"spamspan\"><span class=\"u\">ek</span> [at] <span class=\"d\">purplehat [dot] org</span></span><br />\n 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<br />\n 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<br />\n WWW:&nbsp;&nbsp;&nbsp; <a href=\"http://www.syscp.org/\">http://www.syscp.org/</a></td>\n</tr>\n</tbody>\n</table>\n<p>Приступаем с установке...</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p>#<strong> cd /usr/ports/sysutils/syscp</strong><br />\n #&nbsp;<strong>make install clean</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">По ходу установки подтягиваются необходимые для работы порты, если они еще не были установлены в системе. По завершению установки обновляем пути и добавляем необходимый алиас в httpd.conf:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>Alias /syscp &quot;/usr/local/www/syscp&quot;<br />\n &lt;Directory &quot;/usr/local/www/syscp&quot;&gt;<br />\n &nbsp; AllowOverride None<br />\n &nbsp; Order allow,deny<br />\n &nbsp; Allow from all<br />\n &lt;/Directory&gt;</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Проверяем не допустили ли ошибок в конфигурации и перезапускаем apache.</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># apachectl configtest</strong><br />\n Syntax OK<br />\n <strong># apachectl graceful</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Открываем браузер и в строке адреса набиваем путь <a href=\"http://ip_adress_servera/syscp/\" title=\"http://ip_adress_servera/syscp/\">http://ip_adress_servera/syscp/</a></p>\n<p class=\"rtejustify\">Если не допустили ошибок,&nbsp;то в браузере откроется окно с уведомлением,&nbsp;что мы впервые принимаемся за настройку SysCP :)</p>\n<p class=\"rtecenter\"><img alt=\"\" src=\"http://muff.kiev.ua/files/syscp1.JPG\" style=\"height:70px; width:485px\" /></p>\n<p class=\"rtejustify\">Выбор у нас небольшой, поэтому княпаем на линк &quot;configure SysCP&quot;.</p>\n<p class=\"rtejustify\">В следующем окне будет немного интересней... Разработчики поблагодарили нас за выбор SysCP, а также предупреждают, что если мы выберем существующую на сервере БД, то все данные в этой БД будут уничтожены. Ну и чтобы немного наградить нас, предлагают на выбор три языка инсталяции:</p>\n<ul>\n<li>немецкий</li>\n<li>французкий</li>\n<li>английский.</li>\n</ul>\n<p class=\"rtejustify\">Русского к сожалению нет :(&nbsp; Но отчаиваться не стоит, надеюсь с English более-менее все дружат.</p>\n<p class=\"rtejustify\">Займемся настройкой коннекта к БД Mysql.</p>\n<p class=\"rtejustify\">При работе syscp работает от имени двох пользователей: первый с ограниченными правами (только для редактирования данных БД самой панели), а второй с неограниченными правами (в целях безопасности всегда создаю&nbsp;своего пользователя и даю ему полные права, а&nbsp;пользователя root удаляю). Кстати,&nbsp;БД и пользователя для работы&nbsp;панель создаст автоматически. Необходимо только создать пользователя с неограниченными правами.</p>\n<p class=\"rtejustify\">Пользователем с ограниченными правами у нас будет пользователь syscp, БД называться тоже будет syscp. Пользователя с полным доступом назовем syscp-root.</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><strong># mysql -u muff -p</strong><br />\n Enter password:<br />\n Welcome to the MySQL monitor. Commands end with ; or \\g.<br />\n Your MySQL connection id is 18717<br />\n Server version: 5.0.84-log FreeBSD port: mysql-server-5.0.84<br />\n Type &#39;help;&#39; or &#39;\\h&#39; for help. Type &#39;\\c&#39; to clear the current input statement.\n<p><strong>mysql&gt; create user &#39;syscp-root&#39;@&#39;localhost&#39; identified by &#39;password1&#39;;</strong><br />\n Query OK, 0 rows affected (0.00 sec)<br />\n <strong>mysql&gt; grant all privileges on *.* to &#39;syscp-root&#39;@&#39;localhost&#39; with grant option;</strong><br />\n Query OK, 0 rows affected (0.00 sec)<br />\n <strong>mysql&gt; quit</strong><br />\n Bye</p>\n</td>\n</tr>\n</tbody>\n</table>\n<div class=\"rtejustify\">&nbsp;</div>\n<div class=\"rtejustify\">Заполняем необходимыми данными поля формы. В следующей форме определяемся с именем пользователся и назначаем ему пароль (рекомендую, чтобы&nbsp;имя пользователся&nbsp;отличалось от предложенного&nbsp;&quot;admin&quot;).</div>\n<p class=\"rtejustify\">В следующем поле формы необходимо вбить имя сервера, его IP-адресс, какой именно веб-сервер установлено (предлагаются два варианта, это Lighttpd и Apache2. Также необходимо вписать имя пользователя и группу,&nbsp;от имени которых работает веб-сервер (обычно это пользователь www групы www).</p>\n<p class=\"rtejustify\">Кажется все... Жмем &quot;Next&quot; и наблюдаем за результатом. Инсталяция прошла успешно, если не считать того, что дамп базы не был создан. Но и создаватьто было не с чего :)</p>\n<p class=\"rtejustify\">Итак, инсталяция окончена, и внизу страницы появился линк с предложением &quot;Нажми здесь,&nbsp;чтобы авторизоваться&quot;. Почему бы и не нажать?... ;) Теперь вспомните поле формы, где было предложено ввести логин пользователя и пароль? Вот сейчас они нам и пригодятся.</p>\n<p class=\"rtejustify\">После авторизации рекомендую посетить пункт &quot;Change language&quot; и установить язык панели в русский.</p>\n<p class=\"rtejustify\">Кстати... В целях безопасности, после установки рекомендую полностью удалить каталог install:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>rm -R /usr/local/www/syscp/install/</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Далее начнем настраивать сервисы на работу с SysCP. SysCP в этом нам очень поможет. По порядку будем выбирать необходимые&nbsp;службы&nbsp;в разделе &quot;Сервер&quot;, пункт &quot;Настройки служб&quot;.</p>\n<div>&nbsp;</div>\n<div><strong>Apache</strong></div>\n<p class=\"rtejustify\">Для работы Apache в связке с SysCP (предполагается что Apache уже настроен инеобходимо выполнить следующие команды (будьте внимательны, возможно с новой версией они изменятся):</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>mkdir -p /usr/local/etc/apache22/syscp/htpasswd/</strong><br />\n # <strong>touch /usr/local/etc/apache22/syscp/vhosts.conf</strong><br />\n # <strong>touch /usr/local/etc/apache22/syscp/diroptions.conf</strong><br />\n #<strong> mkdir -p /usr/local/customers/webs/</strong><br />\n #&nbsp;<strong>mkdir -p /usr/local/customers/logs/</strong><br />\n # <strong>echo &quot;Include etc/apache22/syscp/vhosts.conf&quot; &gt;&gt; /usr/local/etc/apache22/httpd.conf</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Ну и перечитаем конфигурацию Apache для применения новых настроек:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>/usr/local/etc/rc.d/apache22 graceful</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<div>&nbsp;</div>\n<div><strong>Bind9</strong></div>\n<p class=\"rtejustify\">Настройка сервера имен Bind9 на работу с SysCP&nbsp;вообще минимальна (за условия, что Bind9 уже сконфигурирован и работает, если нет - смотри <a href=\"http://muff.kiev.ua/node/33\">сюда</a>).</p>\n<p class=\"rtejustify\">Необходимо выполнить всего&nbsp;три команды в shell:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>echo &#39;include &quot;syscp_bind.conf&quot;;&#39; &gt;&gt; /var/named/etc/namedb/named.conf</strong><br />\n #<strong> touch /var/named/etc/namedb/syscp_bind.conf</strong></div>\n<div># <strong>rndc reload</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p><strong>Dovecot</strong></p>\n<p class=\"rtejustify\">Здесь уже немного интерестней. Есть где развернуться, поскольку&nbsp;Dovecot - очень мощный POP3/IMAP-server. А файл конфигурации&nbsp;позволяет довольно гибко работать с почтовым сервером. Стоит отметить, что Dovecot разрабатывался в расчёте на безопасность, гибкость настройки и быстродействие.</p>\n<p class=\"rtejustify\">Основные особенности:</p>\n<ul>\n<li>\n<p class=\"rtejustify\">Поддержка форматов почтовых ящиков mbox и Maildir, а так же собственные форматы dbox и Cydir</p>\n</li>\n<li>\n<p class=\"rtejustify\">Высокое быстродействие благодаря индексации содержимого ящиков</p>\n</li>\n<li>\n<p class=\"rtejustify\">Большое количество поддерживаемых механизмов хранения аутентификационой информации (включая LDAP) и самой аутентификации (поддерживается SSL).</p>\n</li>\n<li>\n<p class=\"rtejustify\">Собственная реализация SASL. Postfix 2.3+ и Exim 4.64+ могут аутентифицироваться напрямую через Dovecot.</p>\n</li>\n<li>\n<p class=\"rtejustify\">Полная поддержка IMAP ACL для гибкой настройки прав пользователей</p>\n</li>\n<li>\n<p class=\"rtejustify\">Поддержка общих ящиков и папок (shared mailboxes and folders)</p>\n</li>\n<li>\n<p class=\"rtejustify\">Расширяемость при помощи плагинов</p>\n</li>\n<li>\n<p class=\"rtejustify\">Собственный MDA с поддержкой Sieve</p>\n</li>\n<li>\n<p class=\"rtejustify\">Строгое следование стандартам - Dovecot один из немногих кто проходит тест на соответствие всем стандартам IMAP [3]</p>\n</li>\n<li>\n<p class=\"rtejustify\">Возможность модификации индексов с нескольких компьютеров - что позволяет ему работать с NFS и кластерными файловыми системами</p>\n</li>\n<li>\n<p class=\"rtejustify\">Поддерживает различные виды квот</p>\n</li>\n<li>\n<p class=\"rtejustify\">Поддержка различных ОС: Linux, Solaris, FreeBSD, OpenBSD, NetBSD и Mac OS X</p>\n</li>\n<li>\n<p class=\"rtejustify\">Простота настройки.<br />\n &nbsp;</p>\n</li>\n</ul>\n<p class=\"rtejustify\">Приступаем к настройке. Во время установки SysCP, если Dovecot не был установлен в системе раньше, было доступно окно конфигурации. Надеюсь вы отметили работу с MySQL ;). Просмотреть, с какими опциями у вас собран Dovecot можно в файле /var/db/ports/dovecot/options.</p>\n<p class=\"rtejustify\">Для начала создадим для Dovecot сертификат безопасности:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div><strong># mkdir -p /etc/ssl/dovecot</strong></div>\n<div><strong># cd /etc/ssl/dovecot</strong></div>\n<div><strong># openssl req -new -x509 -nodes -out cert.pem -keyout key.pem -days 3650</strong></div>\n<div>Generating a 1024 bit RSA private key<br />\n .....++++++<br />\n .....................++++++<br />\n writing new private key to &#39;key.pem&#39;<br />\n -----<br />\n You are about to be asked to enter information that will be incorporated<br />\n into your certificate request.<br />\n What you are about to enter is what is called a Distinguished Name or a DN.<br />\n There are quite a few fields but you can leave some blank<br />\n For some fields there will be a default value,<br />\n If you enter &#39;.&#39;, the field will be left blank.<br />\n -----<br />\n Country Name (2 letter code) [AU]:<strong>UA</strong><br />\n State or Province Name (full name) [Some-State]:<strong>Kiev Region</strong><br />\n Locality Name (eg, city) []:<strong>Kiev</strong><br />\n Organization Name (eg, company) [Internet Widgits Pty Ltd]:<strong>muff.kiev.ua Ltd.</strong><br />\n Organizational Unit Name (eg, section) []:<strong>IT department</strong><br />\n Common Name (eg, YOUR name) []:<strong>muff.kiev.ua</strong><br />\n Email Address []:<strong>admin&#39;at&#39;muff.kiev.ua</strong><br />\n <strong># chmod 0600 *.pem</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Приступаем к редактированию основного конфигурационного файла Dovecot. Очистим послеустановочный вариант и&nbsp;добавляем необходимые опции.&nbsp;Предложенный SysCP вариант конфига был немного &quot;подрихтован&quot;, было добавлено несколько строк. Выделено то, что изменялось, или&nbsp;на что необходимо обратить внимание.</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div><strong># cat /dev/null &gt; /usr/local/etc/dovecot.conf</strong></div>\n<div><strong># cat /usr/local/etc/dovecot.conf</strong></div>\n<div>protocols = imap imaps pop3 pop3s<br />\n disable_plaintext_auth = no</div>\n<div><strong>log_path = /var/log/dovecot/dovecot.log<br />\n log_timestamp = &quot;%b %d %H:%M:%S &quot;<br />\n syslog_facility = local0</strong><br />\n <span style=\"color:#ff0000\"><strong>ssl_disable = no</strong></span><br />\n ssl_cert_file = /etc/ssl/dovecot/cert.pem<br />\n ssl_key_file = /etc/ssl/dovecot/key.pem<br />\n <strong>login_process_size = 64<br />\n login_process_per_connection = yes<br />\n login_processes_count = 3<br />\n login_max_processes_count = 128<br />\n login_max_connections = 256<br />\n login_log_format_elements = user=&lt;%u&gt; method=%m rip=%r lip=%l %c<br />\n login_log_format = %$: %s</strong><br />\n login_greeting =&nbsp;<strong>Dovecot&nbsp;Ready.</strong><br />\n mail_uid = 125<br />\n mail_gid = 125<br />\n mail_privileged_group = mail<br />\n dotlock_use_excl = yes<br />\n verbose_proctitle = yes<br />\n first_valid_uid = 125<br />\n first_valid_gid = 125<br />\n maildir_copy_with_hardlinks = yes<br />\n protocol imap {<br />\n &nbsp; mail_plugins = quota imap_quota<br />\n &nbsp; <span style=\"color:#ff0000\"><strong>login_greeting_capability = yes</strong></span><br />\n &nbsp; imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep<br />\n }<br />\n protocol pop3 {<br />\n &nbsp; pop3_uidl_format = %08Xu%08Xv<br />\n &nbsp; mail_plugins = quota<br />\n &nbsp; pop3_client_workarounds = outlook-no-nuls oe-ns-eoh<br />\n }<br />\n protocol lda {<br />\n &nbsp; postmaster_address = postmaster_e-mail_here<br />\n &nbsp; sendmail_path = /usr/sbin/sendmail<br />\n }<br />\n auth_username_format = %Lu<br />\n auth default {<br />\n &nbsp; mechanisms = plain login<br />\n &nbsp; passdb sql {<br />\n &nbsp;&nbsp;&nbsp; args = /usr/local/etc/dovecot-sql.conf<br />\n &nbsp; }<br />\n &nbsp; userdb sql {<br />\n &nbsp;&nbsp;&nbsp; args = /usr/local/etc/dovecot-sql.conf<br />\n &nbsp; }<br />\n &nbsp; user = root<br />\n &nbsp; socket listen {<br />\n &nbsp;&nbsp;&nbsp; client {<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; path = /var/spool/postfix/private/auth<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; mode = 0660<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; user = postfix<br />\n &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; group = postfix<br />\n &nbsp;&nbsp;&nbsp; }<br />\n &nbsp; }<br />\n }<br />\n dict {<br />\n }<br />\n plugin {<br />\n }</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Поскольку добавились&nbsp;некоторые опции для логирования, внесем изменения в syslogd для поддержки&nbsp; логов Dovecot.</p>\n<p>Создадим каталог, где будут хранится логи:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>mkdir /var/log/dovecot</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Добавим в syslogd перехват сообщений от Dovecot и настроим ротацию логов:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>echo &#39;local0.*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /var/log/dovecot/dovecot.log&#39; &gt;&gt; /etc/syslog.conf</strong></div>\n<div># <strong>echo &#39;/var/log/dovecot/dovecot.log&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 644&nbsp; 10&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp; $W6D0 JC&#39; &gt;&gt; /etc/newsyslog.conf</strong></div>\n<div># <strong>sh /etc/rc.d/syslogd restart</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Далее создаем файл с конфигурацией обращений к MySQL-базе,&nbsp;на который ссылается основной конфиг и приводим его к следующему виду:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div><strong># touch /usr/local/etc/dovecot-sql.conf</strong></div>\n<div><strong># cat /usr/local/etc/dovecot-sql.conf</strong></div>\n<div>driver = mysql<br />\n connect = host=localhost dbname=syscp user=syscp password=<strong>MYSQL_PASSWORD</strong><br />\n default_pass_scheme = CRYPT<br />\n password_query = SELECT username AS user, password_enc AS password \\<br />\n &nbsp;FROM mail_users WHERE username = &#39;%u&#39;<br />\n user_query = SELECT CONCAT(homedir,maildir) AS home, concat(&#39;maildir:&#39;,homedir,maildir) \\<br />\n &nbsp;AS mail, uid, gid FROM mail_users where username = &#39;%u&#39;<br />\n &nbsp;</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Кстати,&nbsp;если запамятовали,&nbsp;какой пароль SysCP для коннекта с MySQL-базой, то &quot;подсмотреть&quot; его можно в файле /usr/local/www/syscp/lib/userdata.inc.php.</p>\n<p class=\"rtejustify\">Добавим загрузку Dovecot при запуске системы и стартуем Dovecot:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div># <strong>echo &#39;# Dovecot&#39; &gt;&gt; /etc/rc.conf</strong></div>\n<div># <strong>echo &#39;dovecot_enable=&quot;YES&quot;&#39; &gt;&gt; /etc/rc.conf</strong></div>\n<div># <strong>sh /usr/local/etc/rc.d/dovecot start</strong></div>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">В моем случае Dovecot ругнулся на неизвестные опции в&nbsp;6 строке и 27,&nbsp;а именно:</p>\n<p class=\"rtejustify\">- ssl_disable<br />\n- login_greeting_capability</p>\n<p class=\"rtejustify\">После общения с google понял, что для версии Dovecot 1.2.х эта опция заменена на &quot;ssl = no&quot;. Вносим необходимые изменения в конфигурационный файл.</p>\n<p class=\"rtejustify\">Опция login_greeting_capability разрешает посылать возможности IMAP в приветственном сообщении. Это избавляет&nbsp;клиентов от необходимости запрашивать это в команде CAPABILITY, таким&nbsp;образом экономится один запрос. Но в нашем случае данная опция неизвестна - ф топку. Обойдемся без нее. То есть - комментируем!</p>\n<div>&nbsp;</div>\n<p class=\"rtejustify\"><strong>Postfix</strong></p>\n<p class=\"rtejustify\">Приступим к настройке SMTP-сервера на базе Postfix. Конечно, Exim мне более милее,&nbsp;но в стандартной поставке SysCP&nbsp;использует именно Postfix. Возможно позже статья будет переписана с использованием именно MTA Exim.</p>\n<p class=\"rtejustify\">Итак, начнем с редактирования /usr/local/etc/postfix/main.cf. Необходимо придать ему следующий вид:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div><strong># cat /usr/local/etc/postfix/main.cf</strong></div>\n<div>smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks<br />\n smtpd_recipient_restrictions =<br />\n &nbsp; permit_mynetworks,<br />\n &nbsp; permit_sasl_authenticated,<br />\n &nbsp; reject_non_fqdn_hostname,<br />\n &nbsp; reject_non_fqdn_sender,<br />\n &nbsp; reject_non_fqdn_recipient,<br />\n &nbsp; reject_unauth_destination,<br />\n &nbsp; reject_unauth_pipelining,<br />\n &nbsp; reject_invalid_hostname<br />\n smtpd_sasl_auth_enable = yes<br />\n smtpd_sasl_authenticated_header = yes<br />\n smtpd_sasl_local_domain = $myhostname<br />\n smtpd_sasl_security_options = noanonymous<br />\n broken_sasl_auth_clients = yes<br />\n smtpd_sasl_type = dovecot<br />\n smtpd_sasl_path = private/auth&nbsp;&nbsp;&nbsp;<br />\n smtp_use_tls = yes<br />\n smtpd_use_tls = yes<br />\n smtp_tls_note_starttls_offer = yes<br />\n smtpd_tls_key_file = /etc/ssl/postfix/smtpd.pem<br />\n smtpd_tls_cert_file = /etc/ssl/postfix/smtpd.pem<br />\n smtpd_tls_CAfile = /etc/ssl/postfix/smtpd.pem<br />\n smtpd_tls_loglevel = 0<br />\n smtpd_tls_received_header = yes<br />\n smtpd_tls_session_cache_timeout = 3600s<br />\n tls_random_source = dev:/dev/urandom<br />\n virtual_alias_maps = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_alias_maps.cf<br />\n virtual_gid_maps = static:125<br />\n virtual_mailbox_base = /usr/local/customers/mail/<br />\n virtual_mailbox_domains = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf<br />\n virtual_mailbox_limit = 51200000<br />\n virtual_mailbox_maps = proxy:mysql:/usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf<br />\n virtual_minimum_uid = 125<br />\n virtual_transport = virtual<br />\n virtual_uid_maps = static:125<br />\n virtual_create_maildirsize = yes<br />\n virtual_mailbox_extended = yes<br />\n proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps<br />\n &nbsp; $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains<br />\n &nbsp; $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps<br />\n &nbsp; $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks<br />\n virtual_mailbox_limit_override = yes<br />\n virtual_maildir_limit_message = Sorry, this user has overdrawn their diskspace quota. Please try again later.<br />\n virtual_overquota_bounce = yes<br />\n alias_maps = $alias_database<br />\n queue_directory = /var/spool/postfix<br />\n command_directory = /usr/local/sbin<br />\n daemon_directory = /usr/local/libexec/postfix<br />\n data_directory = /var/db/postfix<br />\n mail_owner = postfix<br />\n myhostname = muff.kiev.ua<br />\n mydomain = muff.kiev.ua<br />\n myorigin = $mydomain<br />\n unknown_local_recipient_reject_code = 550<br />\n mynetworks_style = host<br />\n debug_peer_level = 2<br />\n debugger_command =<br />\n &nbsp; PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin<br />\n &nbsp; ddd $daemon_directory/$process_name $process_id &amp; sleep 5<br />\n sendmail_path = /usr/local/sbin/sendmail<br />\n newaliases_path = /usr/local/bin/newaliases<br />\n mailq_path = /usr/local/bin/mailq<br />\n setgid_group = maildrop<br />\n html_directory = no<br />\n manpage_directory = /usr/local/man<br />\n sample_directory = /usr/local/etc/postfix<br />\n readme_directory = no</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Далее на очереди - /usr/local/etc/postfix/master.cf. Раскомментируем, или добавим следующие строки:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<div>smtps&nbsp;&nbsp;&nbsp;&nbsp; inet&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; smtpd<br />\n &nbsp; -o smtpd_tls_wrappermode=yes<br />\n &nbsp; -o smtpd_sasl_auth_enable=yes<br />\n &nbsp; -o smtpd_client_restrictions=permit_sasl_authenticated,reject</div>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Создаем<strong> </strong>mysql-virtual_alias_maps.cf и приводим к следующему виду:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># touch /usr/local/etc/postfix/mysql-virtual_alias_maps.cf</strong><br />\n <strong># cat /usr/local/etc/postfix/mysql-virtual_alias_maps.cf</strong></p>\n<p>user = syscp<br />\n password = <strong>MYSQL_PASSWORD</strong><br />\n dbname = syscp<br />\n table = mail_virtual<br />\n select_field = destination<br />\n where_field = email<br />\n additional_conditions = and destination &lt;&gt; &#39;&#39; and destination &lt;&gt; &#39; &#39;<br />\n hosts = localhost</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Потом создаем файл /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf и наполняем его следующим содержимым:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># touch /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf</strong><br />\n <strong># cat /usr/local/etc/postfix/mysql-virtual_mailbox_domains.cf</strong></p>\n<p>user = syscp<br />\n password = <strong>MYSQL_PASSWORD</strong><br />\n dbname = syscp<br />\n table = panel_domains<br />\n select_field = domain<br />\n where_field = domain<br />\n additional_conditions = and isemaildomain = &#39;1&#39;<br />\n hosts = localhost</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Еще один аналогичный файл:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># touch /usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf</strong><br />\n <strong># cat /usr/local/etc/postfix/mysql-virtual_mailbox_maps.cf</strong></p>\n<p>user = syscp<br />\n password = <strong>MYSQL_PASSWORD</strong><br />\n dbname = syscp<br />\n table = mail_users<br />\n select_field = maildir<br />\n where_field = email<br />\n hosts = localhost</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Создаем каталог для приходящей почты:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>mkdir -p /usr/local/customers/mail/</strong><br />\n # <strong>chown -R postfix:postfix /usr/local/customers/mail/</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Инициализируем базу данных псевдонимов:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>#<strong> /usr/local/bin/newaliases</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Займемся сертификатом безопасности...</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># mkdir -p /etc/ssl/postfix<br />\n # cd /etc/ssl/postfix<br />\n # openssl req -new -x509 -nodes -out smtpd.pem -keyout smtpd.pem -days 3650</strong></p>\n<p>Generating a 1024 bit RSA private key<br />\n ..........++++++<br />\n ..................................++++++<br />\n writing new private key to &#39;smtpd.pem&#39;<br />\n -----<br />\n You are about to be asked to enter information that will be incorporated<br />\n into your certificate request.<br />\n What you are about to enter is what is called a Distinguished Name or a DN.<br />\n There are quite a few fields but you can leave some blank<br />\n For some fields there will be a default value,<br />\n If you enter &#39;.&#39;, the field will be left blank.<br />\n -----<br />\n Country Name (2 letter code) [AU]:<strong>UA</strong><br />\n State or Province Name (full name) [Some-State]:<strong>Kiev Region</strong><br />\n Locality Name (eg, city) []:<strong>Kiev</strong><br />\n Organization Name (eg, company) [Internet Widgits Pty Ltd]:<strong>muff.kiev.ua Ltd.</strong><br />\n Organizational Unit Name (eg, section) []:<strong>IT department</strong><br />\n Common Name (eg, YOUR name) []:<strong>muff.kiev.ua</strong><br />\n Email Address []:<strong>admin&#39;at&#39;muff.kiev.ua</strong><br />\n <strong># chmod 750 /etc/ssl/postfix<br />\n # chmod 640 /etc/ssl/postfix/smtpd.pem<br />\n # chgrp -R postfix /etc/ssl/postfix</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Также позаботимся о том, чтобы никто не подсмотрел параметры соединения с MySQL-базой:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>chmod 640 /usr/local/etc/postfix/mysql-virtual_*</strong><br />\n # <strong>chgrp postfix /usr/local/etc/postfix/mysql-virtual_*</strong></td>\n</tr>\n</tbody>\n</table>\n<p>Отменим старт&nbsp;Sendmail&nbsp;и добавим&nbsp;в /etc/rc.conf загрузку Postfix при старте системы:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo &#39;# SMTP&#39; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;sendmail_enable=&quot;NO&quot;&#39; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;sendmail_submit_enable=&quot;NO&quot;&#39; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;sendmail_outbound_enable=&quot;NO&quot;&#39; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;sendmail_msp_queue_enable=&quot;NO&quot; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;postfix_enable=&quot;YES&quot;&#39; &gt;&gt; /etc/rc.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;Отключим специфические для Sendmail опции:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><strong># touch /etc/periodic.conf<br />\n # cat /etc/periodic.conf</strong><br />\n daily_clean_hoststat_enable=&quot;NO&quot;<br />\n daily_status_mail_rejects_enable=&quot;NO&quot;<br />\n daily_status_include_submit_mailq=&quot;NO&quot;<br />\n daily_submit_queuerun=&quot;NO&quot;</td>\n</tr>\n</tbody>\n</table>\n<p>Останавливаем Sendmail и запускаем Postfix:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># killall -9 sendmail</strong><br />\n <strong># sh /usr/local/etc/rc.d/postfix start</strong><br />\n postfix/postfix-script: starting the Postfix mail system</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;<strong>ProFTPd</strong></p>\n<p>Следующим сервисом будет ФТП (демон ProFTPd).</p>\n<p>Займемся созданием сертификата&nbsp;для даного демона:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># mkdir -p /etc/ssl/proftpd<br />\n #&nbsp;cd /etc/ssl/proftpd<br />\n #&nbsp;openssl req -new -x509 -days 3650 -nodes -out cert.pem -keyout key.pem</strong></p>\n<p>Generating a 1024 bit RSA private key<br />\n .............................++++++<br />\n .............++++++<br />\n writing new private key to &#39;key.pem&#39;<br />\n -----<br />\n You are about to be asked to enter information that will be incorporated<br />\n into your certificate request.<br />\n What you are about to enter is what is called a Distinguished Name or a DN.<br />\n There are quite a few fields but you can leave some blank<br />\n For some fields there will be a default value,<br />\n If you enter &#39;.&#39;, the field will be left blank.<br />\n -----<br />\n Country Name (2 letter code) [AU]:<strong>UA</strong><br />\n State or Province Name (full name) [Some-State]:<strong>Kiev Region</strong><br />\n Locality Name (eg, city) []:<strong>Kiev</strong><br />\n Organization Name (eg, company) [Internet Widgits Pty Ltd]:<strong>muff.kiev.ua Ltd.</strong><br />\n Organizational Unit Name (eg, section) []:<strong>IT department</strong><br />\n Common Name (eg, YOUR name) []:<strong>muff.kiev.ua</strong><br />\n Email Address []:<strong>admin&#39;at&#39;muff.kiev.ua</strong><br />\n <strong>#&nbsp;chmod 640 *.pem</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Приступаем к редактированию конфигурационного файла ProFTPd - /usr/local/etc/proftpd.conf. Необходимо привести его к следующему виду:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p><strong># cat /usr/local/etc/proftpd.conf</strong></p>\n<p>ServerName &quot;muff.kiev.ua FTP Server&quot;<br />\n ServerType standalone<br />\n DefaultServer on<br />\n Port 21<br />\n UseIPv6 off<br />\n Umask 022<br />\n SyslogLevel emerg<br />\n SystemLog /var/log/xferlog<br />\n LogFormat auth &quot;%v [%P] %h %t \\&quot;%r\\&quot; %s&quot;<br />\n ExtendedLog /var/log/xferlog AUTH auth<br />\n DeferWelcome off<br />\n MultilineRFC2228 on<br />\n ShowSymlinks on<br />\n TimeoutNoTransfer 600<br />\n TimeoutStalled 600<br />\n TimeoutIdle 1200<br />\n DisplayLogin welcome.msg<br />\n DisplayChdir .message<br />\n ListOptions &quot;-l&quot;<br />\n DenyFilter \\*.*/<br />\n MaxInstances 30<br />\n CommandBufferSize 512<br />\n User nobody<br />\n Group nogroup<br />\n AllowOverwrite on<br />\n DefaultRoot ~<br />\n RequireValidShell off<br />\n AuthOrder mod_sql.c<br />\n SQLAuthTypes Crypt<br />\n SQLAuthenticate users groups<br />\n SQLConnectInfo syscp@localhost syscp <strong>MYSQL_PASSWORD</strong><br />\n SQLUserInfo ftp_users username password uid gid homedir shell<br />\n SQLGroupInfo ftp_groups groupname gid members<br />\n SQLUserWhereClause &quot;login_enabled = &#39;y&#39;&quot;<br />\n SQLLog PASS login<br />\n SQLNamedQuery login UPDATE &quot;last_login=now(), login_count=login_count+1 WHERE username=&#39;%u&#39;&quot; ftp_users<br />\n SQLLog RETR download<br />\n SQLNamedQuery download UPDATE &quot;down_count=down_count+1, down_bytes=down_bytes+%b WHERE username=&#39;%u&#39;&quot; ftp_users<br />\n SQLLog STOR upload<br />\n SQLNamedQuery upload UPDATE &quot;up_count=up_count+1, up_bytes=up_bytes+%b WHERE username=&#39;%u&#39;&quot; ftp_users<br />\n &lt;IfModule mod_delay.c&gt;<br />\n DelayEngine off<br />\n &lt;/IfModule&gt;<br />\n &lt;IfModule mod_tls.c&gt;<br />\n TLSEngine on<br />\n TLSLog /var/log/xferlog<br />\n TLSProtocol SSLv23<br />\n TLSRequired off<br />\n TLSRSACertificateFile /etc/ssl/proftpd/cert.pem<br />\n TLSRSACertificateKeyFile /etc/ssl/proftpd/key.pem<br />\n TLSVerifyClient off<br />\n TLSRenegotiate required off<br />\n &lt;/IfModule&gt;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Добавим загрузку ProFTPd в /etc/rc.conf:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>echo &#39;# ProFTPd&#39; &gt;&gt; /etc/rc.conf</strong><br />\n # <strong>echo &#39;proftpd_enable=&quot;YES&quot;&#39; &gt;&gt;&nbsp;/etc/rc.conf</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p>Ну и, напоследок, запускаем саму службу:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><strong># sh /usr/local/etc/rc.d/proftpd start</strong><br />\n Starting proftpd.</td>\n</tr>\n</tbody>\n</table>\n<div>&nbsp;</div>\n<p class=\"rtecenter\">&nbsp;<strong>Cron</strong></p>\n<p class=\"rteleft\">Настроим планировщик заданий cron на выполнение следующих процедур:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td><strong># cat /etc/crontab | grep syscp</strong><br />\n */5&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_tasks.php<br />\n 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_traffic.php<br />\n 30&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_ticketarchive.php<br />\n 0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_used_tickets_reset.php<br />\n */5&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_autoresponder.php<br />\n */5&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_apsinstaller.php<br />\n */30&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; root&nbsp;&nbsp;&nbsp; /usr/local/bin/php -q /usr/local/www/syscp/scripts/cron_apsupdater.php<br />\n &nbsp;</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Не забываем перезапустить cron после внесения изменений:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td># <strong>killall -HUP cron</strong></td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;Для подержки awstats (поддержку можно будет настроить в панели) необходимо установить порт. Перейдем в /usr/ports/www/awstats и начнем установку:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>cd /usr/ports/www/awstats</strong><br />\n # <strong>make install clean</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">&nbsp;По завершению установки необходимо добавить следующие строки в /usr/local/etc.apache22/httpd.conf:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p>Alias /awstatsclasses &quot;/usr/local/www/awstats/classes/&quot;<br />\n Alias /awstatscss &quot;/usr/local/www/awstats/css/&quot;<br />\n Alias /awstatsicons &quot;/usr/local/www/awstats/icons/&quot;<br />\n ScriptAlias /awstats/ &quot;/usr/local/www/awstats/cgi-bin/&quot;</p>\n<p>&lt;Directory &quot;/usr/local/www/awstats/&quot;&gt;<br />\n &nbsp;&nbsp;&nbsp; Options None<br />\n &nbsp;&nbsp;&nbsp; AllowOverride None<br />\n &nbsp;&nbsp;&nbsp; Order allow,deny<br />\n &nbsp;&nbsp;&nbsp; Allow from all<br />\n &lt;/Directory&gt;</p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rtejustify\">Создаем&nbsp;необходимые каталоги и файлы:</p>\n<table border=\"1\" cellpadding=\"1\" cellspacing=\"1\" style=\"width:100%\">\n<tbody>\n<tr>\n<td>\n<p># <strong>mkdir /usr/local/etc/awstats/</strong><br />\n # <strong>cp /usr/local/www/awstats/cgi-bin/awstats.model.conf /usr/local/etc/awstats</strong></p>\n</td>\n</tr>\n</tbody>\n</table>\n<p class=\"rteleft\">&nbsp;Продолжение следует...</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:8d75ca3f37abe5c75451c626fbeb0b08' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:97db45a9ba40f3997edba195f4bc9884' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Здравствуйте, автор!</p>\n<p>Попытался установить шаг в шаг.</p>\n<p>Вопрос всал на FTP. Не хочет авторизовываться. 530 ошибка. Может в вашем коде ошибка? Я его копировал.</p>\n<p>Спасибо за ответ!</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:97db45a9ba40f3997edba195f4bc9884' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:cb5e841b3606f39ea9982a9b09374c15' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>По ходу данный конфиг генерирует сама панель (поэтому его и разместил). Как всегда,&nbsp;приходится обрабатывать &quot;напильником&quot;. При &quot;разборе полетов&quot; обнаружил,&nbsp;что не вполне корректно обрабатываются sql-запросы. Немножко потанцевал с бубном и добился успешного результата. При следующих параметрах все работает (навожу только строки,&nbsp;которые относятся к SQL-запросам).</p>\n<p>&nbsp;</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100\">\n<tbody>\n<tr>\n<td>SQLConnectInfo <a href=\"mailto:syscp@localhost\">syscp@localhost</a> <strong>sql_login_here</strong> <strong>sql_passwd_here</strong><br />\n SQLAuthTypes Crypt<br />\n SQLUserInfo ftp_users username password uid gid homedir shell<br />\n SQLGroupInfo ftp_groups groupname gid members<br />\n SQLAuthenticate users groups<br />\n SQLLog PASS login<br />\n SQLNamedQuery login UPDATE &quot;last_login=now(), login_count=login_count+1 WHERE username=\'%u\'&quot; ftp_users<br />\n SQLLog RETR download<br />\n SQLNamedQuery download UPDATE &quot;down_count=down_count+1, down_bytes=down_bytes+%b WHERE username=\'%u\'&quot; ftp_users<br />\n SQLLog STOR upload<br />\n SQLNamedQuery upload UPDATE &quot;up_count=up_count+1, up_bytes=up_bytes+%b WHERE username=\'%u\'&quot; ftp_users<br />\n &nbsp;</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;</p>\n<p><strong><span style=\"color: #ff0000\">P.S.</span> </strong>Извините за столь запоздалый ответ,&nbsp;как-то закрутился и не заглядывал в раздел коментариев. Надеюсь вопрос еще актуален.</p>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:cb5e841b3606f39ea9982a9b09374c15' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:726080ca1783c2e86da3143425bad61d' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;Не подскаже, пожалуйста, а какие права на&nbsp;<span class=\"Apple-style-span\" style=\"background-color: rgb(255, 255, 255); \">/usr/local/etc/apache22/syscp/vhosts.conf надо выставить, а то syscp не записывает в него.</span></p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:726080ca1783c2e86da3143425bad61d' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:43638a7c16eba05dcf7b0b2c724306cc' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Насколько помнится - права не менял...</p>\n<table border=\"1\" cellspacing=\"1\" cellpadding=\"1\" width=\"100%\">\n<tbody>\n<tr>\n<td># <strong>ls -la /usr/local/etc/apache22/syscp/vhosts.conf</strong><br />\n -rw-r--r--&nbsp; 1 root&nbsp; wheel&nbsp; 72014&nbsp; 6 окт 21:30 /usr/local/etc/apache22/syscp/vhosts.conf</td>\n</tr>\n</tbody>\n</table>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:43638a7c16eba05dcf7b0b2c724306cc' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:766433514b12ef7e5ffe1217ad6e5bc1' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;C доступом разобрался. Необходимо было поставить XML обработчик php5-xml</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:766433514b12ef7e5ffe1217ad6e5bc1' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a1b668257256bcaa313e8e536fdaaf91' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Ясно.</p>\n<p class=\"rtejustify\">А как так? Если устанавливать из портов зависимости должны были тоже установиться. Их список можно увидеть в начале статьи,&nbsp;где идет описание порта.</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:a1b668257256bcaa313e8e536fdaaf91' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:7e68f521aa318479cbd81d138e746d05' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;Прошу прощения, что давно не отвечал. был в командировке. &nbsp;XML не подтянулся, хотя странно. Все это хозяйство устанавливалось на свжеустановленную Фрю 8.2 x32</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:7e68f521aa318479cbd81d138e746d05' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d1527693174573f5085051020ae448b5' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Добрый день! Подскажить есть в SYSCP менеджер файлов?</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:d1527693174573f5085051020ae448b5' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:a47724da7c4bfa49256f01f66d19a5b0' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Нету.</p>\n<p>Предлагают использовать Web-FTP. Пример настройки web-ftp - <a href=\"http://muff.kiev.ua/content/net2ftp-rabotaem-s-ftp-cherez-brauzer\">здесь</a>.</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:a47724da7c4bfa49256f01f66d19a5b0' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>&nbsp;</p>\n<p>&nbsp;</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:b1f58154e0889ad9e13f315115f79cf2' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:2ef0b2c64f82ee4865a922a2ff2f5a25' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p>Спасибо)</p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:2ef0b2c64f82ee4865a922a2ff2f5a25' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a class=\"thickbox\" href=\"/files/imagepicker/1/wake_up_ua.png\"><img alt=\"Вставай, Україно!\" class=\"imgp_img\" src=\"/files/imagepicker/1/thumbs/wake_up_ua.png\" style=\"height:200px; width:150px\" /></a></p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:07243fc0252056071eaa62af8c18d662' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:cc913d232116f0426090404133377d88' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: UPDATE cache_filter SET data = '<p class=\"rtecenter\"><a href=\"http://muff.kiev.ua/rss.xml\"><img alt=\"RSS\" width=\"160\" height=\"60\" src=\"http://muff.kiev.ua/files/muf-rss.png\" /></a></p>\n', created = 1767741292, expire = 1767827692, headers = '', serialized = 0 WHERE cid = '2:d9a86123bfcbc57878743027b584400b' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 112.
  • user warning: Table './muffsql1/cache_filter' is marked as crashed and should be repaired query: SELECT data, created, headers, expire, serialized FROM cache_filter WHERE cid = '3:39649256b636e3d5ded656bc52bd8c01' in /usr/local/www/muff.kiev.ua/includes/cache.inc on line 27.
Версия для печатиОтправить другу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 - здесь.

Спасибо)

Спасибо)

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

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

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

Литература

Если Админ затрудняется расписаться в получении зарплаты - предложите ему набрать свой пароль!