Назад в блог

Установка Apache Web Server на CentOS 7

Установка Apache Web Server на CentOS 7

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

Если вы хотите установить Apache на систему CentOS 7, это руководство для вас. Кроме того, вы узнаете, как создавать виртуальные хосты, чтобы вы могли обслуживать несколько веб-сайтов на одном HTTP-сервере Apache, работающем на CentOS.

Это подробное руководство, посвященное только установке Apache. Если вы искали краткое руководство по стеку LAMP, у нас есть руководство Как установить Linux, Apache, MySQL, PHP (LAMP) на CentOS 7, с которым вы можете ознакомиться. Итак, начнем!

Предварительные требования

Поскольку это практическое руководство, у вас должно быть следующее:

Шаг 1: Установка HTTP-сервера Apache

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

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

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

Если вы выполнили шаги из руководства по Настройке брандмауэра с помощью FirewallD на CentOS 7 и включили брандмауэр для порта 80, то все готово. Firewalld — это менеджер брандмауэра для CentOS. В противном случае вы можете включить службу http (порт 80) в firewalld, введя следующую команду:

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

Наконец, вам необходимо перезагрузить firewalld, чтобы изменения вступили в силу. Вот команда для перезагрузки:

На данном этапе вы установили и настроили Apache для обслуживания трафика по протоколу HTTP или HTTPS, в зависимости от того, выполняли ли вы команды выше.

Шаг 2: Проверка работы веб-сервера Apache

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

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

Если служба запущена, вы должны увидеть вывод, похожий на скриншот ниже. Обратите внимание на статус active:

httpd status

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

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

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

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

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

web server home page

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

Шаг 3. Управление службой Apache

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

Вот команда для запуска веб-сервера:

Далее приведена команда для перезапуска веб-сервера (остановка и запуск):

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

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

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

Шаг 4. Настройка виртуальных хостов Apache

По умолчанию Apache настроен для размещения и обслуживания одного веб-сайта. В большинстве случаев вам потребуется, чтобы ваш веб-сервер обслуживал и размещал несколько веб-сайтов. Например, у вас могут быть поддомены или вы захотите настроить страницу блога для основного веб-сайта вашей компании/организации. Именно здесь на помощь приходят виртуальные хосты Apache. Виртуальные хосты Apache позволяют настроить веб-сервер для обслуживания нескольких веб-сайтов. Виртуальные хосты Apache являются эквивалентом серверных блоков в сервере Nginx

В этом руководстве мы покажем вам, как создать виртуальный хост, используя example.com в качестве нашего домена. Конечно, домен example.com не будет работать в Интернете, поэтому вам следует заменить его вашим реальным доменом — шаги будут теми же. 

При установке Apache на CentOS устанавливается один виртуальный хост, настроенный для обслуживания контента из каталога /var/www/html. Эта схема хорошо работает, если вы размещаете один сайт. Однако мы хотим иметь возможность размещать несколько сайтов. Мы оставим каталог по умолчанию /var/www/html и вместо этого создадим другой каталог для домена example.com внутри местоположения /var/www. Причина сохранения каталога по умолчанию заключается в том, чтобы он использовался, когда запросы клиентов не соответствуют никаким другим сайтам, настроенным вами с помощью виртуальных хостов. Кроме того, если вы захотите отключить созданные вами виртуальные хосты, каталог по умолчанию продолжит обслуживать трафик. 

Сначала создайте каталог внутри /var/www для вашего доменного имени. Вы можете выбрать любое имя по своему усмотрению. Однако рекомендуется выбрать имя, похожее на ваш домен, чтобы его было легко запомнить при создании файла виртуального хоста conf файла. Введите следующую команду, чтобы создать каталог example:

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

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

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

Теперь создайте простой index.html файл с помощью nano внутри каталога example, введя следующую команду:

В редакторе nano добавьте следующий фрагмент HTML-кода:

После завершения сохраните файл, нажав Ctrl O и нажмите ENTER. Теперь вы можете закрыть редактор, нажав Ctrl X

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

Файлы виртуального хоста хранятся в каталоге /etc/httpd/sites-available. На активированные файлы виртуального хоста создаются символические ссылки из каталога /etc/httpd/sites-available в каталог /etc/httpd/sites-enabled каталог. Эти два каталога не создаются по умолчанию в CentOS, поэтому вам придется создать их самостоятельно. Введите следующую команду для создания каталогов:

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

Мы хотим добавить строку, которая укажет Apache искать дополнительные конфигурационные файлы в необязательном каталоге. Прокрутите файл до самого низа и добавьте в конец следующую строку:

Сохраните файл, нажав Ctrl O и нажмите ENTER. Теперь вы можете закрыть редактор, нажав Ctrl X. Следующим шагом является создание файла виртуального хоста внутри каталога sites-available. Введите следующую команду, чтобы создать и открыть новый файл в редакторе nano:

В открывшемся файле добавьте следующий блок конфигурации. Не забудьте заменить наш example.com на ваше реальное доменное имя, и если вы использовали другое имя каталога в /var/www/example, также обновите его соответствующим образом: 

Как видите, мы указали доменное имя и корневой каталог документов, где будут находиться файлы, обслуживаемые для этого домена. Мы также указали расположение журнала ошибок — это поможет вам при устранении неполадок на сервере. 

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

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

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

Дистрибутивы Linux, включая Fedora, RHEL и CentOS поставляются с SELinux по умолчанию. SELinux (Security Enhanced Linux) — это архитектура безопасности для систем Linux, которая ограничивает и определяет, как сервер должен обрабатывать запросы и как пользователи должны взаимодействовать с сокетами, сетевыми портами и важными каталогами. 

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

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

У вас есть два варианта обновления политик Apache: либо Глобально или для конкретного каталога. Обновление политик для конкретного каталога является более безопасным. Поэтому это рекомендуемый вариант. 

  • Глобальное обновление политик Apache

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

Давайте разберем, что делают значения в этой команде:

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

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

Перед обновлением политики сначала проверьте тип контекста, который SELinux назначил каталогу /var/www/example/log, с помощью следующей команды:

Команда выведет примерно следующее, что по сути является контекстом SELinux для этого каталога:

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

Чтобы применить изменения из приведенной выше команды и сохранить их после перезагрузки, выполните следующую команду:

Давайте разберем, что делает эта команда:

  • restorecon – применяет изменения и обеспечивает их сохранение после перезагрузки.
  • Флаг -R – запускает команду рекурсивно, обновляя любые существующие файлы для использования нового контекста.
  • Флаг -v – выводит изменения контекста после выполнения команды. Вывод будет выглядеть примерно так:
Чтобы просмотреть изменения контекста, вы можете снова запустить следующую команду:
В выводе вы должны увидеть обновленный тип контекста:
Теперь, когда политики каталогов SELinux обновлены, чтобы разрешить Apache запись в каталог логов, мы можем протестировать виртуальный хост. 

Шаг 6. Тестирование конфигурации виртуального хоста

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

Затем выведите содержимое каталога логов с помощью следующей команды:

Должно отобразиться что-то подобное, показывающее, что Apache создал файлы логов: 

list log files web server

Если вы следовали инструкциям до этого момента, Apache теперь должен иметь возможность отдавать тестовую HTML-страницу при переходе по вашему доменному имени, определенному в файле виртуального хоста. При желании вы можете повторить шаги 4 и 5 для настройки дополнительных доменов и соответствующего обновления их разрешений SELinux.

Заключение

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

Если вы хотите изучить полноценный веб-стек, ознакомьтесь с нашим руководством по установке стека LAMP на CentOS 7

Приятной работы!

author

Akshay Nagpal

Автор · CloudSigma

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

Комментарии

Комментариев пока нет. Будьте первым.