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

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

10 Установка Apache2, PHP, FCGI, suExec, Pear, phpMyAdmin и mcrypt

Apache2, PHP5, phpMyAdmin, FCGI, suExec, Pear и mcrypt можно установить следующим образом:

apt-get install apache2 apache2.2-common apache2-doc apache2-mpm-prefork apache2-utils libexpat1 ssl-cert libapache2-mod-php5 php5 php5-common php5-gd php5-mysql php5-imap phpmyadmin php5-cli php5-cgi libapache2-mod-fcgid apache2-suexec php-pear php-auth php5-mcrypt mcrypt php5-imagick imagemagick libruby libapache2-mod-python php5-curl php5-intl php5-memcache php5-memcached php5-pspell php5-recode php5-sqlite php5-tidy php5-xmlrpc php5-xsl memcached libapache2-mod-passenger

Вы увидите следующие вопросы:

Web server to reconfigure automatically: <- apache2  
 Configure database for phpmyadmin with dbconfig-common? <- yes  
Enter the password of the administrative user? <- yourrootmysqlpassword  
Enter the phpmyadmin application password? <-  Just press enter

Затем выполните следующую команду, чтобы включить модули Apache suexec, rewrite, ssl, actions и include (плюс dav, dav_fs и auth_digest, если вы хотите использовать WebDAV):

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers

Чтобы убедиться, что сервер не может быть атакован через уязвимость HTTPOXY, мы отключим заголовок HTTP_PROXY в apache глобально, добавив файл конфигурации /etc/apache2/conf-available/httpoxy.conf.

sudo nano /etc/apache2/conf-available/httpoxy.conf

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


    RequestHeader unset Proxy early

И включите модуль, выполнив:

a2enconf httpoxy  
service apache2 restart

10.1 Установка 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

10.2 Установка SuPHP (необязательно, но не рекомендуется)

ОБНОВЛЕННОЕ ЗАМЕЧАНИЕ: SuPHP больше не следует устанавливать, переходите к шагу 11

SuPHP больше не доступен для Debian Jessie. Режим suphp больше не следует использовать в ISPConfig, так как есть более лучшие режимы PHP, такие как php-fpm и php-fcgi. Если вам действительно нужен suphp по причинам совместимости, следуйте шагам в этой главе, чтобы скомпилировать его вручную. Но мы не рекомендуем его установку.

apt-get install apache2-dev build-essential autoconf automake libtool flex bison debhelper binutils
cd /usr/local/src  
wget http://suphp.org/download/suphp-0.7.2.tar.gz  
tar zxvf suphp-0.7.2.tar.gz  
wget -O suphp.patch https://lists.marsching.com/pipermail/suphp/attachments/20130520/74f3ac02/attachment.patch  
patch -Np1 -d suphp-0.7.2 < suphp.patch  
cd suphp-0.7.2  
autoreconf -if  
./configure --prefix=/usr/ --sysconfdir=/etc/suphp/ --with-apr=/usr/bin/apr-1-config --with-apache-user=www-data --with-setid-mode=owner --with-logfile=/var/log/suphp/suphp.log  
make  
make install  

Создайте каталог конфигурации suphp и файл suphp.conf:

mkdir /var/log/suphp  
mkdir /etc/suphp  
nano /etc/suphp/suphp.conf
[global]  
;Path to logfile  
logfile=/var/log/suphp/suphp.log  
  
;Loglevel  
loglevel=info  
  
;User Apache is running as  
webserver_user=www-data  
  
;Path all scripts have to be in  
docroot=/var/www  
  
;Path to chroot() to before executing script  
;chroot=/mychroot  
  
; Security options  
allow_file_group_writeable=false  
allow_file_others_writeable=false  
allow_directory_group_writeable=false  
allow_directory_others_writeable=false  
  
;Check wheter script is within DOCUMENT_ROOT  
check_vhost_docroot=true  
  
;Send minor error messages to browser  
errors_to_browser=false  
  
;PATH environment variable  
env_path=/bin:/usr/bin  
  
;Umask to set, specify in octal notation  
umask=0022  
  
; Minimum UID  
min_uid=100  
  
; Minimum GID  
min_gid=100  
  
[handlers]  
;Handler for php-scripts  
x-httpd-suphp="php:/usr/bin/php-cgi"  
  
;Handler for CGI-scripts  
x-suphp-cgi=execute:!self  
umask=0022

Далее мы добавим файл конфигурации для загрузки модуля suphp в apache:

echo "LoadModule suphp_module /usr/lib/apache2/modules/mod_suphp.so" > /etc/apache2/mods-available/suphp.load

Затем откройте /etc/apache2/mods-available/suphp.conf…

nano /etc/apache2/mods-available/suphp.conf

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


        AddType application/x-httpd-suphp .php .php3 .php4 .php5 .phtml
        suPHP_AddHandler application/x-httpd-suphp

    
        suPHP_Engine on
    

    # By default, disable suPHP for debian packaged web applications as files
    # are owned by root and cannot be executed by suPHP because of min_uid.
    
        suPHP_Engine off
    

# # Use a specific php config file (a dir which contains a php.ini file)
#       suPHP_ConfigPath /etc/php5/cgi/suphp/
# # Tells mod_suphp NOT to handle requests with the type .
#       suPHP_RemoveHandler 

Включите модуль suphp в apache:

a2enmod suphp

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

service apache2 restart

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

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

Теперь мы добавим поддержку Let’s Encrypt.

mkdir /opt/certbot  
cd /opt/certbot  
wget https://dl.eff.org/certbot-auto  
chmod a+x ./certbot-auto

Теперь выполните команду certbot-auto, которая загрузит и установит программное обеспечение и его зависимости.

./certbot-auto

Команда затем сообщит вам, что “в ваших конфигурационных файлах не найдено имен” и спросит, следует ли продолжать, пожалуйста, выберите “нет”, так как сертификаты будут созданы ISPConfig.

12 Установка PHP-FPM и XCache

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

12.1 PHP-FPM (рекомендуется)

Начиная с ISPConfig 3.0.5, есть дополнительный режим PHP, который вы можете выбрать для использования с Apache: PHP-FPM.

Чтобы использовать PHP-FPM с Apache, нам нужен модуль Apache mod_fastcgi (пожалуйста, не путайте его с mod_fcgid - они очень похожи, но вы не можете использовать PHP-FPM с mod_fcgid). Мы можем установить PHP-FPM и mod_fastcgi следующим образом:

apt-get install libapache2-mod-fastcgi php5-fpm

Убедитесь, что вы включили модуль и перезапустили Apache:

a2enmod actions fastcgi alias  
service apache2 restart

12.2 Установка XCache

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

apt-get install php5-xcache

Теперь перезапустите Apache:

service apache2 restart

13 Установка Mailman

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

apt-get install mailman

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

Languages to support: <-- en (English)  
 Missing site list <-- Ok

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

newlist mailman
root@server1:~# newlist mailman  
Enter the email of the person running the list: <-- admin email address, e.g. [email protected]  
Initial mailman password: <-- admin password for the mailman list  
To finish creating your mailing list, you must edit your /etc/aliases (or  
equivalent) file by adding the following lines, and possibly running the  
`newaliases' program:  
   
## mailman mailing list  
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"  
   
Hit enter to notify mailman owner... <-- ENTER  
   
root@server1:~#

Откройте /etc/aliases после этого…

nano /etc/aliases

… и добавьте следующие строки:

[...]  
## mailman mailing list  
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 для Apache:

ln -s /etc/mailman/apache.conf /etc/apache2/conf-enabled/mailman.conf

Это определяет псевдоним /cgi-bin/mailman/ для всех виртуальных хостов Apache, что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http://server1.example.com/cgi-bin/mailman/admin/, а веб-страница для пользователей почтового списка будет доступна по адресу http://server1.example.com/cgi-bin/mailman/listinfo/.

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

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

service apache2 restart

Затем запустите демон Mailman:

service mailman start

14 Установка 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
Country Name (2 letter code) [AU]: <-- Введите название вашей страны (например, "DE").  
State or Province Name (full name) [Some-State]: <-- Введите название вашего штата или провинции.  
Locality Name (eg, city) []: <-- Введите ваш город.  
Organization Name (eg, company) [Internet Widgits Pty Ltd]: <-- Введите название вашей организации (например, название вашей компании).  
Organizational Unit Name (eg, section) []: <-- Введите название вашего структурного подразделения (например, "IT Department").  
Common Name (eg, YOUR name) []: <-- Введите полное доменное имя системы (например, "server1.example.com").  
Email Address []: <-- Введите ваш адрес электронной почты.

Измените права доступа к 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: static file system information.  
#  
# Use 'blkid' to print the universally unique identifier for a  
# device; this may be used with UUID= as a more robust way to name devices  
# that works even if disks are added and removed. See fstab(5).  
#  
#        
# / was on /dev/sda1 during installation  
UUID=3dc3b58d-97e5-497b-8254-a913fdfc5408 / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1  
# swap was on /dev/sda5 during installation  
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

15 Установка BIND DNS Server

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

apt-get install bind9 dnsutils

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

apt-get install haveged

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

16 Установка Webalizer и AWStats

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

apt-get install webalizer awstats geoip-database libclass-dbi-mysql-perl libtimedate-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

# Generate static reports:
#10 03 * * * www-data [ -x /usr/share/awstats/tools/buildstatic.sh ] && /usr/share/awstats/tools/buildstatic.sh

17 Установка 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*

18 Установка 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.