Настройка сервера · 6 min read · Sep 08, 2025

Настройка ISPConfig Perfect Multiserver на Ubuntu 20.04 и Debian 10

Этот учебник проведет вас через установку вашей собственной многосерверной конфигурации ISPConfig 3 с выделенными серверами для панели, веба, DNS, почты и веб-почты. Как DNS, так и почтовый сервер будут иметь зеркальный сервер для резервирования. Вы можете легко добавить больше серверов определенного типа позже.

Для настройки серверов будет использоваться официальный автоустановщик ISPConfig. В качестве операционной системы будет использоваться Debian 10. Руководство также было протестировано с Ubuntu 20.04.2.

Вы можете прочитать больше об автоустановщике здесь.

1. Предварительная заметка

Это будут хосты, которые мы устанавливаем:

host       FQDN                   IP  
panel      panel.example.com      10.0.64.12  
web01      web01.example.com      10.0.64.13  
mx1        mx1.example.com        10.0.64.14  
mx2        mx2.example.com        10.0.64.15  
ns1        ns1.example.com        10.0.64.16  
ns2        ns2.example.com        10.0.64.17  
webmail    webmail.example.com    10.0.64.18

Мы будем использовать примерные имена хостов, IP-адреса и диапазоны IP. Убедитесь, что вы изменили их соответственно в ваших командах/конфигурации.

Все серверы находятся в одной частной сети, но имеют свои собственные публичные IP. Если ваши серверы не имеют общей локальной сети, используйте их публичные IPv4 адреса.

Перед началом установки сервера настройте A и, при необходимости, AAAA запись, которая указывает на публичный IP-адрес вашего сервера. Например, если имя хоста - panel.example.com, а публичный IP - 11.22.33.44, вы должны настроить A запись для panel.example.com, указывающую на 11.22.33.44. Каждый сервер должен иметь свой собственный публичный IP и имя хоста. **

2. Установка мастер-сервера

Войдите как root или выполните

su -

чтобы стать пользователем root на вашем сервере перед тем, как продолжить. ВАЖНО: Вы должны использовать ‘su -‘, а не просто ‘su’, иначе ваша переменная PATH будет установлена неправильно Debian.

2.1 Настройка имени хоста и хостов

Имя хоста вашего сервера должно быть поддоменом, таким как “panel.example.com”. Не используйте имя домена без части поддомена, такое как “example.com”, в качестве имени хоста, так как это вызовет проблемы позже с вашей настройкой почты. Сначала вы должны проверить имя хоста в /etc/hosts и изменить его при необходимости. Строка должна выглядеть так: “IP-адрес - пробел - полное имя хоста, включая домен - пробел - часть поддомена”. Для нашего имени хоста panel.example.com файл должен выглядеть так (некоторые строки могут отличаться, это может различаться в зависимости от хостинг-провайдера):

nano /etc/hosts
127.0.0.1 localhost.localdomain   localhost  
# Эта строка должна быть изменена на каждом узле на правильное имя сервера:  
127.0.1.1 panel.example.com panel  
# Эти строки одинаковы на каждом узле:
10.0.64.12 panel.example.com panel  
10.0.64.13 web01.example.com web01  
10.0.64.14 mx1.example.com mx1  
10.0.64.15 mx2.example.com mx2  
10.0.64.16 ns1.example.com ns1  
10.0.64.17 ns2.example.com ns2  
10.0.64.18 webmail.example.com webmail

# Следующие строки желательны для хостов, поддерживающих IPv6
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

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

Затем отредактируйте файл /etc/hostname:

nano /etc/hostname

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

panel

Наконец, перезагрузите сервер, чтобы применить изменения:

systemctl reboot

Войдите снова и проверьте, правильно ли теперь имя хоста с помощью следующих команд:

hostname  
hostname -f

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

root@panel:~$ hostname  
panel  
root@panel:~$ hostname -f  
panel.example.com

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

wget -O - https://get.ispconfig.org | sh -s -- --no-mail --no-dns --use-php=system

Через некоторое время вы увидите:

WARNING! Этот скрипт перезагрузит ваш сервер полностью!  
Он должен быть запущен на свежез установленном сервере, и вся текущая конфигурация, которую вы сделали, скорее всего, будет потеряна!  
Введите 'yes', если вы действительно хотите продолжить:

Ответьте “yes” и нажмите Enter. Установщик теперь начнет.

Когда установка будет завершена, он покажет вам пароль администратора ISPConfig и пароль root MySQL вот так:

[INFO] Ваш пароль администратора ISPConfig: 5GvfSSSYsdfdYC  
[INFO] Ваш пароль root MySQL: kkAkft82d!kafMwqxdtYs

Убедитесь, что вы записали эту информацию, вместе с сервером, для которого они предназначены, так как вам понадобятся они позже.

2.2 Настройка удаленных пользователей MySQL для наших слейв-серверов

Мы войдем в MySQL, чтобы разрешить другим серверам подключаться к базе данных ISPConfig на этом узле во время установки, добавив записи пользователя root MySQL в главную базу данных для каждого имени хоста и IP-адреса слейв-сервера.

В терминале выполните

mysql -u root -p

Введите свой пароль MySQL, а затем выполните следующие команды:

CREATE USER 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.13' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.14' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.15' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.16' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.17' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'10.0.64.18' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'web01.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'mx2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns1.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'ns2.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;
CREATE USER 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword';  
GRANT ALL PRIVILEGES ON * . * TO 'root'@'webmail.example.com' IDENTIFIED BY 'myrootpassword' WITH GRANT OPTION MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0 ;

В приведенных выше SQL-командах замените IP-адреса (10.0.64.12 - 10.0.64.18) на IP-адреса ваших серверов, web01.example.com, mx1.example.com, mx2.example.com, ns1.example.com, ns2.example.com и webmail.example.com на имена хостов ваших серверов и myrootpassword на желаемый пароль root (хорошей практикой является использование разного пароля для каждого хоста. Запишите их, так как они понадобятся вам позже при установке или обновлении ваших слейв-серверов).

Когда это будет сделано, вы можете выйти из MySQL с помощью:

EXIT;

Теперь вы можете войти в ISPConfig на https://panel.example.com:8080 с именем пользователя admin и паролем, который показал вам установщик.

2.3 Настройка брандмауэра

Последнее, что нужно сделать, это настроить наш брандмауэр.

Войдите в интерфейс ISPConfig и перейдите в Система -> Брандмауэр. Затем нажмите “Добавить новую запись брандмауэра”.

Для сервера панели нам нужно открыть следующие порты:

TCP:

22,80,443,8080,8081

Никакие порты UDP не нужно открывать через интерфейс.

Мы также собираемся открыть порт 3306, который используется для MySQL, но только из нашей локальной сети по соображениям безопасности. Для этого выполните следующую команду из CLI, после того как изменение из панели ISPConfig будет распространено (когда красная точка исчезнет):

ufw allow from 10.0.64.0/24 to any port 3306 proto tcp

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

На следующем шаге мы установим веб-сервер.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.