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

Вступление

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

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

Предпосылки

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

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

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

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

sudo yum update httpd

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

sudo yum install httpd

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

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

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

sudo systemctl start httpd

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

sudo systemctl status httpd

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

OutputRedirecting 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:  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-адрес вашего сервера, вы можете получить его несколькими способами из командной строки.

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

hostname -I

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

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

curl -4 icanhazip.com

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

http://

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

изображение: https: //assets.digitalocean.com/articles/CART-65406/apache_default_page.png [Страница Apache по умолчанию для CentOS 7]

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

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

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

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

sudo systemctl stop httpd

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

sudo systemctl start httpd

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

sudo systemctl restart httpd

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

sudo systemctl reload httpd

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

sudo systemctl disable httpd

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

sudo systemctl enable httpd

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

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

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

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

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

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

sudo mkdir -p /var/www//html

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

sudo mkdir -p /var/www//log

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

sudo chown -R $USER:$USER /var/www//html

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

sudo chmod -R 755 /var/www

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

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

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

/var/www/example.com/html/index.html

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

Сохраните и закройте файл, нажав + ESC, набрав` +: w + и нажав + ENTER`.

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

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

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

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

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

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

IncludeOptional sites-enabled/*.conf

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

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

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

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

/etc/httpd/sites-available/example.com.conf

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

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

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

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

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

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

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

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

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

Корректировка политик Apache универсально

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

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

sudo setsebool -P httpd_unified 1

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

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

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

Во-первых, проверьте тип контекста, который SELinux дал директории + / var / www // log +:

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log/

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

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

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

sudo restorecon -R -v /var/www//log

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

Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r::s0->unconfined_u:object_r::s0

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

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log

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

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

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

sudo systemctl restart httpd

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

ls -lZ /var/www//log

Вы увидите, что Apache смог создать файлы + error.log + и + reports.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: // +, где вы должны увидеть что-то вроде этого:

Изображение: https: //assets.digitalocean.com/articles/CART-65406/virtual_host_success.png [Success! Виртуальный хост example.com работает!]

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

Заключение

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

Если вы хотите создать более полный стек приложений, вы можете посмотреть в этой статье, как настроить https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql -php-lamp-stack-on-centos-7 # step-four-% E2% 80% 94-test-php-processing-on-your-web-сервер [стек LAMP в CentOS 7].

Related