Необходима е първоначална конфигурация от инсталирането на 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:

Добре е, ако в "services" са добавени "http" и "https". Достъпен чрез браузър. В моя случай 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.

След успешното му стартиране спрете 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
#След като се активира, задайте статус Активирано.
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 настройките, които трябва да промените при работа със системата.

Благодарим ви, че гледахте до края.