Серверы · 7 min read · Sep 22, 2025

Идеальный сервер – CentOS 7 (Apache2, Dovecot, ISPConfig 3)

Этот учебник показывает, как подготовить сервер CentOS 7 x86_64 для установки ISPConfig 3 и как установить ISPConfig 3. ISPConfig 3 – это панель управления веб-хостингом, которая позволяет настраивать следующие службы через веб-браузер: веб-сервер Apache, почтовый сервер Postfix, MySQL, сервер имен BIND, PureFTPd, SpamAssassin, ClamAV, Mailman и многие другие. Начиная с версии 3.0.4, ISPConfig полностью поддерживает веб-сервер nginx в дополнение к Apache; этот учебник охватывает настройку сервера, который использует Apache, а не nginx.

Руководство ISPConfig 3

Чтобы узнать, как использовать ISPConfig 3, я настоятельно рекомендую скачать Руководство ISPConfig 3.

На более чем 300 страницах оно охватывает концепцию ISPConfig (администраторы, реселлеры, клиенты), объясняет, как установить и обновить ISPConfig 3, включает справочник для всех форм и полей форм в ISPConfig вместе с примерами допустимых вводов и предоставляет учебники для самых распространенных задач в ISPConfig 3. Оно также описывает, как сделать ваш сервер более безопасным, и содержит раздел по устранению неполадок в конце.

1 Требования

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

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

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

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

3 Установите раскладку клавиатуры

Текущий установщик CentOS 7 имеет ошибку, поэтому вы можете получить другую раскладку клавиатуры в оболочке, чем ту, что была выбрана во время установки. Если вы столкнулись с этой ошибкой, вы можете переключиться на правильную раскладку клавиатуры (в моем случае “de” для немецкой раскладки клавиатуры) с помощью команды localectl:

localectl set-keymap de

Чтобы получить список всех доступных раскладок клавиатуры, выполните:

localectl list-keymaps

Я хочу установить ISPConfig в конце этого учебника, который поставляется с собственным файрволом. Поэтому я сейчас отключаю стандартный файрвол CentOS. Конечно, вы можете оставить его включенным и настроить его по своему усмотрению (но тогда вам не следует использовать какой-либо другой файрвол позже, так как он, скорее всего, будет мешать файрволу CentOS).

Выполните…

systemctl stop firewalld.service  
systemctl disable firewalld.service

Теперь я установлю некоторые основные сетевые инструменты и текстовый редактор на основе оболочки, которые нам понадобятся на следующих этапах:

yum -y install nano wget net-tools 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-серверы снова.

Теперь перейдем к настройке…

4 Настройка /etc/hosts

Далее мы редактируем /etc/hosts. Сделайте его таким:

nano /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4  
192.168.1.100   server1.example.com     server1  
  
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

5 Настройка файрвола

(Вы можете пропустить эту главу, если вы уже отключили файрвол в конце базовой установки системы.)

Я хочу установить ISPConfig в конце этого учебника, который поставляется с собственным файрволом. Поэтому я сейчас отключаю стандартный файрвол CentOS. Конечно, вы можете оставить его включенным и настроить его по своему усмотрению (но тогда вам не следует использовать какой-либо другой файрвол позже, так как он, скорее всего, будет мешать файрволу CentOS).

Выполните

systemctl stop firewalld.service  
systemctl disable firewalld.service

и отключите файрвол.

Чтобы проверить, что файрвол действительно был отключен, вы можете выполнить

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 ~]#

6 Отключение 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

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

reboot

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

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

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

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

rpm -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-2.noarch.rpm
yum -y install yum-priorities

Отредактируйте /etc/yum.repos.d/epel.repo…

nano /etc/yum.repos.d/epel.repo

… и добавьте строку priority=10 в секцию [epel]:

[epel]
name=Дополнительные пакеты для 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 update

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

yum -y groupinstall 'Development Tools'

8 Квота

(Если вы выбрали другую схему разбиения, чем я, вам нужно будет отредактировать эту главу, чтобы квота применялась к разделам, где она вам нужна.)

Чтобы установить квоту, мы выполняем эту команду:

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="rd.lvm.lv=centos/swap vconsole.font=latarcyrheb-sun16 rd.lvm.lv=centos/root crashkernel=auto  vconsole.keymap=us 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

чтобы включить квоту.

9 Установка Apache, MySQL, phpMyAdmin

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

yum -y install ntp httpd mod_ssl mariadb-server php php-mysql php-mbstring phpmyadmin
Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.