Apache HTTP Server na CentOS: inštalácia a bezpečný štart
Dátum vydania:
Aktualizované:
Technické články > Apache HTTP Server na CentOS: inštalácia a bezpečný štart
Stav a bezpečné používanie v roku 2026
Záver: Na podporovanom systéme z rodiny RHEL nainštalujte balík httpd, pred opätovným načítaním overte konfiguráciu, vo firewalle otvorte iba potrebné služby a namiesto vypnutia SELinuxu nastavte správne kontexty a prepínače.
Čo sa naučíte
- Ako spolu súvisia inštalácia balíka, spustenie služby, overenie konfigurácie a prístup zo siete.
- Ako vlastný koreň dokumentov súvisí s prístupovými oprávneniami a kontextmi SELinux.
- Ktoré príkazy CentOS 7 nižšie sú historické a vyžadujú ekvivalent podporovanej platformy.
Pre koho je to určené: Správcovia Linuxu, ktorí nasadzujú základný Apache HTTP Server alebo prenášajú starší prevádzkový postup z CentOSu.
Kontext v roku 2026: CentOS 7 už nie je podporovaný. Pôvodný návod slúži iba ako referencia; používajte DNF a aktuálnu dokumentáciu RHEL a Apache, ponechajte SELinux v režime Enforcing, obmedzte počet modulov a pred opätovným načítaním služby spustite apachectl configtest.
Bezpečnostná poznámka: Príkazy a príklady konfigurácie v pôvodnom článku neboli znovu spustené v aktuálnom produkčnom prostredí. Pred ich použitím overte podporované verzie, zálohy, prístupové oprávnenia a postup obnovy v oddelenom testovacom prostredí.
Hlavné oficiálne zdroje
Prehľad
Tento historický postup opisuje inštaláciu Apache HTTP Servera 2.4.6 v systéme CentOS 7.6 a vtedajšiu konfiguráciu. Nejde o aktuálne produkčné odporúčanie.
V pôvodnom prostredí boli použité tieto verzie:
| Verzia systému CentOS | 7.6 (1810) |
|---|---|
| Verzia Apache | 2.4.6 |
1. Inštalácia a prvý test
Príkazy v tejto časti patria ku konkrétnemu historickému prostrediu CentOS 7.
1-1. Inštalácia Apache HTTP Servera
Pôvodné prostredie nainštalovalo balík httpd pomocou správcu yum pod účtom root.
[username@hostname ~]$ su -
[root@hostname ~]# yum -y install httpd
1-2. Overenie spustenia cez HTTP
Po inštalácii možno server spustiť a jeho stav zobraziť pomocou príkazu apachectl.
[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.
Hodnota "Active: active (running)" potvrdzuje spustenie procesu služby. Sama osebe však nepotvrdzuje správnosť konfigurácie, priechod firewallom, TLS ani odpoveď aplikácie.
Následne pôvodný postup povolil vo firewalle CentOS 7 služby HTTP a HTTPS, pretože predvolená konfigurácia povoľovala iba SSH. Voľba "--permanent" zachová pravidlá aj po reštarte a príkaz reload ich aktivuje.
[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:
Overte, že zoznam "services" obsahuje položky "http" a "https", a potom odošlite požiadavku z oprávneného testovacieho klienta. Pôvodné laboratórne prostredie používalo adresu "http://192.168.50.10". Úspešný test zobrazí úvodnú stránku Apache.
Po úspešnom teste server zastavte.
[root@hostname ~]# apachectl stop
2. Historický postup konfigurácie Apache
2-1. Vytvorenie adresára pre protokoly
Balík pre CentOS zvyčajne vytvorí adresár "/var/log/httpd" aj s príslušným kontextom SELinux. Historický postup ho vytváral ručne iba vtedy, keď chýbal.
Režim 755 sám osebe nezaručuje, že Apache môže zapisovať: rozhodujú aj vlastník, oprávnenia nadradeného adresára a kontext SELinux. Uprednostnite predvolené nastavenia balíka alebo schválené pravidlá protokolovania a nedovoľte nedôveryhodným používateľom meniť protokoly.
Ak už adresár s rovnakým názvom existuje, príkaz "mkdir /var/log/httpd" nevykonávajte.
[root@hostname ~]# mkdir /var/log/httpd
[root@hostname ~]# chmod 755 /var/log/httpd
Tento krok iba pripraví adresár; cestu k protokolom určuje až neskoršia konfigurácia Apache.
Pred použitím skontrolujte vlastníctvo, oprávnenia a kontext SELinux vytvoreného adresára.
2-2. Nastavenie domény
Nastavte "ServerName" na názov hostiteľa a port zodpovedajúci nasadeniu. Apache načítava aj konfiguračné fragmenty z pripojených adresárov, preto súbor "httpd.conf" nemusí byť jediným zdrojom výslednej konfigurácie. V čisto lokálnom prostredí nemusí byť verejná doména potrebná.
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
Pôvodný príklad odkomentoval položku "ServerName" a zástupnú hodnotu nahradil DNS názvom daného prostredia.
#ServerName www.example.com:80
ServerName domainname:80
2-3. Aktivácia modulov SSL a konfiguračných súborov
Pre verejnú prevádzku používajte HTTPS, aby boli prihlasovacie údaje a obsah chránené počas prenosu. Pôvodný postup nainštaloval balíkový modul TLS pomocou yum.
V historickom prostredí sa modul inštaloval nasledujúcim príkazom.
[root@hostname ~]# yum -y install mod_ssl
Táto verzia balíka modul automaticky povolila a vytvorila súbor "/etc/httpd/conf.d/ssl.conf". Na podporovanej distribúcii overte aktuálne správanie balíka aj predvolené nastavenia TLS.
2-4. Zmena ciest k protokolom
Pôvodná konfigurácia presmerovala chybový protokol, prístupový protokol a protokol požiadaviek TLS do pripraveného adresára "/var/log/httpd". Keďže ďalší krok presmeroval všetku prevádzku na HTTPS, príklad menil iba súbor "ssl.conf".
[root@hostname ~]# vi /etc/httpd/conf.d/ssl.conf
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"
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"
Úprava zmení cieľ uvedených protokolov na adresár "/var/log/httpd".
Zástupné značky ako "%t" a "%h" určujú formát protokolu. Medzi často používané značky patria:
Referenčný prehľad
• %T: čas spracovania požiadavky v sekundách
• %h: názov hostiteľa alebo IP adresa klienta; názov sa prekladá iba pri zapnutom "HostnameLookups"
• %r: prvý riadok požiadavky
• %b: počet bajtov odpovede bez hlavičiek HTTP vo formáte CLF; pri nulovej odpovedi sa uvedie pomlčka
• %D: čas spracovania požiadavky v mikrosekundách
• %>s: konečný stavový kód HTTP
2-5. Vytvorenie certifikátov TLS
Táto časť zachytáva pôvodné príkazy na vytvorenie certifikátu. Pre verejnú službu použite automaticky obnovovaný certifikát od dôveryhodnej certifikačnej autority. Certifikát s vlastným podpisom môže šifrovať prenos, klient však bez osobitne spravovaného koreňa dôvery nevie overiť totožnosť servera.
Ignorovanie upozornenia pri neoverenom certifikáte umožňuje vydávanie sa za server a útok typu man-in-the-middle. Certifikát s vlastným podpisom preto používajte iba v riadenom súkromnom prostredí, kde klienti dôveryhodný certifikát poznajú vopred.
Predvolené nastavenia certifikátu pre Apache sú "/etc/pki/tls/certs/localhost.crt" a "/etc/pki/tls/private/localhost.key".
Direktívy "SSLCertificateFile" a "SSLCertificateKeyFile" nájdete v súbore "/etc/httpd/conf.d/ssl.conf".
Historický príklad certifikátu podpísaného vlastným kľúčom
Nasledujúce príkazy vytvorili súkromný kľúč, žiadosť o podpis certifikátu a certifikát podpísaný tým istým kľúčom. Nezahŕňajú dnešné postupy ochrany kľúča, Subject Alternative Name, obnovy ani nasadenia, preto ich nekopírujte ako aktuálny návod.
Príkaz na vytvorenie žiadosti sa interaktívne pýta na údaje o subjekte certifikátu. Pri skutočnom certifikáte musia tieto údaje a najmä názvy hostiteľov zodpovedať nasadeniu.
[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
Historický príklad žiadosti pre certifikačnú autoritu
Nasledujúce príkazy vytvorili súkromný kľúč a žiadosť o podpis certifikátu určenú certifikačnej autorite.
[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
Žiadosť o podpis nie je serverový certifikát. Certifikačná autorita žiadosť overí a vydá certifikát, ktorý treba nainštalovať spolu s prípadnými certifikátmi reťazca a mechanizmom obnovy.
2-6. Presmerovanie HTTP na HTTPS
Verejný koncový bod HTTP môže požiadavku presmerovať na zodpovedajúcu adresu HTTPS. Pred zapnutím trvalého presmerovania overte správanie proxy hlavičiek aj cieľovej adresy v testovacom prostredí.
Úplné odmietnutie HTTP je bezpečné, presmerovanie však zvyčajne poskytuje lepšiu používateľskú skúsenosť. Pôvodný postup upravoval konfiguráciu pod účtom root.
[root@hostname ~]# vi /etc/httpd/conf/httpd.conf
Pôvodný príklad pridal na koniec súboru nasledujúce pravidlo.
<IfModule rewrite_module>
RewriteEngine on
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
</IfModule>
Pravidlo presmeruje požiadavky prijaté cez HTTP na rovnakú cestu cez HTTPS.
Podmienka "RewriteCond %{HTTPS} off" obmedzuje pravidlo na požiadavky, ktoré Apache považuje za nešifrované.
Bez tejto podmienky môže vzniknúť nekonečná slučka. Za reverznou proxy nemusí premenná odrážať pôvodnú schému klienta, preto použite konfiguráciu odporúčanú pre konkrétnu architektúru proxy.
2-7. Overenie prístupu cez HTTPS
Po dokončení nastavení spustite Apache a overte prístup cez HTTPS.
[root@hostname ~]# apachectl start
V pôvodnom prostredí prehliadač otvoril adresu "http://192.168.50.10".
Nastavené pravidlo presmerovalo adresu "http://192.168.50.10" na "https://192.168.50.10". Pri certifikáte vydanom pre názov hostiteľa by však test cez samotnú IP adresu mohol vyvolať chybu overenia názvu.
Po úspešnom teste Apache zastavte.
[root@hostname ~]# apachectl stop
2-8. Automatické spustenie služby
Balík pre CentOS už poskytuje jednotku "httpd.service", ktorú treba bežne povoliť prostredníctvom systemd. Vlastná jednotka "apache.service" uvedená nižšie zostáva iba ako súčasť pôvodného článku a nemá nahrádzať jednotku dodanú distribúciou.
Historický postup vytvoril vlastný súbor "apache.service" takto.
[root@hostname ~]# touch /etc/systemd/system/apache.service
[root@hostname ~]# vi /etc/systemd/system/apache.service
Do súboru zapísal nasledujúcu konfiguráciu.
[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
Pôvodný postup potom vlastnú jednotku povolil pomocou systemctl. Na podporovanej inštalácii používajte jednotku "httpd.service" dodanú balíkom.
[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
Historický postup zahŕňa inštaláciu, pravidlá firewallu, názov hostiteľa, protokoly, TLS, presmerovanie a automatické spustenie služby.
Súčasné nasadenie má vychádzať z podporovanej distribúcie a jednotky dodanej balíkom. Ponechajte SELinux v režime Enforcing, pred opätovným načítaním overte konfiguráciu a automatizujte obnovu dôveryhodného certifikátu.
Pred vystavením služby internetu skontrolujte minimálny počet modulov, prístupové oprávnenia, firewall, protokoly a postup obnovy.
Technické články
Profil
Kontakt
