• База знаний
  • /
  • Блог
  • /
  • Wiki
  • /
  • ONLINE CHAT
+380 (44) 364 05 71

 

 

 

Панель управления хостингом: установка ISPConfig 3.2 на сервер Debian 10 (Buster)

Оглавление

Сегодня часто возникает потребность в настройке собственного сервера для работы веб-сайта, почты и других сервисов. И все относительно просто, пока есть один веб-сайт и один домен для почты. Казалось бы просто: зайти на сервер через консоль SSH, по достаточно простым мануалам из выдачи гугла подправить пару конфигов, и все! А если есть несколько доменов или сайтов – хорошо бы иметь специально обученного человека для администрирования этого всего… А если сайты имеют разные версии РНР – кажется, тут нужны более глубокие знания или большие финансовые вложения. Или и то и другое.

Но, как показывает практика, можно вполне обойтись скромным бюджетом и даже не заморачиваться с вниманием в особенности работы SSH и консольных текстовых редакторов. Ведь есть такой продукт, как панель управления хостингом. В семействе этих продуктов есть как платные варианты, так и бесплатные. Отличает их интуитивный веб-интерфейс, возможность работать и настраивать разные компоненты сервера ”без заморочек”, относительная простота при впечатляющей функциональности. И да – возможность, при изначально простых телодвижениях, получить систему с переключением версий РНР для разных сайтов.

Именно о такой панели управления хостингом и пойдет речь в этой статье. Система ISPConfig 3.2 – бесплатная панель управления веб-хостингом, которая позволяет Вам настраивать через веб-интерфейс такие сервисы, как:

  • Apache или nginx – веб-сервера;
  • Почтовый сервер Postfix;
  • Courier или Dovecot IMAP/POP3 server;
  • MySQL, BIND или MyDNS сервер имен, PureFTPd, SpamAssassin, ClamAV, и многое другое.

В статье рассматриваем вариант установки с веб-сервером Apache

1. Перед началом

Все команды выполняются от имени пользователя root. Соответственно необходимо залогиниться в систему под именем суперпользователя или же, зайдя обычным пользователем, командой «su –» получить соответствующие права. ВАЖНО: использовать именно команду «su –», а не просто «su», иначе переменные пути будут некорректные для системы Debian. Так же в системе должен быть установлен SSH-сервер – подразумевается, что все наши действия по начальной установке будут идти через консоль SSH… И это вовсе не вопреки сказанному в первых абзацах – да, с консолью немного придётся повозится, но относительно немного.

В этом руководстве я использую имя сервера – ispconfig.example.com и IP-адрес – 192.168.100.100. У вас будет соответствующее имя сервера. Нам необходима минимальная установка системы Debian.

2. Настройка имени хоста

Имя хоста вашего сервера желательно сделать субдоменной на подобии ispconfig.example.com». Лучше не использовать доменное имя без субдомена (типа «example.com») – это может привести к трудностям в настройке почты в дальнейшем.

Первое – необходимо проверить имя хоста в /etc/hosts и изменить его при необходимости. Запись имеет вид: «IP адрес сервера – пробел – полное имя включающее домен – пробел – субдоменная часть». Для нашего сервера, с именем ispconfig.example.com, файл должен выглядеть следующим образом:

nano /etc/hosts

 

127.0.0.1       localhost.localdomain   localhost
192.168.100.100   ispconfig.example.com     ispconfig
 
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

После чего редактируем файл /etc/hostname:

nano /etc/hostname

Он должен содержать только субдоменную часть имени, в нашем случае:

ispconfig

В конце перегружаем сервер для применения изменений:

systemctl reboot

Логинимся и проверяем имя хоста с помощью этих команд:

hostname
hostname -f

Ответ должен быть (в нашем случае) следующим:

root@ispconfig:/tmp# hostname
ispconfig
root@ispconfig:/tmp# hostname -f
ispconfig.example.com

3. Обновление Debian

Убеждаемся, что наша система обновлений содержит правильные репозитории (buster/updates):

nano /etc/apt/sources.list

 

deb http://deb.debian.org/debian/ buster main contrib non-free
deb-src http://deb.debian.org/debian/ buster main contrib non-free

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

запускаем проверку и обновление:

apt-get update && apt-get upgrade -y

4. Синхронизируем системное время

Всегда хорошо, когда сервер имеет правильную настройку времени и постоянно проверяет и корректирует точность «внутренних»-системных часов. Для синхронизации системных часов существуют сервера времени в сети ИНТЕРНЕТ. А сама синхронизация проходит по протоколу NTP (Network Time Protocol). И сделать автоматическую синхронизация – очень просто: необходимо всего лишь установить соответствующий сервис на вашем сервере:

apt-get -y install ntp

и ваш сервер всегда имеет точное время.

5. Установка Postfix, Dovecot, MariaDB, rkhunter and Binutils

Установим почтовый сервер-клиент Postfix / Dovecot, аналог MySQL-сервера, rkhunter и Binutils одной командой:

apt-get -y install postfix postfix-mysql postfix-doc mariadb-client mariadb-server openssl getmail4
rkhunter binutils dovecot-imapd dovecot-pop3d dovecot-mysql dovecot-sieve dovecot-lmtpd sudo curl

 Нам надо будет ответить на следующие вопросы:

General type of mail configuration:

Ответ на вопрос

System mail name:

Ответ на вопрос  ispconfig.example.com

Для безопасности установленного сервера БД MariaDB и отключения базы данных «test», запускаем такую команду:

mysql_secure_installation

Отвечаем на вопросы следующим образом:

Enter current password for root (enter for none): <-- вводим текущий пароль суперпользователя

Change the root password? [Y/n] <-- y

New password: <-- вводим новый пароль пользователя root MariaDB

Re-enter new password: <-- повторно вводим новый пароль пользователя root MariaDB

Remove anonymous users? [Y/n] <-- y

Disallow root login remotely? [Y/n] <-- y

Remove test database and access to it? [Y/n] <-- y

Reload privilege tables now? [Y/n] <-- y

После этих действий будет обновлен пароль root'а для сервера баз данных, запрещен вход пользователю root по сети (только локальный вход) и удалены анонимный пользователь и тестовая БД.

Далее сделаем так, что б MySQL слушал все сетевые интерфейсы кроме локального. Для этого откроем редактором файл /etc/mysql/mariadb.conf.d/50-server.cnf и добавим символ комментария «#» в начало строки bind-address = 127.0.0.1

nano /etc/mysql/mariadb.conf.d/50-server.cnf

Редактирование файла 50-server.cnf

Установим метод аутентификации с паролем в MariaDB и в последствии сможем при использовании PHPMyAdmin подключаться пользователем root:

&echo "update mysql.user set plugin = 'mysql_native_password' where user='root';" | mysql -u root

Отредактируем файл /etc/mysql/debian.cnf и установим root пароль MySQL / MariaDB там дважды в строках начинающихся на password:

nano /etc/mysql/debian.cnf

Пароль root'a в данном примере – «SomePassword»:

данные для подключения к базе данных

Для предотвращения ошибки 'Error in accept: Too many open files' увеличим лимит открытых файлов для MariaDB. Открываем в редакторе файл /etc/security/limits.conf:

nano /etc/security/limits.conf

и в конце добавляем строки:

mysql soft nofile 65535
mysql hard nofile 65535

Теперь создадим директорию /etc/systemd/system/mysql.service.d/ с помощью команды mkdir:

mkdir -p /etc/systemd/system/mysql.service.d/

и создадим новый файл в ней:

nano /etc/systemd/system/mysql.service.d/limits.conf

вставим следующие строки в созданный файл:

[Service]
LimitNOFILE=infinity

Сохраняем файл и закрываем редактор nano. После чего перечитываем системные настройки и перезапускаем MariaDB:

systemctl daemon-reload
systemctl restart mariadb

Проверяем работу сервиса:

netstat -tap | grep mysql

Вывод должен быть примерно таким:

Проверка работы сервера MySQL

Следующим шагом – открываем TLS/SSL и submission порты для почтового сервера Postfix:

nano /etc/postfix/master.cf

И убираем символ комментария («#») стоящий в начале строк описывающих секции submission и smtps и добавляем при необходимости строки в файл master.cf до соответствия с приведенным ниже скриншотом.

Редактирование файла master.cf

Раскомментировано/добавлено:

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
…
 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

После всего рестартуем службу Postfix:

systemctl restart postfix

6. Установка Amavisd-new, SpamAssassin, и ClamAV

Для установки Amavisd-new, SpamAssassin, и ClamAV мы запускаем:

apt-get install amavisd-new spamassassin clamav clamav-daemon unzip bzip2 arj nomarch lzop
cabextract p7zip p7zip-full unrar-free lrzip 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
libdbd-mysql-perl postgrey

ISPConfig 3 использует amavisd который подгружает некоторые библиотеки SpamAssassin, по этому мы можем остановить службу SpamAssassin что б освободить немного памяти:

systemctl stop spamassassin
systemctl disable spamassassin

7. Установка веб-сервера Apache и РНР

Apache2, PHP, FCGI, suExec, Pear, and mcrypt устанавливаются так:

apt-get -y install apache2 apache2-doc apache2-utils libapache2-mod-php php7.3 php7.3-common
php7.3-gd php7.3-mysql php7.3-imap php7.3-cli php7.3-cgi libapache2-mod-fcgid
apache2-suexec-pristine php-pear mcrypt  imagemagick libruby libapache2-mod-python
php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc
php7.3-xsl memcached php-memcache php-imagick php-gettext php7.3-zip php7.3-mbstring memcached
libapache2-mod-passenger php7.3-soap php7.3-fpm php7.3-opcache php-apcu libapache2-reload-perl

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

a2enmod suexec rewrite ssl actions include dav_fs dav auth_digest cgi headers actions proxy_fcgi alias

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

NB: Уязвимость названа httpoxy (без ‘r’) и по этому конфигурационный файл, который мы добавляем называется httpoxy.conf, а не httproxy.conf – то есть тут нет ошибки с упущенной буквой ‘r’.

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

И добавляем следующие строки в файл:

<IfModule mod_headers.c>
    RequestHeader unset Proxy early
</IfModule>

 Сохраняем, активируем модуль и перезапускаем сервер Apache:

a2enconf httpoxy
systemctl restart apache2

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

ISPConfig использует скрипт acme.sh в качестве клиента Let’s Encrypt. Устанавливаем acme.sh такой командой:

curl https://get.acme.sh | sh -s

9. Установка Mailman

ICPConfig позволяет управлять листами рассылки Mailman. Если вы хотите использовать эту функцию в дальнейшем, установите Mailman, как показано ниже:

apt-get install mailman

В процессе установки необходимо выбрать язык на котором Mailman будет оставлять системные обращения. Язык можно сменить впоследствии выполнив команду dpkg-reconfigure mailman

Перед стартом Мailman необходимо создать первый список рассылки с именем mailman:

newlist mailman

Первый список рассылки mailman

Указываем e-mail адрес администратора рассылки и административный пароль к списку рассылки Мailman.

После открываем /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:

systemctl restart postfix

В конце, нам надо активировать конфигурацию Mailman в Apache:

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

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

А по адресу http://ispconfig.example.com/pipermail находится архив списков рассылки.

Перезапускаем Apache:

systemctl restart apache2

Перезапускаем демон Mailman:

systemctl restart mailman

10. Установка PureFTPD и квоты

PureFTPd и квоты устанавливаются следующей командой:

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

Создаем файл dhparam для pure-ftpd:

openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048

Открываем /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]: <-- Введите вашу страну (напр, "UA").

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) []: <-- Введите полное имя вашего сервера (напр. "ispconfig.example.com").

Email Address []: <-- Ваш e-mail адрес.

Меняем права доступа к файлу SSL сертификата:

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

После перезапускаем PureFTPd:

systemctl restart pure-ftpd-mysql

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

nano /etc/fstab

Hедактируем /etc/fstab

Для активации квот запускаем такие команды:

mount -o remount /

 

quotacheck -avugm
quotaon -avug

11. Установка BIND DNS сервера

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

apt-get install bind9 dnsutils

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

apt-get install haveged

Все пояснения к этому пункту можно найти здесь.

12. Установка Webalizer, AWStats и GoAccess

Webalizer и AWStats устанавливаются так:

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

Откроем /etc/cron.d/awstats после установки...

nano /etc/cron.d/awstats

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

Редактируем /etc/cron.d/awstats

Установим последнюю версию пакета GoAccess напрямую из репозитория GoAccess:

echo "deb https://deb.goaccess.io/ $(lsb_release -cs) main" | sudo tee -a /etc/apt/sources.list.d/goaccess.list
wget -O - https://deb.goaccess.io/gnugpg.key | sudo apt-key --keyring /etc/apt/trusted.gpg.d/goaccess.gpg add -
apt-get update
apt-get install goaccess

13. Установка Jailkit

Jailkit необходим только если вам необходимо сделать chroot окружение SSH пользователя. Устанавливается так:

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

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

cd ..
dpkg -i jailkit_2.22-1_*.deb
rm -rf jailkit-2.2*

14. Установка fail2ban и фаервола UFW

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

apt-get 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
logpath = /var/log/mail.log
maxretry = 5

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

Перезапустим fail2ban:

systemctl restart fail2ban

Для установки фаервола UFW, запустим такую команду:

apt-get install ufw

15. Установка утилиты управления базами данных PHPMyAdmin

Начиная с Debian 10, PHPMyAdmin не доступен как .deb пакет больше. По сему мы установим его из исходников.

Создаем директорию для PHPMyadmin:

mkdir /usr/share/phpmyadmin
mkdir /etc/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
touch /etc/phpmyadmin/htpasswd.setup

Переходим в директорию /tmp и загружаем исходный код PHPMyAdmin:

cd /tmp
wget https://files.phpmyadmin.net/phpMyAdmin/5.1.1/phpMyAdmin-5.1.1-all-languages.zip

Распаковываем скачанный архив и перемещаем файлы в директорию /usr/share/phpmyadmin после чего чистим /tmp.

unzip phpMyAdmin-5.1.1-all-languages.zip
mv phpMyAdmin-5.1.1-all-languages/* /usr/share/phpmyadmin/
rm -rf phpMyAdmin-5.1.1*

Создаем новый конфигурационный файл для PHPMyaAdmin на основе файла-примера:

cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Открываем конф-файл редактором nano:

nano /usr/share/phpmyadmin/config.inc.php

Устанавливаем безопасный пароль (blowfish secret) длиной не менее 32 символов:

$cfg['blowfish_secret'] = 'bD3e6wva9fnd93jVsb7SDgeiBCd452Dh'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Не используйте наш пример, установите свой!

Теперь укажем директорию в которую PHPMyAdmin будет использовать для временных файлов:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Следующим шагом создаем конфигурацию PHPMyAdmin для Apache открыв новый файл в редакторе nano:

nano /etc/apache2/conf-available/phpmyadmin.conf

Вставляем следующее содержимое в конф-файл и сохраняем его.

# phpMyAdmin default Apache configuration

Alias /phpmyadmin /usr/share/phpmyadmin

<Directory /usr/share/phpmyadmin>
 Options FollowSymLinks
 DirectoryIndex index.php

 <IfModule mod_php7.c>
 AddType application/x-httpd-php .php

 php_flag magic_quotes_gpc Off
 php_flag track_vars On
 php_flag register_globals Off
 php_value include_path .
 

</Directory>

# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
 <IfModule mod_authn_file.c>
 AuthType Basic
 AuthName "phpMyAdmin Setup"
 AuthUserFile /etc/phpmyadmin/htpasswd.setup
 </IfModule>
 Require valid-user
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/libraries>
 Order Deny,Allow
 Deny from All
</Directory>
<Directory /usr/share/phpmyadmin/setup/lib>
 Order Deny,Allow
 Deny from All
</Directory>

Активируем конфигурацию и перезапускаем Apache.

a2enconf phpmyadmin
systemctl restart apache2

Следующим шагом сконфигурируем базу данны phpMyadmin.
Входим в MariaDB как пользователь root:

mysql -u root -p

В оболочке MariaDB создадим новую БД для PHPMyAdmin:

MariaDB [(none)]> CREATE DATABASE phpmyadmin;

И нового пользователя БД:

MariaDB [(none)]> CREATE USER 'pma'@'localhost' IDENTIFIED BY 'mypassword';

Замените слово mypassword на одинаковый пароль в командах выше и ниже. Это обеспечит вход пользователя в эту БД и применится к разрешениям базы данных.

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'mypassword' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

И в конце, загрузим SQL таблицы в созданную БД:

mysql -u root -p phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql

Вводим пароль root'а для MariaDB при запросе.

Все, что нам осталось сделать – это установить настройки пользователя phpmyadmin в конфигурационном файле. Открываем файл в текстовом редакторе:

nano /usr/share/phpmyadmin/config.inc.php

Опускаемся вниз пока не встретим такие строки и редактируем их:

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = 'localhost';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'mypassword';

/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

Я выделил измененные строки красным цветом. Замените mypassword на выбранный вами пароль пользователя phpmyadmin. Заметка: символы «//» в начале строк должны быть удалены!

16. Установка веб-клиент почты RoundCube (необязательно)

В этом примере установим веб-клиент почты RoundCube. Для начала создадим БД для Roundcube вручную, т.к. иногда бывают сбои при автоматической установке RoundCube'а из репозитория Debian. Для создания базы данных заходим в MaraiDB…

mysql -uroot -p

…и там выполняем:

create database roundcube;
grant all privileges on roundcube.* to roundcube@'localhost' identified by 'password';
flush privileges;
exit;

NB: пароль устанавливаем свой.

Затем устанавливаем RoundCube:

apt-get install roundcube roundcube-core roundcube-mysql roundcube-plugins

Отвечаем на вопросы инсталятора:

Configure database for roundcube with dbconfig.common? <-- No

Необходимо наполнить созданную БД таблицами. Для этого переходим в каталог /usr/share/dbconfig-common/data/roundcube/install

cd /usr/share/dbconfig-common/data/roundcube/install

И выполняем такую команду:

mysql -u roundcube -D roundcube -p < mysql

После редактируем RoundCube /etc/roundcube/config.inc.php:

nano /etc/roundcube/config.inc.php

Установим default_host как localhost и smtp_server.

$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port']  = 25;

И редактируем /etc/roundcube/debian-db.php:

nano /etc/roundcube/config.inc.php

до следующего вида:

$dbuser='roundcube';
$dbpass='password';
$basepath='';
$dbname='roundcube';
$dbserver='localhost';
$dbport='3306';
$dbtype='mysql';

И помним, что вместо 'password' вставляем пароль придуманный ранее!

Затем отредактируем конф.файл RoundCube в Apache /etc/apache2/conf-enabled/roundcube.conf:

nano /etc/apache2/conf-enabled/roundcube.conf

Добавляем алиасы для apache /webmail и /roundcube, можно добавить эти строки вначале файла. you can add the line right at the beginning of the file. NB: не используйте /mail как алиас иначе модуль почты ispconfigперестанет работать!

Alias /roundcube /var/lib/roundcube
Alias /webmail /var/lib/roundcube

Перезапускаем Apache:

systemctl reload apache2

Теперь у нас есть доступ к интерфейсу RoundCube по следующим ссылкам:

http://192.168.100.100/webmail

http://www.example.com/webmail

http://ispconfig.example.com:8080/webmail (после того, как мы установим ISPConfig в следующей главе)

Существуют подключаемые модули для интеграции RoundCube Webmail с ISPConfig, об этом можно прочитать в инструкции ISPConfig RoundCube plugin installation instructions.

 17. Установка ISPConfig

Загружаем последний релиз панели управления хостингом ISPConfig:

cd /tmp
wget http://www.ispconfig.org/downloads/ISPConfig-3-stable.tar.gz
tar xfz ISPConfig-3-stable.tar.gz
cd ispconfig3_install/install/

Следующим шагом запускаем инсталлер ISPConfig.

php -q install.php

Это запустит процесс установки панели ISPConfig 3 на вашем сервере. Установщик настроит все сервисы, такие как: Postfix, Dovecot и пр.

# php -q install.php

--------------------------------------------------------------------------------
_____ ___________ _____ __ _ ____
|_ _/ ___| ___ \ / __ \ / _(_) /__ \
| | \ `--.| |_/ / | / \/ ___ _ __ | |_ _ __ _ _/ /
| | `--. \ __/ | | / _ \| '_ \| _| |/ _` | |_ |
_| |_/\__/ / | | \__/\ (_) | | | | | | | (_| | ___\ \
\___/\____/\_| \____/\___/|_| |_|_| |_|\__, | \____/
__/ |
|___/
--------------------------------------------------------------------------------

>> Initial configuration
Operating System: Debian 10.0 (Buster) or compatible
Following will be a few questions for primary configuration so be careful.
Default values are in [brackets] and can be accepted with <ENTER>.
Tap in "quit" (without the quotes) to stop the installer.

Select language (en,de) [en]: <-- Нажать Enter
Installation mode (standard,expert) [standard]: <-- Нажать Enter
Full qualified hostname (FQDN) of the server, eg server1.domain.tld [ispconfig.example.com]: <-- Нажать Enter
MySQL server hostname [localhost]: <-- Нажать Enter
MySQL server port [3306]: <-- Нажать Enter
MySQL root username [root]: <-- Нажать Enter
MySQL root password []: <-- Введите ваш MySQL root пароль
MySQL database to create [dbispconfig]: &lt-- Нажать Enter
MySQL charset [utf8]: <-- Нажать Enter
Configuring Postgrey
Configuring Postfix
Generating a 4096 bit RSA private key
.......................................................................++
........................................................................................................................................++
writing new private key to 'smtpd.key'
-----
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]: <-- Введите 2 буквы кода страны
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) []: <-- Нажать Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Имя сервера, в моем случае: ispconfig.example.com
Email Address []: <-- Нажать Enter
Configuring Mailman
Configuring Dovecot
Configuring Spamassassin
Configuring Amavisd
Configuring Getmail
Configuring BIND
Configuring Jailkit
Configuring Pureftpd
Configuring Apache
Configuring vlogger
[INFO] service Metronome XMPP Server not detected
Configuring Ubuntu Firewall
Configuring Fail2ban
[INFO] service OpenVZ not detected
Configuring Apps vhost
Installing ISPConfig
ISPConfig Port [8080]:
Admin password [admin]:
Do you want a secure (SSL) connection to the ISPConfig web interface (y,n) [y]: <-- Нажать Enter
Generating RSA private key, 4096 bit long modulus
.......................++
................................................................................................................................++
e is 65537 (0x10001)
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]: <-- Введите 2 буквы кода страны
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) []: <-- Нажать Enter
Common Name (e.g. server FQDN or YOUR name) []: <-- Имя сервера, в моем случае: ispconfig.example.com
Email Address []: <-- Нажать Enter
Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: <-- Нажать Enter
An optional company name []: <-- Нажать Enter
writing RSA key

Configuring DBServer
Installing ISPConfig crontab
no crontab for root
no crontab for getmail
Detect IP addresses
Restarting services ...
Installation completed.

Инсталятор автоматически сконфигурирует все основные сервисы.

После этого у нас появляется доступ к панели управления по таким линкам:

http(s)://ispconfig.example.com:8080/ or http(s)://192.168.100.100:8080/ ( http или https зависит от выбора во время инсталяции). Вход в систему с именем admin и паролем admin (вы можете изменить пароль после первого входа):

Вход в админпанель

Общий вид панели управления ISPconfig

Теперь система готова к использованию.

Установка PHP версий 5.6, 7.0-7.4 c PHP-FPM и FastCGI для ISPConfig 3.2 на Debian 10

В этом руководстве – установка мультиверсий РНР на ISPConfig Debian сервер. В последствии версии РНР выбираются в ISPConfig в настройках конкретного веб-сайта. Эта функция работает с php-fpm и FastCGI. Мы установим РНР 5.6 и 7.х на Debian сервер используя PHP пакеты из sury.org.

1. Предварительное замечание

Я устанавливаю РНР напрямую из РНР репозиториев для Debian’а с сайта https://packages.sury.org/php/ ичпользуя apt-get. Это не перепишет изначальную установку, но изменит используемую по умолчанию версию РНР на установленную в процессе. Это очень важно – добавление новой версии РНР к уже установленной в ISPConfig и изменение для всех сайтов. Если вы используете РНР-скрипты прописанные в планировщике cron – необходимо их соответственно адаптировать. Т.к. другие пакеты (типа openssl) буду так же обновлены. Пакеты, установленные с sury.org, не могут быть просто удалены после установки. Сначала необходимо сделать downgrade таких пакетов до версии Debian, перед тем как вы удалите пакеты РНР без остановки других пакетов. Самый простой путь деактивировать новые добавленные репозитории, тогда пакеты установленные с sury.org будут отображаться как самостоятельно созданные или устаревшие в менеджере пакетов aptitude, и вы сможете перейти на более раннюю версию пакета.

Обратите внимание, что PHP-FPM можно использовать как на серверах Apache, так и на Nginx. В тоже время FastCGI только на серверах Apache.

2. Активация версий РНР в ISPConfig’e

В ISPConfig 3 новые версии РНР добавляются в System > Additional PHP Versions.

Добваление новых версий РНР

Этот пункт можно пропустить, если в системе ещё нет установленных версий РНР.

Во первых, можно добавить имя уже установленной в системе версии РНР. Во вкладе Name необходимо написать название, так что б в будущем не путаться (например – РНР 5.6) – эта версия РНР будет в списке с этим именем в настройках веб-сайтов в ISPConfig:

Окно панели управления для обавления версий РНР

Переходим к вкладке FastCGI Settings и заполняем там соответсвующие поля таким образом:

Path to the PHP FastCGI binary: php-cgi5.6
Path to the php.ini directory: /etc/php/5.6/cgi/php.ini

Заполнение поля FastCGI Settings

Теперь переходим к последней вкладке PHP-FPM Settings и заполняем поля так:

Path to the PHP-FPM init script: php5.6-fpm
Path to the php.ini directory: /etc/php/5.6/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/5.6/fpm/pool.d

Заполнение полей в PHP-FPM Settings

Важное примечание для cron'а

Если у вас используются РНР-скрипты в cron – вам необходимо указать какой версии РНР будет использоваться. Добавте php5.6 в начале команды для использования Debian'овской версии. Если вы не уверены в версиях, можете использовать симлинк /usr/bin/php и использовать окончание в качестве префикса.

Добавляем другие версии РНР

На дамнный момент в https://packages.sury.org/php/ есть несколько версий РНР и вам надо повторить последние шаги соответсвенно для каждой из версий, которые вы хотите установить. Настройки для каждой из них ниже:

PHP 5.6:

ath to the PHP FastCGI binary: php-cgi5.6
Path to the php.ini directory: /etc/php/5.6/cgi/php.ini
Path to the PHP-FPM init script: php-fpm5.6
Path to the php.ini directory: /etc/php/5.6/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/5.6/fpm/pool.d

Название версии для задач cron'а php5.6.

PHP 7.0:

Path to the PHP FastCGI binary: php-cgi7.0
Path to the php.ini directory: /etc/php/7.0/cgi/php.ini
Path to the PHP-FPM init script: php-fpm7.0
Path to the php.ini directory: /etc/php/7.0/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/7.0/fpm/pool.d

Название версии для задач cron'а php7.0.

PHP 7.1:

Path to the PHP FastCGI binary: php-cgi7.1
Path to the php.ini directory: /etc/php/7.1/cgi/php.ini
Path to the PHP-FPM init script: php-fpm7.1
Path to the php.ini directory: /etc/php/7.1/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/7.1/fpm/pool.d

Название версии для задач cron'а php7.1.

PHP 7.2:

ath to the PHP FastCGI binary: php-cgi7.2
Path to the php.ini directory: /etc/php/7.2/cgi/php.ini
Path to the PHP-FPM init script: php-fpm7.2
Path to the php.ini directory: /etc/php/7.2/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/7.2/fpm/pool.d

Название версии для задач cron'а php7.2.

PHP 7.3:

Path to the PHP FastCGI binary: php-cgi7.3
Path to the php.ini directory: /etc/php/7.3/cgi/php.ini
Path to the PHP-FPM init script: php-fpm7.3
Path to the php.ini directory: /etc/php/7.3/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/7.3/fpm/pool.d

Название версии для задач cron'а php7.3.

PHP 7.4:

Path to the PHP FastCGI binary: php-cgi7.4
Path to the php.ini directory: /etc/php/7.4/cgi/php.ini
Path to the PHP-FPM init script: php-fpm7.4
Path to the php.ini directory: /etc/php/7.4/fpm/php.ini
Path to the PHP-FPM pool directory: /etc/php/7.4/fpm/pool.d

Название версии для задач cron'а php7.4.

3. Изменение версий РНР для сайтов

Теперь, когда в ISPConfig прописаны разные версии РНР:

список установленных версий PHP в ISP config

Для разных сайтов можно активировать разные версии в настройках конкретного сайта.

4. Добавляем репозиторий packages.sury.org

To add the repository at packages.sury.org and its BGP keys to apt use these commands:

apt-get install -y apt-transport-https lsb-release ca-certificates
wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

The next command is just one line, don't add any line breaks:

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list
apt-get update

To upgrade already installed packages from the new repository use this command:

apt-get upgrade

5. Устанавливаем РНР с packages.sury.org

Ниже приведены комплексные команды для установки разных версий РНР. Установите необходимое, остальное можно игнорировать.

5.1 Установим PHP 5.6

Для установки РНР используем такую команду:

apt-get install php5.6 php5.6-cli php5.6-cgi php5.6-fpm php5.6-gd php5.6-mysql php5.6-imap
php5.6-curl php5.6-intl php5.6-pspell php5.6-recode php5.6-sqlite3 php5.6-tidy php5.6-xmlrpc
php5.6-xsl php5.6-zip php5.6-mbstring php5.6-soap php5.6-opcache libicu65 php5.6-common
php5.6-json php5.6-readline php5.6-xml

5.2 Установим PHP 7.0

Для установки РНР используем такую команду:

apt-get install php7.0 php7.0-cli php7.0-cgi php7.0-fpm php7.0-gd php7.0-mysql php7.0-imap
php7.0-curl php7.0-intl php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc
php7.0-xsl php7.0-zip php7.0-mbstring php7.0-soap php7.0-opcache php7.0-common php7.0-json
php7.0-readline php7.0-xml

5.3 Установим PHP 7.1

Для установки РНР используем такую команду:

apt-get install php7.1 php7.1-cli php7.1-cgi php7.1-fpm php7.1-gd php7.1-mysql php7.1-imap
php7.1-curl php7.1-intl php7.1-pspell php7.1-recode php7.1-sqlite3 php7.1-tidy php7.1-xmlrpc
php7.1-xsl php7.1-zip php7.1-mbstring php7.1-soap php7.1-opcache php7.1-common php7.1-json
php7.1-readline php7.1-xml

5.4 Установим PHP 7.2

Для установки РНР используем такую команду:

apt-get install php7.2 php7.2-cli php7.2-cgi php7.2-fpm php7.2-gd php7.2-mysql php7.2-imap
php7.2-curl php7.2-intl php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc
php7.2-xsl php7.2-zip php7.2-mbstring php7.2-soap php7.2-opcache php7.2-common php7.2-json
php7.2-readline php7.2-xml

5.5 Установим PHP 7.3

Для установки РНР используем такую команду:

apt-get install php7.3 php7.3-cli php7.3-cgi php7.3-fpm php7.3-gd php7.3-mysql php7.3-imap
php7.3-curl php7.3-intl php7.3-pspell php7.3-recode php7.3-sqlite3 php7.3-tidy php7.3-xmlrpc
php7.3-xsl php7.3-zip php7.3-mbstring php7.3-soap php7.3-opcache php7.3-common php7.3-json
php7.3-readline php7.3-xml

5.6 Установим PHP 7.4

Для установки последней стабильной версии PHP используем такую команду:

apt-get install php7.4 php7.4-cli php7.4-cgi php7.4-fpm php7.4-gd php7.4-mysql php7.4-imap
php7.4-curl php7.4-intl php7.4-pspell php7.4-sqlite3 php7.4-tidy php7.4-xmlrpc php7.4-xsl
php7.4-zip php7.4-mbstring php7.4-soap php7.4-opcache libonig5 php7.4-common php7.4-json
php7.4-readline php7.4-xml

6. Установим Memcache (опционально)

Следующая команда установит Memcache:

apt-get install php-memcache php-memcached

7. Опционально можем утсановить APCu

Для установки АРС введем:

apt-get install php-apcu php-apcu-bc

8. Установка расширения xDebug (опционально)

Модкуль xDebug нужен для отладки РНР. Его установка необязательна.

Для установки модуля введем:

apt-get install php-xdebug

Этот пакет имеет немного другие настройки по умолчанию в отличии от стандартного Debian’овского php5-xdebug. В зависимости от вашего программного обеспечения необходимо будет изменить настройки типа xdebug.max_nesting_level что бы заработал модуль.

9. Вернем настройки РНР по умолчанию для Debian как в оригинальной версии

По умолчанию версия РНР операционной системы должна оставаться как в исходном варианте. Для этого сделаем следующее:

update-alternatives --config php
update-alternatives --config php-cgi

Для Debian 10, выберите версию 7.3, для Debian 9 - PHP 7.0, для Debian 8 - PHP 5.6 в появившемся диалоговом окне.

10. Перезапускаем FPM демон

В конце перезапускаем php-fpm демоны. Для этого запускаем команды для предварительно установленных версий РНР:

service php5.6-fpm restart
service php7.0-fpm restart
service php7.1-fpm restart
service php7.2-fpm restart
service php7.3-fpm restart
service php7.4-fpm restart

Теперь мы имеем панель управления хостингом ISPConfig 3 с мульти версией РНР

Наши услуги по аренде сервера и VPS хостингу включают базовое администрирование, поэтому если во время настройки сервера у вас возникнут вопросы, наша техническая поддержка готова прийти на помощь :).

Мы что-то пропустили или не указали? Напишите об этом в комментариях, мы с удовольствием ответим на них.

Подписывайтесь на наш телеграмм - канал t.me/freehostua, чтоб быть в курсе новых полезных материалов. Смотрите наш Youtube канал на youtube.com/freehostua.

Дата: 02.08.2021
Автор: Евгений
Голосование

Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:

comments powered by Disqus
navigate
go
exit
Спасибо, что выбираете FREEhost.UA