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

Как установить веб-сервер Apache на CentOS 7


Введение

HTTP-сервер Apache является наиболее широко используемым веб-сервером в мире. Он предоставляет множество мощных функций, включая динамически загружаемые модули, надежную поддержку мультимедиа и обширную интеграцию с другим популярным программным обеспечением.

В этом руководстве вы установите веб-сервер Apache с виртуальными хостами на свой сервер CentOS 7.

Предпосылки

Для завершения этого руководства вам потребуется следующее:

  • Пользователь без полномочий root с привилегиями sudo, настроенный на вашем сервере, настроенный в соответствии с руководством по начальной настройке сервера для CentOS 7.
  • Доменное имя, настроенное так, чтобы оно указывало на ваш сервер. Вы можете узнать, как указать домены для дроплетов DigitalOcean, следуя руководству «Как настроить имя хоста с помощью DigitalOcean».
  • Базовый брандмауэр, настроенный в соответствии с дополнительными рекомендуемыми действиями для новых серверов CentOS 7.

Шаг 1 — Установка Apache

Apache доступен в репозиториях программного обеспечения CentOS по умолчанию, что означает, что вы можете установить его с помощью менеджера пакетов yum.

Как пользователь sudo без полномочий root, настроенный в предварительных требованиях, обновите локальный индекс пакета Apache httpd, чтобы отразить последние изменения исходной ветки:

  1. sudo yum update httpd

После обновления пакетов установите пакет Apache:

  1. sudo yum install httpd

После подтверждения установки yum установит Apache и все необходимые зависимости.

Если вы выполнили руководство «Дополнительные рекомендуемые шаги для новых серверов CentOS 7», упомянутое в разделе «Предварительные требования», на вашем сервере будет установлен firewalld, и вам потребуется открыть порт 80 чтобы разрешить Apache обслуживать запросы по HTTP. Если вы еще этого не сделали, вы можете сделать это, включив службу http firewalld с помощью следующей команды:

  1. sudo firewall-cmd --permanent --add-service=http

Если вы планируете настроить Apache для доставки контента через HTTPS, вам также потребуется открыть порт 443, включив службу https:

  1. sudo firewall-cmd --permanent --add-service=https

Затем перезагрузите брандмауэр, чтобы применить эти новые правила:

  1. sudo firewall-cmd --reload

После перезагрузки брандмауэра вы готовы запустить службу и проверить веб-сервер.

Шаг 2 — Проверка вашего веб-сервера

Apache не запускается автоматически в CentOS после завершения установки. Вам нужно будет запустить процесс Apache вручную:

  1. sudo systemctl start httpd

Убедитесь, что служба запущена, с помощью следующей команды:

  1. sudo systemctl status httpd

Вы увидите статус active, когда служба запущена:

Output
Redirecting to /bin/systemctl status httpd.service ● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND ...

Как видно из этого вывода, служба успешно запущена. Однако лучший способ проверить это — запросить страницу у Apache.

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

Введите это в командной строке вашего сервера:

  1. hostname -I

Эта команда отобразит все сетевые адреса хоста, поэтому вы получите несколько IP-адресов, разделенных пробелами. Вы можете попробовать каждый из них в своем веб-браузере, чтобы увидеть, работают ли они.

В качестве альтернативы вы можете использовать curl, чтобы запросить свой IP-адрес с сайта icanhazip.com, который предоставит вам ваш общедоступный IPv4-адрес, видимый из другого места в Интернете:

  1. curl -4 icanhazip.com

Когда у вас есть IP-адрес вашего сервера, введите его в адресную строку браузера:

http://your_server_ip

Вы увидите стандартную веб-страницу CentOS 7 Apache:

Эта страница указывает на то, что Apache работает правильно. Он также включает некоторую базовую информацию о важных файлах Apache и расположении каталогов. Теперь, когда служба установлена и запущена, вы можете использовать различные команды systemctl для управления службой.

Шаг 3 — Управление процессом Apache

Теперь, когда ваш веб-сервер запущен и работает, давайте рассмотрим некоторые основные команды управления.

Чтобы остановить веб-сервер, введите:

  1. sudo systemctl stop httpd

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

  1. sudo systemctl start httpd

Чтобы остановить и снова запустить службу, введите:

  1. sudo systemctl restart httpd

Если вы просто вносите изменения в конфигурацию, Apache часто может перезагружаться без разрыва соединений. Для этого используйте эту команду:

  1. sudo systemctl reload httpd

По умолчанию Apache настроен на автоматический запуск при загрузке сервера. Если это не то, что вам нужно, отключите это поведение, набрав:

  1. sudo systemctl disable httpd

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

  1. sudo systemctl enable httpd

Apache теперь будет запускаться автоматически при повторной загрузке сервера.

Конфигурация по умолчанию для Apache позволит вашему серверу разместить один веб-сайт. Если вы планируете разместить несколько доменов на своем сервере, вам необходимо настроить виртуальные хосты на веб-сервере Apache.

Шаг 4 — Настройка виртуальных хостов (рекомендуется)

При использовании веб-сервера Apache вы можете использовать виртуальные хосты (аналогично блокам сервера в Nginx) для инкапсуляции деталей конфигурации и размещения более одного домена с одного сервера. На этом шаге вы настроите домен, который называется your_domain, но вы должны заменить его своим собственным доменным именем. Чтобы узнать больше о настройке доменного имени с помощью DigitalOcean, см. Наше введение в DNS DigitalOcean.

В Apache на CentOS 7 по умолчанию включен один серверный блок, настроенный для обслуживания документов из каталога /var/www/html. Хотя это хорошо работает для одного сайта, это может стать громоздким, если вы размещаете несколько сайтов. Вместо изменения /var/www/html вы создадите структуру каталогов в /var/www для сайта ваш_домен, оставив /var/www/html в качестве каталога по умолчанию, который будет обслуживаться, если запрос клиента не соответствует каким-либо другим сайтам.

Создайте каталог html для your_domain следующим образом, используя флаг -p для создания необходимых родительских каталогов:

  1. sudo mkdir -p /var/www/your_domain/html

Создайте дополнительный каталог для хранения лог-файлов сайта:

  1. sudo mkdir -p /var/www/your_domain/log

Затем назначьте владельца каталога html с помощью переменной окружения $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain/html

Убедитесь, что для вашего веб-корня установлены разрешения по умолчанию:

  1. sudo chmod -R 755 /var/www

Затем создайте образец страницы index.html с помощью vi или вашего любимого редактора:

  1. sudo vi /var/www/your_domain/html/index.html

Нажмите i, чтобы переключиться в режим INSERT, и добавьте в файл следующий образец HTML:

<html>
  <head>
    <title>Welcome to your website!</title>
  </head>
  <body>
    <h1>Success! The your_domain virtual host is working!</h1>
  </body>
</html>

Сохраните и закройте файл, нажав ESC, введя :wq и нажав ENTER.

Имея каталог вашего сайта и образец индексного файла, вы почти готовы к созданию файлов виртуального хоста. Файлы виртуального хоста определяют конфигурацию ваших отдельных сайтов и сообщают веб-серверу Apache, как реагировать на различные запросы домена.

Прежде чем создавать виртуальные хосты, вам необходимо создать каталог sites-available для их хранения. Вы также создадите каталог sites-enabled, который сообщает Apache, что виртуальный хост готов обслуживать посетителей. Каталог sites-enabled будет содержать символические ссылки на виртуальные хосты, которые мы хотим опубликовать. Создайте оба каталога с помощью следующей команды:

  1. sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Затем вы сообщите Apache искать виртуальные хосты в каталоге sites-enabled. Для этого отредактируйте основной файл конфигурации Apache и добавьте строку, объявляющую необязательный каталог для дополнительных файлов конфигурации:

  1. sudo vi /etc/httpd/conf/httpd.conf

Добавьте эту строку в конец файла:

IncludeOptional sites-enabled/*.conf

Сохраните и закройте файл, когда закончите добавлять эту строку. Теперь, когда у вас есть каталоги виртуальных хостов, вы создадите файл виртуального хоста.

Начните с создания нового файла в каталоге sites-available:

  1. sudo vi /etc/httpd/sites-available/your_domain.conf

Добавьте следующий блок конфигурации и измените домен your_domain на свое доменное имя:

<VirtualHost *:80>
    ServerName www.your_domain
    ServerAlias your_domain
    DocumentRoot /var/www/your_domain/html
    ErrorLog /var/www/your_domain/log/error.log
    CustomLog /var/www/your_domain/log/requests.log combined
</VirtualHost>

Это сообщит Apache, где найти корень, содержащий общедоступные веб-документы. Он также сообщает Apache, где хранить журналы ошибок и запросов для этого конкретного сайта.

Сохраните и закройте файл, когда закончите.

Теперь, когда вы создали файлы виртуального хоста, вы включите их, чтобы Apache знал, что их можно обслуживать для посетителей. Для этого создайте символическую ссылку для каждого виртуального хоста в каталоге sites-enabled:

  1. sudo ln -s /etc/httpd/sites-available/your_domain.conf /etc/httpd/sites-enabled/your_domain.conf

Теперь ваш виртуальный хост настроен и готов к работе с контентом. Перед перезапуском службы Apache убедитесь, что в SELinux установлены правильные политики для ваших виртуальных хостов.

Шаг 5 — Настройка разрешений SELinux для виртуальных хостов (рекомендуется)

SELinux настроен на работу с конфигурацией Apache по умолчанию. Поскольку вы настроили собственный каталог журналов в файле конфигурации виртуальных хостов, вы получите сообщение об ошибке, если попытаетесь запустить службу Apache. Чтобы решить эту проблему, вам нужно обновить политики SELinux, чтобы разрешить Apache писать в необходимые файлы. SELinux обеспечивает повышенную безопасность вашей среды CentOS 7, поэтому не рекомендуется полностью отключать модуль ядра.

Существуют разные способы установки политик в зависимости от потребностей вашей среды, поскольку SELinux позволяет вам настроить уровень безопасности. Этот шаг охватывает два метода настройки политик Apache: универсальный и для определенного каталога. Настройка политик для каталогов более безопасна и поэтому является рекомендуемым подходом.

Универсальная настройка политик Apache

Установка универсальной политики Apache сообщит SELinux об одинаковой обработке всех процессов Apache с помощью логического значения httpd_unified. Хотя этот подход более удобен, он не даст вам такого же уровня контроля, как подход, ориентированный на политику файлов или каталогов.

Выполните следующую команду, чтобы установить универсальную политику Apache:

  1. sudo setsebool -P httpd_unified 1

Команда setsebool изменяет логические значения SELinux. Флаг -P будет обновлять значение времени загрузки, сохраняя это изменение при перезагрузке. httpd_unified — это логическое значение, которое указывает SELinux рассматривать все процессы Apache как один и тот же тип, поэтому вы включили его со значением 1.

Настройка политик Apache в каталоге

Индивидуальная настройка разрешений SELinux для каталога /var/www/ваш_домен/log даст вам больше контроля над политиками Apache, но может также потребовать дополнительного обслуживания. Поскольку этот параметр не является универсальной настройкой политик, вам потребуется вручную установить тип контекста для любых новых каталогов журналов, указанных в конфигурациях вашего виртуального хоста.

Сначала проверьте тип контекста, который SELinux предоставил каталогу /var/www/ваш_домен/log:

  1. sudo ls -dZ /var/www/your_domain/log/

Эта команда выводит список и печатает контекст каталога SELinux. Вы увидите вывод, подобный следующему:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/your_domain/log/

Текущий контекст — httpd_sys_content_t, который сообщает SELinux, что процесс Apache может читать только файлы, созданные в этом каталоге. В этом руководстве вы измените тип контекста каталога /var/www/ваш_домен/log на httpd_log_t. Этот тип позволит Apache создавать и добавлять файлы журналов веб-приложений:

  1. sudo semanage fcontext -a -t httpd_log_t "/var/www/your_domain/log(/.*)?"

Затем используйте команду restorecon, чтобы применить эти изменения и сохранить их после перезагрузки:

  1. sudo restorecon -R -v /var/www/your_domain/log

Флаг -R запускает эту команду рекурсивно, что означает, что она обновит все существующие файлы для использования нового контекста. Флаг -v напечатает изменения контекста, сделанные командой. Вы увидите следующий вывод, подтверждающий изменения:

Output
restorecon reset /var/www/your_domain/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

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

  1. sudo ls -dZ /var/www/your_domain/log/

Вывод отражает обновленный тип контекста:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/your_domain/log

Теперь, когда в каталоге /var/www/ваш_домен/log используется тип httpd_log_t, вы готовы протестировать конфигурацию виртуального хоста.

Шаг 6 — Тестирование виртуального хоста (рекомендуется)

Как только контекст SELinux будет обновлен любым методом, Apache сможет записывать в каталог /var/www/ваш_домен/log. Теперь вы можете успешно перезапустить службу Apache:

  1. sudo systemctl restart httpd

Перечислите содержимое каталога /var/www/ваш_домен/log, чтобы увидеть, создал ли Apache файлы журнала:

  1. ls -lZ /var/www/your_domain/log

Вы увидите, что Apache смог создать файлы error.log и requests.log, указанные в конфигурации виртуального хоста:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log -rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Теперь, когда у вас настроен виртуальный хост и обновлены разрешения SELinux, Apache теперь будет обслуживать ваше доменное имя. Вы можете проверить это, перейдя по адресу http://ваш_домен, где вы должны увидеть что-то вроде этого:

Это подтверждает, что ваш виртуальный хост успешно настроен и обслуживает контент. Повторите шаги 4 и 5, чтобы создать новые виртуальные хосты с разрешениями SELinux для дополнительных доменов.

Заключение

В этом руководстве вы установили веб-сервер Apache и управляли им. Теперь, когда у вас установлен веб-сервер, у вас есть множество вариантов типа контента, который вы можете обслуживать, и технологий, которые вы можете использовать для создания более богатого опыта.

Если вы хотите создать более полный стек приложений, вы можете прочитать эту статью о том, как настроить стек LAMP в CentOS 7.