Počiatočná konfigurácia potrebná od inštalácie Apache v systéme CentOS až po spustenie.


Dátum vydania:8. decembra 2020.



INFOMARTION > Počiatočná konfigurácia potrebná od inštalácie Apache v systéme CentOS až po spustenie.

Prehľad.

Toto je úvodný postup konfigurácie potrebný na inštaláciu a spustenie Apache v systéme CentOS. Informácie vychádzajú z predpokladu, že sa používa systém CentOS7.

Verzie sú nasledovné.

Verzia systému CentOS7.6 (1810)
Verzia Apache2.4.6

Obsah

  1. nainštalovať
  2. základné nastavenie
  3. zhrnutie

1. nainštalovať

Táto časť opisuje konfiguráciu Apache od inštalácie až po spustenie.

1-1. Inštalácia Apache

Inštaláciu Apache vykonajte pomocou príkazu yum. Vykonajte prácu ako používateľ root.

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

1-2. Kontrola spustenia (prístup http)

Krátko skontrolujte, či je prístupná. Inštalácia Apache (httpd) pomocou príkazu yum aktivuje príkaz apachectl. Použite ho na spustenie 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.

Ak sa po vykonaní príkazu "apachectl status" vráti hodnota "Active: active (running)", systém sa úspešne spustil.

Potom pristupujte k Apache z prehliadača. Nastavte oprávnenia http, pretože firewall (alebo iptables pre CentOS6 a staršie) umožňuje v predvolenom nastavení CentOS7 len prístup cez ssh. Chcel by som tiež zaviesť kolektívne nastavenie povolenia pre protokol https. Pridajte aj možnosť "permanent", aby bola konfigurácia trvalá.

[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:

Je v poriadku, ak boli do "services" pridané "http" a "https". Prístup cez prehliadač. V mojom prípade je IP adresa servera 192.168.50.10, takže mám prístup "http://192.168.50.10". Je v poriadku, ak sa zobrazí nasledujúca stránka

Po úspešnom spustení systému ho zastavte.

[root@hostname ~]# apachectl stop

2. základné nastavenie

2-1. Vytvorenie výstupného priečinka súboru denníka

Ak chcete spravovať protokolovanie pod /var/log/, vytvorte adresár httpd pod /var/log/ ako priečinok pre protokoly Apache.

Oprávnenia (permissions) by mali byť 755. Toto nastavenie umožňuje Apache zapisovať, ale ostatní používatelia môžu iba čítať. Ak môžu do protokolov zapisovať aj iní používatelia, je možné s nimi manipulovať.

'mkdir /var/log/httpd' sa nemusí vykonať, ak už bol vytvorený adresár s rovnakým názvom.

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

Tento postup použite na zmenu nastavení výstupného cieľa protokolu Apache.

Tento postup je len postupom na vytvorenie priečinka na ukladanie protokolov.

2-2. Nastavenie domény

Zmeňte nastavenia domény uvedené v súbore httpd.conf. Konfigurácia Apache je v podstate centralizovaná v súbore httpd.conf, takže ak chcete zmeniť konfiguráciu, upravte súbor httpd.conf. Domény nie je potrebné nastavovať, ak je prostredie lokálne (nie je prístupné verejnosti na internete).

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

# Odkomentujte a povoľte nastavenie ServerName. Názov domény sa nastavuje podľa prostredia.

httpd.conf【Pred zmenou】


#ServerName www.example.com:80

httpd.conf【po zmene】


ServerName domainname:80

2-3. Aktivácia modulov SSL a konfiguračných súborov

Povoľte protokol SSL, aby ste umožnili prístup cez protokol https. Nastavenia SSL súvisia so SEO a http nie je v prvom rade dobrý nápad z bezpečnostných dôvodov, takže ak nemusíte používať http, používajte https.

Nainštalujte modul ssl pomocou yum.

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

Inštalácia pomocou yum automaticky povolí modul ssl, takže ho stačí nainštalovať. Automaticky sa vytvorí aj konfiguračný súbor. (Súbor /etc/httpd/conf.d/ssl.conf sa vytvorí automaticky.)

2-4. Zmena výstupnej cesty denníka

Zmeňte výstupný cieľ denníka Apache na výstupný priečinok denníka, ktorý ste práve vytvorili. Zmeňte len konfiguračný súbor ssl, pretože v ďalšom kroku bude nastavený tak, aby bol prístupný len cez ssl (https).

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


ssl.conf【Pred zmenou】


ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log

~skrátenie~

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


ssl.conf【po zmene】


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

~skrátenie~

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

Vyššie uvedená úprava zmení cieľ výstupu denníka na "/var/log/httpd".


'%t, %h' atď., ide o nastavenie formátovania denníka. Nasleduje zoznam formátov, ktoré sa môžu často používať na referenčné účely.

【参考】

・%T:Čas potrebný na spracovanie požiadavky (sekundy)

・%h:Názov hostiteľa alebo IP adresa klienta. Pokus o preklad hostiteľských mien len vtedy, ak je HostnameLookups nastavený na On

・%r:Prvý riadok žiadosti

・%b:Bajty odpovede (okrem hlavičiek HTTP). CLF formát, t. j. ak nie je odoslaný žiadny z bajtov

・%D:Čas potrebný na spracovanie požiadavky (mikrosekundy)

・%>s:Stav HTTP

2-5. Vytvorenie certifikátov SSL

Postup vytvárania certifikátov. Vlastná certifikácia je v poriadku pre súkromné prevádzky. V prípade verejne dostupných serverov by sa malo od samocertifikácie odrádzať.

Medzi bežnými certifikátmi a vlastnými certifikátmi nie je žiadny rozdiel v zabezpečení. To môže byť rozdiel medzi certifikátom, ktorý môže tretia strana posúdiť ako spoľahlivý, a certifikátom, ktorý spoľahlivý nie je. (Pri vlastnej certifikácii sa pruh URL zmení na červený.) Pre verejne dostupné servery (servery, ktoré vidia tretie strany) teda vystavte bežný certifikát.

Predvolené nastavenia certifikátu pre Apache sú "/etc/pki/tls/certs/localhost.crt" a "/etc/pki/tls/private/localhost.key".

Nastavenia nájdete v súboroch "SSLCertificateFile" a "SSLCertificateKeyFile" v súbore "/etc/httpd/conf.d/ssl.conf".


【Pre vlastné osvedčovanie】

Ak chcete vytvoriť vlastný certifikát, vykonajte nasledujúci príkaz. Spustite ako používateľ root.

Spustenie 'openssl req -new -key /etc/pki/tls/private/localhost.key > /etc/pki/tls/certs/localhost.crt' vás niekoľkokrát vyzve k odpovedi, všetko s Enter, žiadny problém. Ide o informácie o tom, kto certifikát vydáva (napr. v ktorej krajine žije a aká je jeho e-mailová adresa). Ak vystavujete bežný certifikát, zadajte správne informácie a nastavte ho.

[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

【Pre bežné certifikáty】

Ak chcete vytvoriť bežný certifikát, vykonajte nasledujúci príkaz. Spustite ako používateľ 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

V prípade bežných certifikátov to na dokončenie procesu nestačí. Táto práca zahŕňa odovzdanie vytvoreného súboru "server.csr" certifikačnej autorite na vydanie certifikátu servera a inštaláciu vydaného certifikátu servera.

2-6. permanentné SSL (Secure Socket Layer)

Nie je dobré zabezpečenie, ak sa prístup uskutočňuje cez http, preto pridajte nastavenie na presmerovanie na https, ak sa prístup uskutočňuje cez http.

Prístup cez http je možné zakázať, ale z hľadiska použiteľnosti sa odporúča nastaviť presmerovanie. Nasledujúce úlohy vykonajte ako používateľ root.

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

Na koniec pridajte tento text.

httpd.conf


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

Toto nastavenie je možné zmeniť tak, aby sa prístupy prichádzajúce cez http spracúvali cez https.

Je uvedené, že toto nastavenie nefunguje, ak prichádzate cez https. (RewriteCond %{HTTPS} off)

Nezabudnite spomenúť, že bez tohto nastavenia budú presmerované aj prístupy https, čím vznikne nekonečná slučka.

2-7. Potvrdenie aktivácie (prístup cez https).

Po dokončení rôznych nastavení skontrolujte, či je možné na stránku pristupovať cez protokol https. Najskôr spustite.

[root@hostname ~]# apachectl start

Prístup cez prehliadač. Rovnako ako pri prístupe cez http, ale v mojom prípade je IP adresa servera 192.168.50.10, takže mám prístup "http://192.168.50.10".

Adresa URL sa zmení z "http://192.168.50.10" na "https://192.168.50.10", pretože je zahrnuté nastavenie presmerovania http.

Po úspešnom spustení zastavte Apache.

[root@hostname ~]# apachectl stop

2-8. Nastavenie automatického spustenia

Nakoniec, hoci to nie je povinné, je ťažké spúšťať Apache pri každom reštarte servera, preto je konfigurácia nastavená tak, aby sa Apache spúšťal automaticky pri spustení servera. Registruje sa aj do príkazu systemctl. Upozorňujeme, že tento postup sa týka systému CentOS7, takže ak používate iný systém ako CentOS7, budete musieť použiť príkaz Service.

Vytvorte súbor 'apache.service' a opíšte požadované nastavenia.

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

Uvádzajú sa tieto informácie.

[Unit]
#Popis.
Description=Apache
#Kontrola pred a po vykonaní.
#Before=xxx.service
#After=xxx.service

[Service]
#Označenie používateľa a skupiny
User=root
Group=root
#Po aktivácii nastavte stav na možnosť Aktivované.
Type=oneshot
RemainAfterExit=yes
#Spustenie, zastavenie a opätovné načítanie.
ExecStart=/usr/sbin/apachectl start
ExecStop=/usr/sbin/apachectl stop
ExecReload=/usr/sbin/apachectl restart

[Install]
#Ekvivalentné nastavenia úrovne Runlevel 3.
WantedBy=multi-user.target

Po dokončení opisu ho zaregistrujte pomocou príkazu 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. zhrnutie

Opísali sme počiatočnú konfiguráciu potrebnú pri inštalácii Apache.

Apache v podstate do určitej miery funguje s predvolenými nastaveniami, ale ak si ho skutočne prispôsobíte, pozrite si nastavenia cieľového miesta výstupu protokolu a nastavenia SSL, ktoré by ste mali zmeniť pri prevádzke systému.

Ďakujeme vám za sledovanie až do konca.