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


Дата публикации:8 декабря 2020 года.



INFOMARTION > Требуется начальная настройка от установки Apache на CentOS до запуска.

Обзор.

Шаги начальной настройки, необходимые для установки и запуска Apache на CentOS. Информация основана на предположении, что используется CentOS7.

Версии следующие.

Версия CentOS7.6 (1810)
Версия Apache2.4.6

Оглавление

  1. установить
  2. базовая настройка
  3. резюме

1. установить

В этом разделе описывается конфигурация Apache от установки до запуска.

1-1. Установка Apache

Выполните установку Apache с помощью команды yum. Выполните работу от имени пользователя root.

[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd

1-2. Проверка запуска (доступ по http)

Кратко проверьте, есть ли к нему доступ. Установка Apache (httpd) с помощью команды yum включает команду apachectl. Используйте это для запуска Apache.

[root@hostname ~]# apachectl start
[root@hostname ~]# apachectl status
* httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
   Active: active (running) since Sun 2020-12-06 17:08:12 JST; 1s ago
     Docs: man:httpd(8)
           man:apachectl(8)
 Main PID: 1303 (httpd)
   Status: "Processing requests..."
   CGroup: /system.slice/httpd.service
           |-1303 /usr/sbin/httpd -DFOREGROUND
           |-1304 /usr/sbin/httpd -DFOREGROUND
           |-1305 /usr/sbin/httpd -DFOREGROUND
           |-1306 /usr/sbin/httpd -DFOREGROUND
           |-1307 /usr/sbin/httpd -DFOREGROUND
           `-1308 /usr/sbin/httpd -DFOREGROUND

Dec 06 17:08:11 localhost.localdomain systemd[1]: Starting The Apache HTTP Server...
Dec 06 17:08:12 localhost.localdomain httpd[1303]: AH00558: httpd: Could not reliably determ...ge
Dec 06 17:08:12 localhost.localdomain systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.

Если в результате выполнения команды 'apachectl status' возвращается 'Active: active (running)', система успешно запущена.

Затем зайдите в Apache через браузер. Установите разрешения http, так как брандмауэр (или iptables для CentOS6 и более ранних версий) по умолчанию разрешает только доступ по ssh на CentOS7. Я также хотел бы установить коллективные разрешения для https. Добавьте также опцию 'permanent', чтобы сделать конфигурацию постоянной.

[root@hostname ~]# firewall-cmd --permanent --add-service=http
[root@hostname ~]# firewall-cmd --permanent --add-service=https
[root@hostname ~]# firewall-cmd --reload
[root@hostname ~]# firewall-cmd --list-all
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: dhcpv6-client http https ssh
  ports:
  protocols:
  masquerade: no
  forward-ports:
  source-ports:
  icmp-blocks:
  rich rules:

Все в порядке, если 'http' и 'https' были добавлены в 'services'. Доступ через браузер. В моем случае IP-адрес сервера 192.168.50.10, поэтому я обращаюсь к "http://192.168.50.10". Ничего страшного, если появится следующая страница

После успешного запуска системы остановите ее.

[root@hostname ~]# apachectl stop

2. базовая настройка

2-1. Создание выходной папки файла журнала

Чтобы управлять журналированием в /var/log/, создайте каталог httpd в /var/log/ как папку для журналов Apache.

Разрешения (permissions) должны быть 755. Эта настройка позволяет Apache писать, но другие пользователи могут только читать. Если другие пользователи могут писать, журналы могут быть подделаны.

'mkdir /var/log/httpd' не нужно выполнять, если каталог с таким именем уже был создан.

[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd

Используйте последнюю процедуру для изменения настроек назначения вывода журнала Apache.

Эта процедура является лишь процедурой создания папки для хранения журналов.

2-2. Настройка домена

Измените настройки домена, указанные в файле httpd.conf. Конфигурация Apache в основном сосредоточена в httpd.conf, поэтому если вы хотите изменить конфигурацию, измените httpd.conf. Домены не нужно устанавливать, если среда является локальной (не открытой для публики в Интернете).

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

# Снимите комментарий и включите параметр ServerName. Имя домена устанавливается в зависимости от среды.

httpd.conf【До изменений】


#ServerName www.example.com:80

httpd.conf【после изменения】


ServerName domainname:80

2-3. Активация модулей SSL и файлов конфигурации

Включите SSL, чтобы разрешить доступ по протоколу https. Настройки SSL связаны с SEO, а http - не самая лучшая идея по соображениям безопасности, поэтому, если вам не нужно использовать http, используйте https.

Установите модуль ssl с помощью yum.

[root@hostname ~]# yum -y install mod_ssl

Установка с помощью yum автоматически включает модуль ssl, поэтому вам нужно установить только его. Файл конфигурации также создается автоматически. (/etc/httpd/conf.d/ssl.conf создается автоматически).

2-4. Изменение пути вывода журнала

Измените назначение вывода журнала Apache на папку вывода файлов журнала, которую вы только что создали. Измените только файл конфигурации ssl, так как на следующем шаге он будет настроен на доступ только через ssl (https).

[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf


ssl.conf【До изменений】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~сокращение~

CustomLog logs/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"


ssl.conf【после изменения】


ErrorLog /var/log/httpd/ssl_error_log
TransferLog /var/log/httpd/ssl_access_log

~сокращение~

CustomLog /var/log/httpd/ssl_request_log \
          "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"

Приведенная выше модификация изменяет назначение вывода журнала на "/var/log/httpd".


'%t, %h' и т.д., это настройка форматирования журнала. Ниже приведен список форматов, которые могут часто использоваться для справок.

【参考】

・%T:Время, затраченное на обработку запроса (секунды)

・%h:Имя хоста или IP-адрес клиента. Пытайтесь разрешить имена хостов, только если для параметра HostnameLookups установлено значение On

・%r:Первая строка запроса

・%b:Байт ответа (без учета заголовков HTTP). формат CLF, т.е. - если ни один из байтов не отправлен

・%D:Время, затраченное на обработку запроса (микросекунды)

・%>s:Статус HTTP

2-5. Создание SSL-сертификатов

Процедура создания сертификатов. Самосертификация - это нормально для частных операций. Для общедоступных серверов самосертификация не должна поощряться.

Нет никакой разницы в безопасности между обычными сертификатами и самосертификатами. Это может быть разницей между сертификатом, который может быть признан надежным третьей стороной, и сертификатом, который не может быть признан надежным. (При самоподтверждении строка URL становится красной). Поэтому для общедоступных серверов (серверов, которые видят третьи лица) выдавайте обычный сертификат.

Параметры сертификата по умолчанию для Apache - "/etc/pki/tls/certs/localhost.crt" и "/etc/pki/tls/private/localhost.key".

Настройки можно найти в "SSLCertificateFile" и "SSLCertificateKeyFile" в "/etc/httpd/conf.d/ssl.conf".


【Для самосертификации】

Чтобы создать самосертификат, выполните следующую команду. Запустите от имени пользователя root.

Запуск 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' запросит ответ несколько раз, все с Enter, без проблем. Это будет информация о том, кто выдает сертификат (например, в какой стране он живет и какой у него адрес электронной почты). Если вы выпускаете обычный сертификат, введите правильную информацию и настройте его.

[root@hostname ~]# openssl genrsa > /etc/pki/tls/private/localhost.key
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.csr
[root@hostname ~]# openssl x509 -req -signkey /etc/pki/tls/private/localhost.key < /etc/pki/tls/certs/localhost.csr > /etc/pki/tls/certs/localhost.crt

【Для обычных сертификатов】

Чтобы создать обычный сертификат, выполните следующую команду. Запустите от имени пользователя root.

[root@hostname ~]# openssl genrsa -out /etc/pki/tls/private/localhost.key 2048
[root@hostname ~]# openssl req -new -key /etc/pki/tls/private/localhost.key -out /etc/pki/tls/certs/localhost.csr

Для обычных сертификатов этого недостаточно для завершения процесса. Работа заключается в передаче созданного файла 'server.csr' в центр сертификации для получения сертификата сервера и установке полученного сертификата сервера.

2-6. постоянный SSL (Secure Socket Layer)

Если доступ осуществляется через http, это не очень хорошо с точки зрения безопасности, поэтому добавьте настройку перенаправления на https, если доступ осуществляется через http.

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

[root@hostname ~]# vi /etc/httpd/conf/httpd.conf

В конце добавьте следующее.

httpd.conf


<IfModule rewrite_module>
  RewriteEngine on
  RewriteCond %{HTTPS} off
  RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>

Можно изменить этот параметр таким образом, чтобы доступы, поступающие по протоколу http, обрабатывались по протоколу https.

Утверждается, что эта настройка не работает, если вы заходите через https. (RewriteCond %{HTTPS} off)

Не забудьте упомянуть, что без этой настройки https-доступы также будут перенаправляться, что приведет к бесконечному циклу.

2-7. Подтверждение активации (доступ по протоколу https).

Теперь, когда различные настройки завершены, проверьте, что доступ к сайту можно получить по протоколу https. Начните сначала.

[root@hostname ~]# apachectl start

Доступ через браузер. То же самое, что и для http-доступа, но в моем случае IP-адрес сервера 192.168.50.10, поэтому я получаю доступ к "http://192.168.50.10".

URL изменяется с "http://192.168.50.10" на "https://192.168.50.10", поскольку включен параметр http redirect.

Теперь, когда он успешно запущен, остановите Apache.

[root@hostname ~]# apachectl stop

2-8. Настройка автоматического запуска

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

Создайте файл 'apache.service' и опишите необходимые настройки.

[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service

Предоставляется следующая информация.

[Unit]
#Описание.
Description=Apache
#Контроль до и после исполнения.
#Before=xxx.service
#After=xxx.service

[Service]
#Назначение пользователей и групп
User=root
Group=root
#После активации установите статус Activated.
Type=oneshot
RemainAfterExit=yes
#Запуск, остановка и перезарядка.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Эквивалентные настройки Runlevel 3.
WantedBy=multi-user.target

Когда вы закончите его описание, зарегистрируйте его с помощью команды systemctl.

[root@hostname ~]# systemctl enable apache
[root@hostname ~]# systemctl is-enabled apache
enabled
[root@hostname ~]# systemctl list-unit-files --type=service | grep apache
apache.service                                enabled
[root@hostname ~]# systemctl daemon-reload


3. резюме

Мы описали начальную конфигурацию, необходимую при установке Apache.

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

Спасибо, что досмотрели до конца.