Настройка сервера · 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/hosts127.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Ваша панель теперь настроена и готова к использованию.
На следующем шаге мы установим веб-сервер.
Get new posts in your inbox
No spam. Unsubscribe anytime.