Серверные технологии · 10 min read · Oct 31, 2025
Идеальный сервер - Ubuntu 18.04 (Nginx, MySQL, PHP, Postfix, BIND, Dovecot, Pure-FTPD и ISPConfig 3.1) - Страница 2
8. Установка Nginx, PHP 7.2 (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 автоматически выполнит необходимую конфигурацию.)
Мы можем заставить PHP 7 работать в nginx через PHP-FPM (PHP-FPM (FastCGI Process Manager) - это альтернативная реализация PHP FastCGI с некоторыми дополнительными функциями, полезными для сайтов любого размера, особенно более загруженных сайтов), который мы устанавливаем следующим образом:
apt-get -y install php7.2-fpmPHP-FPM - это демон-процесс, который запускает сервер FastCGI на сокете /var/run/php/php7.2-fpm.sock.
Чтобы получить поддержку MySQL в PHP, мы можем установить пакет php7.2-mysql. Также хорошей идеей будет установить некоторые другие модули PHP, так как они могут понадобиться для ваших приложений. Вы можете искать доступные модули PHP следующим образом:
apt-cache search php7.2Выберите нужные и установите их следующим образом:
apt-get -y install php7.2 php7.2-common php7.2-gd php7.2-mysql php7.2-imap php7.2-cli php7.2-cgi php-pear mcrypt imagemagick libruby php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl memcached php-memcache php-imagick php-gettext php7.2-zip php7.2-mbstring php-soap php7.2-soapДалее откройте /etc/php/7.2/fpm/php.ini…
nano /etc/php/7.2/fpm/php.ini… и установите cgi.fix_pathinfo=0 и ваш часовой пояс:
[...]
cgi.fix_pathinfo=0
[...]
date.timezone="Europe/Berlin"
[...](Вы можете найти все доступные часовые пояса в директориях /usr/share/zoneinfo и их поддиректориях.)
Теперь перезагрузите PHP-FPM:
service php7.2-fpm reloadЧтобы получить поддержку CGI в nginx, мы устанавливаем Fcgiwrap.
Fcgiwrap - это обертка CGI, которая также должна работать для сложных CGI-скриптов и может использоваться для сред совместного хостинга, так как позволяет каждому vhost использовать свою собственную директорию cgi-bin.
Установите пакет fcgiwrap:
apt-get -y install fcgiwrapПосле установки демон fcgiwrap должен уже быть запущен; его сокет - /var/run/fcgiwrap.socket. Если он не работает, вы можете использовать скрипт /etc/init.d/fcgiwrap, чтобы запустить его.
Вот и все! Теперь, когда вы создаете vhost nginx, ISPConfig позаботится о правильной конфигурации vhost.
8.1 Установка phpMyAdmin
Установите phpMyAdmin следующим образом:
apt-get -y install phpmyadmin php-mbstring php-gettextВы увидите следующие вопросы:
Веб-сервер для автоматической перенастройки: <– выберите none (поскольку доступны только apache2 и lighttpd)
Пароль приложения 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/php/php7.2-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/php/php7.2-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) соответственно:
nano /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/php/php7.2-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;
}8.2 Установка HHVM (HipHop Virtual Machine)
На этом этапе мы установим HHVM с помощью apt. HHVM - это быстрый PHP-движок, разработанный Facebook.
apt-get -y install hhvm8.4. Установка Let’s Encrypt
ISPConfig 3.1 имеет встроенную поддержку бесплатного удостоверяющего центра SSL Let’s Encrypt. Функция Let’s Encrypt позволяет вам создавать бесплатные SSL-сертификаты для вашего веб-сайта в ISPConfig.
Теперь мы добавим поддержку Let’s Encrypt.
apt-get -y install certbotЗарегистрируйтесь для получения учетной записи Let’s Encrypt следующим образом:
certbot registerи следуйте инструкциям на экране.
9. Установка Mailman
ISPConfig также позволяет вам управлять (создавать/изменять/удалять) почтовыми списками Mailman. Если вы хотите воспользоваться этой функцией, установите Mailman следующим образом:
apt-get -y install mailmanВыберите хотя бы один язык, например:
Языки для поддержки: <– en (английский)
Отсутствующий список сайтов <– Ок
Прежде чем мы сможем запустить Mailman, необходимо создать первый почтовый список под названием mailman:
newlist mailmanroot@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/
Если вы хотите использовать 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://
10. Установка PureFTPd и Quota
PureFTPd и quota можно установить с помощью следующей команды:
apt-get -y 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/mapper/server1--vg-root / ext4 errors=remount-ro,usrjquota=quota.user,grpjquota=quota.group,jqfmt=vfsv0 0 1
# /boot был на /dev/sda1 во время установки
UUID=39762f15-3a49-4982-add3-139d5040b48a /boot ext2 defaults 0 2
/dev/mapper/server1--vg-swap_1 none swap sw 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto,exec,utf8 0 0Чтобы включить квоты, выполните эти команды:
mount -o remount /quotacheck -avugm
quotaon -avugСледующие сообщения об ошибках являются нормальными для команды и могут быть проигнорированы:
quotacheck: Сканирование /dev/mapper/server1--vg-root [/] завершено
quotacheck: Невозможно получить старый файл квоты //quota.user: Нет такого файла или директории. Использование не будет вычитаться.
quotacheck: Невозможно получить старый файл квоты //quota.group: Нет такого файла или директории. Использование не будет вычитаться.
quotacheck: Невозможно получить старый файл квоты //quota.user: Нет такого файла или директории. Использование не будет вычитаться.
quotacheck: Невозможно получить старый файл квоты //quota.group: Нет такого файла или директории. Использование не будет вычитаться.
quotacheck: Проверено 18566 директорий и 110119 файлов
quotacheck: Старый файл не найден.
quotacheck: Старый файл не найден.11. Установка DNS-сервера BIND
BIND устанавливается следующим образом:
apt-get -y install bind9 dnsutils havegedВключите и запустите haveged.
systemctl enable haveged
service haveged start12. Установка Vlogger, Webalizer и AWStats
Vlogger, Webalizer и AWStats можно установить следующим образом:
apt-get -y install vlogger webalizer awstats geoip-database 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.sh13. Установка Jailkit
Его можно установить следующим образом:
apt-get -y install build-essential autoconf automake1.11 libtool flex bison debhelper binutilscd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
echo 5 > debian/compatЗатем создайте пакет jailkit, выполнив эту команду:
./debian/rules binaryТеперь вы можете установить пакет Jailkit.deb следующим образом:
cd ..
dpkg -i jailkit_2.19-1_*.deb
rm -rf jailkit-2.19*14. Установка Fail2Ban и UFW
Это необязательно, но рекомендуется, потому что монитор ISPConfig пытается показать журнал:
apt-get -y install fail2banЧтобы сделать fail2ban монитором PureFTPd и Dovecot, создайте файл /etc/fail2ban/jail.local:
nano /etc/fail2ban/jail.local[pure-ftpd]
enabled = true
port = ftp
filter = pure-ftpd
logpath = /var/log/syslog
maxretry = 3
[dovecot]
enabled = true
filter = dovecot
action = iptables-multiport[name=dovecot-pop3imap, port="pop3,pop3s,imap,imaps", protocol=tcp]
logpath = /var/log/mail.log
maxretry = 5
[postfix]
enabled = true
port = smtp
filter = postfix
logpath = /var/log/mail.log
maxretry = 3Перезапустите fail2ban после этого:
service fail2ban restartЧтобы установить брандмауэр UFW, выполните эту команду apt:
apt-get install ufwGet new posts in your inbox
No spam. Unsubscribe anytime.