Поиск по сайту:

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


Это руководство существует для этих версий ОС

  • ЦентрОС 7

На этой странице

  1. 1 Требования
  2. 2 Предварительное примечание
  3. 3 Подготовьте сервер
  4. 4 Включить дополнительные репозитории и установить некоторое программное обеспечение
  5. 5 Квота
    1. Включение квоты для/(корневого) раздела
    2. Включение квоты для отдельного раздела /var

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

    1 Требования

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

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

    2 Предварительное примечание

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

    Обратите внимание, что HHVM и XMPP пока не поддерживаются в ISPConfig для платформы CentOS. Если вы хотите управлять сервером чата XMPP из ISPConfig или использовать HHVM (виртуальную машину хип-хопа) на веб-сайте ISPConfig, используйте Debian или Ubuntu 16.04 в качестве серверной ОС вместо CentOS 7.4.

    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

    Вывод должен выглядеть так:

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

    Теперь я установлю редактор конфигурации сети и редактор на основе оболочки \nano\, которые я буду использовать в следующих шагах для редактирования файлов конфигурации:

    yum -y install nano wget NetworkManager-tui

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

    nmtui

    ... и перейдите к Редактировать соединение:

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

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

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

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

    Вы должны бежать

    ifconfig

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

    [ ~]#

    Если ваша сетевая карта там не отображается, значит она не включается при загрузке. В этом случае откройте файл /etc/sysconfig/network-scripts/ifcfg-eth0

    nano /etc/sysconfig/network-scripts/ifcfg-ens33

    и установите для ONBOOT значение yes:

    [...]
    ONBOOT=yes
    [...]

    и перезагрузите сервер.

    Проверьте свой /etc/resolv.conf, если в нем перечислены все серверы имен, которые вы предварительно настроили:

    cat /etc/resolv.conf

    Если серверы имен отсутствуют, запустите

    nmtui

    и снова добавьте отсутствующие серверы имен.

    Теперь о конфигурации...

    Настройка /etc/hosts и /etc/hostname

    Далее мы отредактируем /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

    Задайте имя хоста в файле /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
    # This file controls the state of SELinux on the system.
    # SELINUX= can take one of these three values:
    #     enforcing - SELinux security policy is enforced.
    #     permissive - SELinux prints warnings instead of enforcing.
    #     disabled - No SELinux policy is loaded.
    SELINUX=disabled
    # SELINUXTYPE= can take one of these two values:
    #     targeted - Targeted processes are protected,
    #     mls - Multi Level Security protection.
    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 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 ' / '
    [ ~]#

    Если у вас есть отдельный раздел /var, используйте:

    mount | grep ' /var '

    вместо. Если строка содержит слово \noquota\, выполните следующие действия, чтобы включить квоту.

    Включение квоты на/(корневой) раздел

    Обычно вы включаете квоту в файле /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 ' / '
    [ ~]#

    Когда квота активна, мы можем видеть «usrquota,grpquota» в списке опций монтирования.

    Включение квоты для отдельного раздела /var

    Если у вас есть отдельный раздел /var, отредактируйте /etc/fstab и добавьте ,uquota,gquota в раздел/(/dev/mapper/centos-var):

    nano /etc/fstab

    #
    # /etc/fstab
    # Created by anaconda on Sun Sep 21 16:33:45 2014
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /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, 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