Серверные настройки · 8 min read · Feb 09, 2026
Идеальный сервер - Ubuntu 14.04 (nginx, BIND, MySQL, PHP, Postfix, Dovecot и ISPConfig 3) - Страница 4
12 Установка Postfix, Dovecot, MySQL, phpMyAdmin, rkhunter, binutils
Мы можем установить Postfix, Dovecot, MySQL, rkhunter и binutils одной командой:
apt-get install postfix postfix-mysql postfix-doc mysql-client mysql-server openssl getmail4 rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve sudoВам будут заданы следующие вопросы:
Новый пароль для пользователя MySQL “root”: <– вашпарольsqlroot
Повторите пароль для пользователя MySQL “root”: <– вашпарольsqlroot
Общий тип конфигурации почты: <– Интернет-сайт
Системное имя почты: <– server1.example.com
Создать самоподписанный SSL-сертификат?: <– Да
Далее откройте порты TLS/SSL и отправки в Postfix:
vi /etc/postfix/master.cfРаскомментируйте секции отправки и smtps следующим образом - добавьте строку -o smtpd_client_restrictions=permit_sasl_authenticated,reject в обе секции и оставьте все остальное закомментированным:
| [...] submission inet n - - - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING smtps inet n - - - - smtpd -o syslog_name=postfix/smtps -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o smtpd_reject_unlisted_recipient=no # -o smtpd_client_restrictions=$mua_client_restrictions # -o smtpd_helo_restrictions=$mua_helo_restrictions # -o smtpd_sender_restrictions=$mua_sender_restrictions # -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING [...] |
Перезапустите Postfix после этого:
service postfix restartМы хотим, чтобы MySQL слушал на всех интерфейсах, а не только на localhost, поэтому редактируем /etc/mysql/my.cnf и закомментируем строку bind-address = 127.0.0.1:
vi /etc/mysql/my.cnf| [...] # Вместо skip-networking по умолчанию теперь слушает только на # localhost, что более совместимо и не менее безопасно. #bind-address = 127.0.0.1 [...] |
Затем перезапускаем MySQL:
service mysql restartТеперь проверьте, что сеть включена. Выполните
netstat -tap | grep mysqlВывод должен выглядеть так:
root@server1:~# netstat -tap | grep mysql
tcp 0 0 *:mysql *:* LISTEN 17300/mysqld
root@server1:~#13 Установка Amavisd-new, SpamAssassin и Clamav
Чтобы установить amavisd-new, SpamAssassin и ClamAV, выполняем
apt-get install amavisd-new spamassassin clamav clamav-daemon zoo unzip bzip2 arj nomarch lzop cabextract apt-listchanges libnet-ldap-perl libauthen-sasl-perl clamav-docs daemon libio-string-perl libio-socket-ssl-perl libnet-ident-perl zip libnet-dns-perlНастройка ISPConfig 3 использует amavisd, который загружает библиотеку фильтров SpamAssassin внутренне, поэтому мы можем остановить SpamAssassin, чтобы освободить немного оперативной памяти:
service spamassassin stop
update-rc.d -f spamassassin remove14 Установка Nginx, PHP5 (PHP-FPM) и Fcgiwrap
Nginx доступен в виде пакета для Ubuntu, который мы можем установить следующим образом:
apt-get install nginxЕсли Apache2 уже установлен в системе, остановите его сейчас…
service apache2 stop… и удалите системные ссылки запуска Apache:
update-rc.d -f apache2 removeЗапустите nginx после этого:
service nginx start(Если оба Apache2 и nginx установлены, установщик ISPConfig 3 спросит вас, какой из них вы хотите использовать - в этом случае ответьте nginx. Если установлен только один из них, ISPConfig выполнит необходимую конфигурацию автоматически.)
Мы можем заставить PHP5 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) - это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:
apt-get install php5-fpmPHP-FPM - это демон-процесс (с командой запуска service php5-fpm start), который запускает сервер FastCGI на сокете /var/run/php5-fpm.sock.
Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php5-mysql. Также разумно установить некоторые другие модули PHP5, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP5 следующим образом:
apt-cache search php5Выберите нужные и установите их следующим образом:
apt-get install php5-mysql php5-curl php5-gd php5-intl php-pear php5-imagick php5-imap php5-mcrypt php5-memcache php5-ming php5-ps php5-pspell php5-recode php5-snmp php5-sqlite php5-tidy php5-xmlrpc php5-xsl snmpМодуль mcrypt для PHP5 необходимо включить вручную:
php5enmod mcryptAPC - это бесплатный и открытый кэш PHP opcode для кэширования и оптимизации промежуточного кода PHP. Он похож на другие кэши PHP opcode, такие как eAccelerator и XCache. Настоятельно рекомендуется установить один из них для ускорения вашей PHP-страницы.
APC можно установить следующим образом:
apt-get install php-apcДалее откройте /etc/php5/fpm/php.ini…
vi /etc/php5/fpm/php.ini… и установите cgi.fix_pathinfo=0 и ваш часовой пояс:
| [...] cgi.fix_pathinfo=0 [...] date.timezone="Europe/Berlin" [...] |
(Вы можете найти все доступные часовые пояса в директориях /usr/share/zoneinfo и их поддиректориях.)
Теперь перезагрузите PHP-FPM:
service php5-fpm reloadЧтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.
Fcgiwrap - это обертка CGI, которая также должна работать для сложных CGI-скриптов и может использоваться для сред совместного хостинга, поскольку позволяет каждому vhost использовать свою собственную директорию cgi-bin.
Установите пакет fcgiwrap:
apt-get install fcgiwrapПосле установки демон fcgiwrap должен уже быть запущен; его сокет - /var/run/fcgiwrap.socket. Если он не работает, вы можете использовать скрипт service fcgiwrap для его запуска.
Вот и все! Теперь, когда вы создаете vhost nginx, ISPConfig позаботится о правильной конфигурации vhost.
14.1 Дополнительные версии PHP
Начиная с ISPConfig 3.0.5, возможно иметь несколько версий PHP на одном сервере (выбираемых через ISPConfig), которые могут работать через PHP-FPM. Чтобы узнать, как собрать дополнительные версии PHP (PHP-FPM) и как настроить ISPConfig, пожалуйста, ознакомьтесь с этим руководством: Как использовать несколько версий PHP (PHP-FPM и FastCGI) с ISPConfig 3 (Ubuntu 12.10) (работает и для Ubuntu 14.04).
14.2 Установка phpMyAdmin
Установите phpMyAdmin следующим образом:
apt-get install phpmyadminВы увидите следующие вопросы:
Веб-сервер для автоматической перенастройки: <– выберите none (поскольку доступны только apache2 и lighttpd)
Настроить базу данных для phpmyadmin с dbconfig-common? <– Нет
Теперь вы можете найти phpMyAdmin в директории /usr/share/phpmyadmin/.
После установки ISPConfig 3 вы можете получить доступ к phpMyAdmin следующим образом:
Приложение ISPConfig vhost на порту 8081 для nginx поставляется с конфигурацией phpMyAdmin, поэтому вы можете использовать http://server1.example.com:8081/phpmyadmin или http://server1.example.com:8081/phpMyAdmin для доступа к phpMyAdmin.
Если вы хотите использовать псевдоним /phpmyadmin или /phpMyAdmin, который вы можете использовать с ваших веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к phpMyAdmin.
Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в ISPConfig:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Если вы используете http s вместо http для вашего vhost, вы должны добавить строку fastcgi_param HTTPS on; в вашу конфигурацию phpMyAdmin следующим образом:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param HTTPS on; # <-- добавьте эту строку fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
Если вы используете как http, так и https для вашего vhost, вам нужно добавить следующий раздел в секцию http {} в /etc/nginx/nginx.conf (перед любыми строками include), который определяет, использует ли посетитель http или https и устанавливает переменную $fastcgi_https (которую мы будем использовать в нашей конфигурации phpMyAdmin) соответственно:
vi /etc/nginx/nginx.conf| [...] http { [...] ## Определить, когда используется HTTPS map $scheme $fastcgi_https { default off; https on; } [...] } [...] |
Не забудьте перезагрузить nginx после этого:
service nginx reloadЗатем снова перейдите в поле Директивы nginx и вместо fastcgi_param HTTPS on; добавьте строку fastcgi_param HTTPS $fastcgi_https; так, чтобы вы могли использовать phpMyAdmin как для http, так и для https запросов:
| location /phpmyadmin { root /usr/share/; index index.php index.html index.htm; location ~ ^/phpmyadmin/(.+\.php)$ { try_files $uri =404; root /usr/share/; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_param HTTPS $fastcgi_https; # <-- добавьте эту строку fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $request_filename; include /etc/nginx/fastcgi_params; fastcgi_param PATH_INFO $fastcgi_script_name; fastcgi_buffer_size 128k; fastcgi_buffers 256 4k; fastcgi_busy_buffers_size 256k; fastcgi_temp_file_write_size 256k; fastcgi_intercept_errors on; } location ~* ^/phpmyadmin/(.+\.(jpg|jpeg|gif|css|png|js|ico|html|xml|txt))$ { root /usr/share/; } } location /phpMyAdmin { rewrite ^/* /phpmyadmin last; } |
15 Установка Mailman
С версии 3.0.4 ISPConfig также позволяет вам управлять (создавать/изменять/удалять) списками рассылки Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:
apt-get install mailmanВыберите хотя бы один язык, например:
Языки для поддержки: <– en (английский)
Отсутствующий список сайтов <– Ок
Перед тем как мы сможем запустить Mailman, необходимо создать первый список рассылки с именем mailman:
newlist mailmanroot@server1:~# newlist mailman
Введите адрес электронной почты человека, управляющего списком: <– адрес электронной почты администратора, например [email protected]
Первоначальный пароль mailman: <– пароль администратора для списка mailman
Чтобы завершить создание вашего списка рассылки, вам необходимо отредактировать ваш файл /etc/aliases (или эквивалентный) добавив следующие строки, и, возможно, запустив программу newaliases:
список рассылки mailman
mailman: ”|/var/lib/mailman/mail/mailman post mailman”
mailman-admin: ”|/var/lib/mailman/mail/mailman admin mailman”
mailman-bounces: ”|/var/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: ”|/var/lib/mailman/mail/mailman confirm mailman”
mailman-join: ”|/var/lib/mailman/mail/mailman join mailman”
mailman-leave: ”|/var/lib/mailman/mail/mailman leave mailman”
mailman-owner: ”|/var/lib/mailman/mail/mailman owner mailman”
mailman-request: ”|/var/lib/mailman/mail/mailman request mailman”
mailman-subscribe: ”|/var/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: ”|/var/lib/mailman/mail/mailman unsubscribe mailman”
Нажмите enter, чтобы уведомить владельца mailman… <– ENTER
root@server1:~#
Откройте /etc/aliases после этого…
vi /etc/aliases… и добавьте следующие строки:
| [...] ## список рассылки mailman mailman: "|/var/lib/mailman/mail/mailman post mailman" mailman-admin: "|/var/lib/mailman/mail/mailman admin mailman" mailman-bounces: "|/var/lib/mailman/mail/mailman bounces mailman" mailman-confirm: "|/var/lib/mailman/mail/mailman confirm mailman" mailman-join: "|/var/lib/mailman/mail/mailman join mailman" mailman-leave: "|/var/lib/mailman/mail/mailman leave mailman" mailman-owner: "|/var/lib/mailman/mail/mailman owner mailman" mailman-request: "|/var/lib/mailman/mail/mailman request mailman" mailman-subscribe: "|/var/lib/mailman/mail/mailman subscribe mailman" mailman-unsubscribe: "|/var/lib/mailman/mail/mailman unsubscribe mailman" |
Запустите
newaliasesпосле этого и перезапустите Postfix:
service postfix restartЗатем запустите демон Mailman:
service mailman startПосле установки ISPConfig 3 вы можете получить доступ к Mailman следующим образом:
Приложение ISPConfig vhost на порту 8081 для nginx поставляется с конфигурацией Mailman, поэтому вы можете использовать http://server1.example.com:8081/cgi-bin/mailman/admin/
Если вы хотите использовать Mailman с ваших веб-сайтов, это немного сложнее, чем для Apache, потому что nginx не имеет глобальных псевдонимов (т.е. псевдонимов, которые могут быть определены для всех vhosts). Поэтому вам нужно определить эти псевдонимы для каждого vhost, с которого вы хотите получить доступ к Mailman.
Для этого вставьте следующее в поле Директивы nginx на вкладке Опции веб-сайта в ISPConfig:
| location /cgi-bin/mailman { root /usr/lib/; fastcgi_split_path_info (^/cgi-bin/mailman/[^/]*)(.*)$; include /etc/nginx/fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_intercept_errors on; fastcgi_pass unix:/var/run/fcgiwrap.socket; } location /images/mailman { alias /usr/share/images/mailman; } location /pipermail { alias /var/lib/mailman/archives/public; autoindex on; } |
Это определяет псевдоним /cgi-bin/mailman/ для вашего vhost, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http://
По адресу http://
Get new posts in your inbox
No spam. Unsubscribe anytime.