Серверные технологии · 7 min read · Sep 23, 2025
Идеальный сервер CentOS 7.3 с Apache, Postfix, Dovecot, Pure-FTPD, BIND и ISPConfig 3.1
Этот учебник показывает установку ISPConfig 3.1 на сервере CentOS 7.3 (64Bit). ISPConfig — это панель управления веб-хостингом, которая позволяет вам настраивать следующие службы через веб-браузер: веб-сервер Apache, почтовый сервер Postfix, MySQL, сервер имен BIND, PureFTPd, SpamAssassin, ClamAV, Mailman и многие другие.
1 Требования
Для установки такой системы вам понадобятся следующие компоненты:
- Минимальная серверная система CentOS 7.3. Это может быть сервер, установленный с нуля, как описано в нашем учебнике по минимальному серверу CentOS 7.3, или виртуальный сервер или корневой сервер от хостинг-компании, на котором установлена минимальная конфигурация CentOS 7.3.
- Быстрое интернет-соединение.
2 Предварительная заметка
В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.1.100 и шлюзом 192.168.1.1. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их там, где это необходимо.
Пожалуйста, обратите внимание, что HHVM и XMPP еще не поддерживаются в ISPConfig для платформы CentOS. Если вы хотите управлять сервером чата XMPP из ISPConfig или использовать HHVM (Hip Hop Virtual Machine) на сайте ISPConfig, то, пожалуйста, используйте Debian 8 или Ubuntu 16.04 в качестве операционной системы сервера вместо CentOS 7.3.
3 Подготовка сервера
Установите раскладку клавиатуры
В случае, если раскладка клавиатуры сервера не соответствует вашей клавиатуре, вы можете переключиться на правильную раскладку (в моем случае “de” для немецкой раскладки клавиатуры) с помощью команды localectl:
localectl set-keymap deЧтобы получить список всех доступных раскладок, выполните:
localectl list-keymapsЯ хочу установить ISPConfig в конце этого учебника, ISPConfig поставляется со скриптом брандмауэра Bastille, который я буду использовать в качестве брандмауэра, поэтому я сейчас отключаю брандмауэр CentOS по умолчанию. Конечно, вы можете оставить брандмауэр CentOS включенным и настроить его по своим нуждам (но тогда вам не следует использовать какой-либо другой брандмауэр позже, так как он, скорее всего, будет мешать брандмауэру CentOS).
Выполните…
yum -y install net-tools
systemctl stop firewalld.service
systemctl disable firewalld.serviceчтобы остановить и отключить брандмауэр CentOS. Это нормально, если вы получите ошибки здесь, это просто указывает на то, что брандмауэр не был установлен.
Затем вам следует проверить, что брандмауэр действительно был отключен. Для этого выполните команду:
iptables -LВывод должен выглядеть так:
[root@server1 ~]# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destinationChain FORWARD (policy ACCEPT)
target prot opt source destinationChain OUTPUT (policy ACCEPT)
target prot opt source destinationИли используйте команду firewall-cmd:
firewall-cmd --state[root@server1 ~]# firewall-cmd --state
not running
[root@server1 ~]#Теперь я установлю редактор конфигурации сети и текстовый редактор “nano”, который я буду использовать на следующих шагах для редактирования конфигурационных файлов:
yum -y install nano wget NetworkManager-tuiЕсли вы не настроили свою сетевую карту во время установки, вы можете сделать это сейчас. Выполните…
nmtui… и перейдите к редактированию соединения:

Выберите ваш сетевой интерфейс:

Затем заполните свои сетевые данные - отключите DHCP и заполните статический IP-адрес, маску подсети, ваш шлюз и один или два DNS-сервера, затем нажмите ОК:

Далее выберите ОК, чтобы подтвердить изменения, которые вы внесли в сетевые настройки

и Выйти, чтобы закрыть инструмент конфигурации сети nmtui.

Теперь вам следует выполнить
ifconfigчтобы проверить, правильно ли установил установщик ваш IP-адрес:
[root@server1 ~]# ifconfig
ens33: flags=4163 mtu 1500
inet 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fecd:cc52 prefixlen 64 scopeid 0x20
ether 00:0c:29:cd:cc:52 txqueuelen 1000 (Ethernet)
RX packets 55621 bytes 79601094 (75.9 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 28115 bytes 2608239 (2.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73 mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10
loop txqueuelen 0 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 Если ваша сетевая карта не отображается там, значит, она не включена при загрузке. В этом случае откройте файл /etc/sysconfig/network-scripts/ifcfg-eth0
nano /etc/sysconfig/network-scripts/ifcfg-ens33и установите ONBOOT в yes:
[...]
ONBOOT=yes
[...] и перезагрузите сервер.
Проверьте ваш /etc/resolv.conf, если он содержит все DNS-серверы, которые вы ранее настроили:
cat /etc/resolv.confЕсли DNS-серверы отсутствуют, выполните
nmtuiи добавьте отсутствующие DNS-серверы снова.
Теперь перейдем к конфигурации…
Настройка /etc/hosts и /etc/hostname
Далее мы отредактируем /etc/hosts. Сделайте его таким:
nano /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
192.168.1.100 server1.example.com server1
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6Установите имя хоста в файле /etc/hostname. Файл должен содержать полное доменное имя (например, server1.example.com в моем случае), а не только короткое имя, такое как “server1”. Откройте файл с помощью редактора nano:
nano /etc/hostnameИ установите имя хоста в файле.
server1.example.comСохраните файл и выйдите из nano.
Отключите SELinux
SELinux — это расширение безопасности CentOS, которое должно обеспечивать повышенную безопасность. На мой взгляд, вам не нужно это для настройки безопасной системы, и оно обычно вызывает больше проблем, чем преимуществ (подумайте об этом после того, как вы провели неделю, устраняя неполадки, потому что какая-то служба не работала так, как ожидалось, и затем вы обнаружите, что все было в порядке, только SELinux вызывал проблему). Поэтому я отключаю его (это обязательно, если вы хотите установить ISPConfig позже).
Отредактируйте /etc/selinux/config и установите SELINUX=disabled:
nano /etc/selinux/config# Этот файл управляет состоянием SELinux в системе.
# SELINUX= может принимать одно из этих трех значений:
# enforcing - Политика безопасности SELinux применяется.
# permissive - SELinux выводит предупреждения вместо применения.
# disabled - Политика SELinux не загружена.
SELINUX=disabled
# SELINUXTYPE= может принимать одно из этих двух значений:
# targeted - Защищены целевые процессы,
# mls - Защита многоуровневой безопасности.
SELINUXTYPE=targetedПосле этого нам нужно перезагрузить систему:
reboot4 Включите дополнительные репозитории и установите программное обеспечение
Сначала мы импортируем GPG-ключи для программных пакетов:
rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*Затем мы включаем репозиторий EPEL в нашей системе CentOS, так как многие из пакетов, которые мы собираемся установить в ходе этого учебника, недоступны в официальном репозитории CentOS 7:
yum -y install epel-releaseyum -y install yum-prioritiesОтредактируйте /etc/yum.repos.d/epel.repo…
nano /etc/yum.repos.d/epel.repo… и добавьте строку priority=10 в секцию [epel]:
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
#baseurl=http://download.fedoraproject.org/pub/epel/7/$basearch
mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
priority=10
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
[...]Затем мы обновляем наши существующие пакеты в системе:
yum -y updateТеперь мы устанавливаем некоторые программные пакеты, которые понадобятся позже:
yum -y groupinstall 'Development Tools'5 Квота
(Если вы выбрали другую схему разбиения, чем я, вам нужно будет настроить эту главу так, чтобы квота применялась к разделам, где она вам нужна.)
Чтобы установить квоту, мы выполняем эту команду:
yum -y install quotaТеперь мы проверяем, включена ли квота для файловой системы, где хранятся данные веб-сайта (/var/www) и почтового ящика (var/vmail). В этом примере у меня один большой корневой раздел, поэтому я ищу ‘ / ‘:
mount | grep ' / '[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,noquota)
[root@server1 ~]#Если у вас есть отдельный раздел /var, то используйте:
mount | grep ' /var 'вместо этого. Если строка содержит слово “ noquota “, то продолжайте с следующими шагами, чтобы включить квоту.
Включение квоты на корневом разделе / (root)
Обычно вы включаете квоту в файле /etc/fstab, но если файловая система является корневой файловой системой “/“, то квота должна быть включена с помощью параметра загрузки ядра Linux.
Отредактируйте файл конфигурации grub:
nano /etc/default/grubпоиск строки, которая начинается с GRUB_CMDLINE_LINUX и добавьте rootflags=uquota,gquota к параметрам командной строки, чтобы результирующая строка выглядела так:
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet rootflags=uquota,gquota"и примените изменения, выполнив следующую команду.
cp /boot/grub2/grub.cfg /boot/grub2/grub.cfg_bak
grub2-mkconfig -o /boot/grub2/grub.cfgи перезагрузите сервер.
rebootТеперь проверьте, включена ли квота:
mount | grep ' / '[root@server1 ~]# mount | grep ' / '
/dev/mapper/centos-root on / type xfs (rw,relatime,attr2,inode64,usrquota,grpquota)
[root@server1 ~]#Когда квота активна, мы можем видеть “ usrquota,grpquota “ в списке опций монтирования.
Включение квоты на отдельном разделе /var
Если у вас есть отдельный раздел /var, то отредактируйте /etc/fstab и добавьте,uquota,gquota к разделу / ( /dev/mapper/centos-var):
nano /etc/fstab
#
# /etc/fstab
# Создано anaconda в Вск Сен 21 16:33:45 2014
#
# Доступные файловые системы, по ссылке, поддерживаются в '/dev/disk'
# См. страницы man fstab(5), findfs(8), mount(8) и/или blkid(8) для получения дополнительной информации
#
/dev/mapper/centos-root / xfs defaults 1 1
/dev/mapper/centos-var /var xfs defaults,uquota,gquota 1 2
UUID=9ac06939-7e43-4efd-957a-486775edd7b4 /boot xfs defaults 1 3
/dev/mapper/centos-swap swap swap defaults 0 0Затем выполните
mount -o remount /varquotacheck -avugm
quotaon -avugчтобы включить квоту. Если вы получите ошибку о том, что нет раздела с включенной квотой, то перезагрузите сервер, прежде чем продолжить.
6 Установите Apache, MySQL, phpMyAdmin
Мы можем установить необходимые пакеты одной командой:
yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadminЧтобы убедиться, что сервер не может быть атакован через уязвимость HTTPOXY, мы отключим заголовок HTTP_PROXY в apache глобально.
Добавьте правило заголовка apache в конец файла httpd.conf:
echo "RequestHeader unset Proxy early" >> /etc/httpd/conf/httpd.confИ перезапустите httpd, чтобы применить изменение конфигурации.
service httpd restart Get new posts in your inbox
No spam. Unsubscribe anytime.