Серверные технологии · 7 min read · Sep 11, 2025

Идеальный сервер CentOS 7.6 с Apache, PHP 7.2, Postfix, Dovecot, Pure-FTPD, BIND и ISPConfig 3.1

Этот учебник показывает установку ISPConfig 3.1 на сервере CentOS 7.6 (64Bit). ISPConfig — это панель управления веб-хостингом, которая позволяет вам настраивать следующие сервисы через веб-браузер: веб-сервер Apache, PHP 7.2, почтовый сервер Postfix, MySQL, сервер имен BIND, PureFTPd, SpamAssassin, ClamAV, Mailman и многие другие.

1 Требования

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

  • Минимальная серверная система CentOS 7.6. Это может быть сервер, установленный с нуля, как описано в нашем учебнике по минимальному серверу CentOS 7, или виртуальный сервер или корневой сервер от хостинг-компании, на котором установлена минимальная настройка CentOS 7.6.
  • Быстрое интернет-соединение.

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

В этом учебнике я использую имя хоста server1.example.com с IP-адресом 192.168.0.100 и шлюзом 192.168.0.1. Эти настройки могут отличаться у вас, поэтому вам нужно заменить их там, где это необходимо.

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 destination
Chain FORWARD (policy ACCEPT)  
target prot opt source destination
Chain 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 yum-utils

Если вы не настроили свою сетевую карту во время установки, вы можете сделать это сейчас. Запустите…

nmtui

… и перейдите к редактированию соединения:

Редактировать сетевое соединение

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

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

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

Установить маску подсети

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

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

Выйти из nmtui

Теперь вам следует выполнить

ifconfig

чтобы проверить, правильно ли установил установщик ваш IP-адрес:

[root@localhost ~]# ifconfig  
ens33: flags=4163 mtu 1500  
 inet 192.168.0.100 netmask 255.255.255.0 broadcast 192.168.0.255  
 inet6 fe80::20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x20  
 inet6 2003:c2:9731:a445:20c:29ff:fee5:5b47 prefixlen 64 scopeid 0x0  
 ether 00:0c:29:e5:5b:47 txqueuelen 1000 (Ethernet)  
 RX packets 227784 bytes 317714901 (302.9 MiB)  
 RX errors 0 dropped 0 overruns 0 frame 0  
 TX packets 205574 bytes 23608521 (22.5 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 1 (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  
  
[root@localhost ~]#

Если ваша сетевая карта не отображается там, значит, она не включена при загрузке. В этом случае откройте файл /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/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
192.168.0.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, которое должно обеспечивать расширенную безопасность. ISPConfig не поставляется с набором правил SELinux, поэтому я устанавливаю его в режим разрешения (это обязательно, если вы хотите установить ISPConfig позже).

Отредактируйте /etc/selinux/config и установите SELINUX=permissive:

nano /etc/selinux/config
# Этот файл управляет состоянием SELinux в системе.  
# SELINUX= может принимать одно из этих трех значений:  
#     enforcing - Политика безопасности SELinux применяется.  
#     permissive - SELinux выводит предупреждения вместо применения.  
#     disabled - Политика SELinux не загружена.  
SELINUX=permissive  
# SELINUXTYPE= может принимать одно из этих двух значений:  
#     targeted - Защищены целевые процессы,  
#     mls - Защита многоуровневой безопасности.  
SELINUXTYPE=targeted

После этого нам нужно перезагрузить систему:

reboot

4 Включение дополнительных репозиториев и установка программного обеспечения

Сначала мы импортируем GPG-ключи для программных пакетов:

rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY*

Затем мы включаем репозиторий EPEL в нашей системе CentOS, так как многие из пакетов, которые мы собираемся установить в ходе этого учебника, недоступны в официальном репозитории CentOS 7:

yum -y install epel-release

Затем мы обновляем наши существующие пакеты в системе:

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 /var
quotacheck -avugm  
quotaon -avug

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

6 Установка Apache, PHP, MySQL и phpMyAdmin

Включите репозиторий Remi, чтобы получить более новые версии PHP:

yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpm  
yum-config-manager --enable remi-php72

Мы можем установить необходимые пакеты одной командой:

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
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.