Серверные настройки · 10 min read · Jan 05, 2026

Идеальный сервер - Debian 8.6 (nginx, BIND, Dovecot, ISPConfig 3.1) - Страница 2

10 Установка Nginx, PHP (PHP-FPM) и Fcgiwrap

Nginx доступен в виде пакета для Debian, который мы можем установить следующим образом:

apt-get install nginx

Если Apache2 уже установлен в системе, остановите его сейчас…

service apache2 stop

Сообщение “ Не удалось остановить apache2.service: единица apache2.service не загружена. “ нормально и не указывает на ошибку.

… и удалите ссылки на автозагрузку Apache:

systemctl disable apache2

Запустите 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-fpm

PHP-FPM - это демон-процесс (с init-скриптом /etc/init.d/php5-fpm), который запускает сервер 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-memcached  php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached

APC - это бесплатный и открытый кэш PHP opcode для кэширования и оптимизации промежуточного кода PHP. Он похож на другие кэши PHP opcode, такие как eAccelerator и XCache. Настоятельно рекомендуется установить один из них, чтобы ускорить вашу PHP-страницу.

APC можно установить следующим образом:

apt-get install php-apc

Далее откройте /etc/php5/fpm/php.ini…

nano /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. Если он не работает, вы можете использовать скрипт fservice fcgiwrap для его запуска.

Вот и все! Теперь, когда вы создаете vhost nginx, ISPConfig позаботится о правильной конфигурации vhost.

10.1 Дополнительные версии PHP

Начиная с ISPConfig 3.0.5, возможно иметь несколько версий PHP на одном сервере (выбираемых через ISPConfig), которые могут работать через PHP-FPM, включая PHP 7 и 7.1. Чтобы узнать, как собрать дополнительные версии PHP (PHP-FPM) и как настроить ISPConfig, пожалуйста, ознакомьтесь с этим учебником: Как установить PHP 7 (PHP-FPM & FastCGI) для ISPConfig 3 на Debian 8 (Jessie)

10.2 Установка phpMyAdmin

Установите phpMyAdmin следующим образом:

apt-get install phpmyadmin

Не выбирайте вариант, когда установщик спрашивает “ Веб-сервер для автоматической перенастройки: “, и нажмите ok.

Настроить базу данных для phpmyadmin с dbconfig-common? <-- да  
Пароль административного пользователя базы данных: <-- Введите пароль root MySQL  
Пароль приложения MySQL для phpmyadmin: <-- Нажмите Enter

Теперь вы можете найти phpMyAdmin в директории /usr/share/phpmyadmin/.

После установки ISPConfig 3 вы можете получить доступ к phpMyAdmin следующим образом:

Vhost приложений ISPConfig на порту 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, вы можете использовать переменную $https. Снова перейдите в поле Директивы nginx и вместо fastcgi_param HTTPS on; добавьте строку fastcgi_param HTTPS $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 $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;
        }

10.3 Установка HHVM (HipHop Virtual Machine)

На этом этапе мы установим HHVM из его официального репозитория Debian. Добавьте репозиторий HHVM и импортируйте ключ.

sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0x5a16e7281be7a449  
echo deb http://dl.hhvm.com/debian jessie main | sudo tee /etc/apt/sources.list.d/hhvm.list

Обновите список пакетов:

sudo apt-get update

и установите HHVM:

sudo apt-get install hhvm

11 Установка Let’s Encrypt

ISPConfig 3.1 поддерживает бесплатный центр сертификации SSL Let’s Encrypt. Функция Let’s Encrypt позволяет вам создавать бесплатные SSL-сертификаты для вашего веб-сайта из ISPConfig.

apt-get install python-certbot -t jessie-backports

12 Установка Mailman

ISPConfig позволяет вам управлять (создавать/изменять/удалять) почтовыми списками Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:

apt-get install mailman

Выберите хотя бы один язык, например:

Языки для поддержки: <– en (English)
Отсутствующий список сайтов <– Ок

Прежде чем мы сможем запустить Mailman, необходимо создать первый почтовый список под названием mailman:

newlist mailman

root@server1:~# newlist mailman
Введите email человека, управляющего списком: <– адрес электронной почты администратора, например [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 после этого…

nano /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 следующим образом:

Vhost приложений ISPConfig на порту 8081 для nginx поставляется с конфигурацией Mailman, поэтому вы можете использовать http://server1.example.com:8081/cgi-bin/mailman/admin/ или http://server1.example.com:8081/cgi-bin/mailman/listinfo/ для доступа к Mailman.

Если вы хотите использовать 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:///cgi-bin/mailman/admin/, а веб-страница для пользователей почтового списка может быть найдена по адресу http:///cgi-bin/mailman/listinfo/.

По адресу http:///pipermail вы можете найти архивы почтовых списков.

13 Установка PureFTPd и Quota

PureFTPd и quota можно установить с помощью следующей команды:

apt-get install pure-ftpd-common pure-ftpd-mysql quota quotatool

Отредактируйте файл /etc/default/pure-ftpd-common…

nano /etc/default/pure-ftpd-common

… и убедитесь, что режим запуска установлен на standalone и VIRTUALCHROOT=true:

[...]
STANDALONE_OR_INETD=standalone
[...]
VIRTUALCHROOT=true
[...]

Теперь мы настраиваем PureFTPd для разрешения FTP и TLS-сессий. FTP - это очень небезопасный протокол, так как все пароли и все данные передаются в открытом виде. Используя TLS, всю коммуникацию можно зашифровать, что делает FTP гораздо более безопасным.

Если вы хотите разрешить FTP и TLS-сессии, выполните

echo 1 > /etc/pure-ftpd/conf/TLS

Чтобы использовать TLS, мы должны создать SSL-сертификат. Я создаю его в /etc/ssl/private/, поэтому сначала создаю эту директорию:

mkdir -p /etc/ssl/private/

После этого мы можем сгенерировать SSL-сертификат следующим образом:

openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem

Название страны (2 буквы) [AU]: <– Введите название вашей страны (например, “DE”).
Название штата или провинции (полное название) [Some-State]: <– Введите название вашего штата или провинции.
Название населенного пункта (например, город) []: <– Введите ваш город.
Название организации (например, компания) [Internet Widgits Pty Ltd]: <– Введите название вашей организации (например, название вашей компании).
Название подразделения (например, отдел) []: <– Введите название вашего подразделения (например, “IT Department”).
Общее название (например, ВАШЕ имя) []: <– Введите полное доменное имя системы (например, “server1.example.com”).
Адрес электронной почты []: <– Введите ваш адрес электронной почты.

Измените разрешения SSL-сертификата:

chmod 600 /etc/ssl/private/pure-ftpd.pem

Затем перезапустите PureFTPd:

service pure-ftpd-mysql restart

Отредактируйте /etc/fstab. Мой выглядит так (я добавил, usrjquota=quota.user, grpjquota=quota.group, jqfmt=vfsv0 к разделу с точкой монтирования /):

nano /etc/fstab
# /etc/fstab: статическая информация о файловой системе.  
#  
# Используйте 'blkid', чтобы напечатать универсальный уникальный идентификатор для  
# устройства; это может быть использовано с UUID= как более надежный способ именования устройств  
# который работает даже если диски добавляются и удаляются. См. fstab(5).  
#  
# <файловая система> <точка монтирования> <тип> <опции> <дамп> <проход>  
# / была на /dev/sda1 во время установки  
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap была на /dev/sda5 во время установки  
UUID=36bf486e-8f76-492d-89af-5a8eb3ce8a02 none swap sw 0 0  
/dev/sr0 /media/cdrom0 udf,iso9660 user,noauto 0 0

Чтобы включить квоты, выполните следующие команды:

mount -o remount /
quotacheck -avugm  
quotaon -avug

14 Установка DNS-сервера BIND

BIND можно установить следующим образом:

apt-get install bind9 dnsutils

Если ваш сервер является виртуальной машиной, то настоятельно рекомендуется установить демон haveged для получения более высокой энтропии для подписания DNSSEC. Вы можете установить haveged и на не виртуальных серверах, это не повредит.

apt-get install haveged  
systemctl enable haveged  
service haveged start

Объяснение по этой теме можно найти здесь.

15 Установка Webalizer и AWstats

Webalizer и AWstats можно установить следующим образом:

apt-get install webalizer awstats geoip-database libtimedate-perl libclass-dbi-mysql-perl

Откройте /etc/cron.d/awstats после этого…

nano /etc/cron.d/awstats

… и закомментируйте все в этом файле:

#MAILTO=root

#*/10 * * * * www-data [ -x /usr/share/awstats/tools/update.sh ] && /usr/share/awstats/tools/update.sh

# Генерировать статические отчеты:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

16 Установка Jailkit

Jailkit нужен только в том случае, если вы хотите chroot пользователей SSH. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить после!):

apt-get install build-essential autoconf automake libtool flex bison debhelper binutils
cd /tmp  
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz  
tar xvfz jailkit-2.19.tar.gz  
cd jailkit-2.19  
./debian/rules binary

Теперь вы можете установить пакет Jailkit.deb следующим образом:

cd ..  
dpkg -i jailkit_2.19-1_*.deb  
rm -rf jailkit-2.19*

17 Установка Fail2ban и UFW Firewall

Это необязательно, но рекомендуется, так как монитор ISPConfig пытается показать журнал:

apt-get install fail2ban

Чтобы сделать fail2ban монитором PureFTPd и Dovecot, создайте файл /etc/fail2ban/jail.local:

nano /etc/fail2ban/jail.local
[pureftpd]
enabled  = true
port     = ftp
filter   = pureftpd
logpath  = /var/log/syslog
maxretry = 3

[dovecot-pop3imap]
enabled = true
filter = dovecot-pop3imap
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5

[postfix-sasl]
enabled  = true
port     = smtp
filter   = postfix-sasl
logpath  = /var/log/mail.log
maxretry = 3

Затем создайте следующие два файла фильтров:

nano /etc/fail2ban/filter.d/pureftpd.conf
[Definition]
failregex = .*pure-ftpd: \(.*@\) \[WARNING\] Authentication failed for user.*
ignoreregex =
nano /etc/fail2ban/filter.d/dovecot-pop3imap.conf
[Definition]
failregex = (?: pop3-login|imap-login): .*(?:Authentication failure|Aborted login \(auth failed|Aborted login \(tried to use disabled|Disconnected \(auth failed|Aborted login \(\d+ authentication attempts).*rip=(?P\S*),.*
ignoreregex =

Затем, чтобы добавить строку ignoreregex в файл фильтра postfix-sasl, выполните:

echo "ignoreregex =" >> /etc/fail2ban/filter.d/postfix-sasl.conf

Перезапустите fail2ban после этого:

service fail2ban restart

Чтобы установить брандмауэр UFW, выполните эту команду apt:

apt-get install ufw
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.