Webový server ukladá, spracováva a doručuje webové stránky návštevníkom webu. Existuje pomerne veľa softvérových možností pre open-source webové servery, ale Apache HTTP server je považovaný za najpoužívanejší webový server na svete. Je to preto, že okrem toho, že je open-source, jeho modulárna architektúra umožňuje rozširovať jeho možnosti pridávaním modulov na rôzne účely. V dôsledku toho je tento webový server mimoriadne robustný.
Ak chcete nainštalovať Apache na systém CentOS 7, tento návod je určený pre vás. Okrem toho sa naučíte, ako vytvoriť virtuálnych hostiteľov, aby ste mohli prevádzkovať viacero webových stránok na jednom Apache HTTP serveri bežiacom na systéme CentOS.
Toto je podrobný návod zameraný iba na inštaláciu Apache. Ak ste hľadali stručný návod na balík LAMP, máme pre vás tohto sprievodcu o tom, Ako nainštalovať Linux, Apache, MySQL, PHP (LAMP) na CentOS 7, ktorý si môžete pozrieť. Teraz poďme začať!
Požiadavky
Keďže ide o praktický návod, mali by ste mať k dispozícii nasledovné:
- Server so systémom CentOS 7, ktorý si môžete vytvoriť na CloudSigma v niekoľkých jednoduchých krokoch kliknutím na tento odkaz.
- Nakonfigurovaného používateľa bez oprávnení root s privilégiami sudo na vašom serveri. Potom sa prihláste pod týmto používateľom.
- Nakonfigurovaný základný firewall podľa krokov v našom návode o Nastavení firewallu pomocou FirewallD na CentOS 7.
Krok 1: Inštalácia Apache HTTP Servera
Apache nájdete v predvolených repozitároch CentOS. Inštalácia je preto jednoduchá pomocou správcu balíkov yum. Podľa sekcie s požiadavkami musíte byť prihlásení ako používateľ bez oprávnení root. Spustením nasledujúceho príkazu v termináli aktualizujte lokálny index balíkov Apache httpd:
|
1 |
sudo yum update httpd |
Po aktualizácii balíkov zadajte nasledujúci príkaz na inštaláciu Apache:
|
1 |
sudo yum install httpd |
Potvrďte inštaláciu a počkajte, kým yum nainštaluje Apache a jeho požadované závislosti.
Ak ste postupovali podľa krokov v návode o Nastavení firewallu pomocou FirewallD na CentOS 7 a povolili ste firewall pre port 80, môžete pokračovať. Firewalld je správca firewallu pre CentOS. V opačnom prípade môžete povoliť službu http (port 80) pre firewalld zadaním nasledujúceho príkazu:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Ak plánujete prevádzkovať prevádzku cez zabezpečené HTTPS, môžete povoliť službu https (port 443) pre firewalld zadaním nasledujúceho príkazu:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Nakoniec musíte znova načítať firewalld, aby sa zmeny prejavili. Tu je príkaz na opätovné načítanie:
|
1 |
sudo firewall-cmd –reload |
V tomto bode máte nainštalovaný a nakonfigurovaný Apache na obsluhu prevádzky cez HTTP alebo HTTPS v závislosti od toho, či ste spustili vyššie uvedené príkazy.
Krok 2: Overenie, či webový server Apache beží
V systéme CentOS sa proces Apache po inštalácii nespustí automaticky. Ak chcete spustiť Apache manuálne, zadajte nasledujúci príkaz:
|
1 |
sudo systemctl start httpd |
Ak chcete overiť, či sa služba úspešne spustila, skontrolujte jej stav zadaním nasledujúceho príkazu:
|
1 |
sudo systemctl status httpd |
Ak služba beží, mali by ste vidieť výstup podobný snímke obrazovky nižšie. Všimnite si aktívny stav:

Výstup naznačuje, že služba bola úspešne spustená a beží. Ďalej musíme otestovať, či Apache dokáže poskytovať stránku používateľom internetu. Apache sa dodáva s predvolenou stránkou, ktorú môžete použiť na otestovanie, či je váš server prístupný cez internet.
Ak ešte nemáte verejnú IP adresu svojho servera, budete ju musieť zistiť. Túto IP adresu použijete v adresnom riadku prehliadača na vyžiadanie predvolenej webovej stránky Apache. Sieťové adresy hostiteľa môžete zobraziť zadaním nasledujúceho príkazu:
|
1 |
hostname –I |
Zo získaného zoznamu adries môžete vyskúšať každú vo svojom prehliadači a overiť, či fungujú. Prípadne môžete použiť curl na získanie vašej IP adresy z icanhazip.com. Nižšie uvedený príkaz vypíše vašu verejnú IP adresu, ako ju vidno z počítača v inom internetovom umiestnení:
|
1 |
curl -4 icanhazip.com |
Keď máte verejnú IP adresu svojho servera, skopírujte ju a vložte do adresného riadka prehliadača:
|
1 |
http://your_server_public_ip |
Váš prehliadač by mal načítať predvolenú webovú stránku Apache pre CentOS 7:

Ak sa vám podarilo načítať predvolenú webovú stránku Apache, znamená to, že váš server funguje správne. Ak sa posuniete nadol, uvidíte niekoľko základných informácií o súboroch Apache a umiestneniach adresárov. Keď je služba nainštalovaná a funguje správne, mali by ste byť schopní používať rôzne systemctl príkazy na správu tejto služby.
Krok 3: Správa služby Apache
V tejto časti vám ukážeme niekoľko základných príkazov na správu Apache. Tu je príkaz, ktorý zastaví webový server:
|
1 |
sudo systemctl stop httpd |
Tu je príkaz na spustenie webového servera:
|
1 |
sudo systemctl start httpd |
Ďalej nasleduje príkaz na reštartovanie webového servera (zastavenie a spustenie):
|
1 |
sudo systemctl restart httpd |
Potom vám ukážeme príkaz na opätovné načítanie (reload) služby Apache. Tento príkaz je potrebný, ak robíte iba zmeny v konfigurácii. Pri opätovnom načítaní proces Apache prevezme zmeny v konfigurácii bez prerušenia pripojení, ako by to bolo v prípade reštartu:
|
1 |
sudo systemctl reload httpd |
Podľa predvolených konfigurácií sa Apache spúšťa automaticky pri štarte servera. Ak chcete toto správanie zmeniť, tu je príkaz na zakázanie spúšťania služby pri štarte:
|
1 |
sudo systemctl disable httpd |
Ak chcete službu znova povoliť na spúšťanie pri štarte, zadajte nasledujúci príkaz:
|
1 |
sudo systemctl enable httpd |
Krok 4: Nastavenie virtuálnych hostiteľov Apache
V predvolenom nastavení je Apache nakonfigurovaný tak, aby hostil a poskytoval jednu webovú stránku. Vo väčšine prípadov budete chcieť, aby váš webový server poskytoval a hostil viacero webových stránok. Môžete mať napríklad subdomény alebo môžete chcieť nastaviť blogovú stránku pre hlavný web vašej spoločnosti/organizácie. Tu prichádzajú na rad virtuálni hostitelia Apache. Virtuálni hostitelia Apache vám umožňujú nakonfigurovať webový server tak, aby poskytoval viacero webových stránok. Virtuálni hostitelia Apache sú ekvivalentom blokov servera (server blocks) v serveri Nginx.
V tomto návode vám ukážeme, ako vytvoriť virtuálneho hostiteľa pomocou example.com ako našej domény. Samozrejme, doména example.com nebude na internete fungovať, takže by ste ju mali nahradiť vašou skutočnou doménou – kroky sú rovnaké.
Keď nainštalujete Apache na CentOS, nainštaluje sa jeden virtuálny hostiteľ, ktorý je nakonfigurovaný na poskytovanie obsahu z adresára /var/www/html. Tento dizajn funguje dobre, ak hostíte jednu stránku. My však chceme mať možnosť hostiť viacero stránok. Ponecháme predvolený adresár /var/www/html a namiesto toho vytvoríme iný adresár pre doménu example.com v rámci umiestnenia /var/www. Dôvodom ponechania predvoleného adresára je to, aby sa použil v prípade, keď požiadavky klientov nezodpovedajú žiadnym iným stránkam, ktoré ste nakonfigurovali pomocou virtuálnych hostiteľov. Navyše, ak by ste chceli zakázať vami vytvorených virtuálnych hostiteľov, predvolený adresár bude naďalej obsluhovať prevádzku.
Najprv vytvorte adresár vo vnútri /var/www pre váš názov domény. Môžete si vybrať ľubovoľný názov podľa vlastného uváženia. Odporúča sa však vybrať názov podobný vašej doméne, aby ste si ho ľahko zapamätali, keď budete vytvárať conf súbor virtuálneho hostiteľa. Na vytvorenie ukážkového adresára zadajte nasledujúci príkaz:
|
1 |
sudo mkdir -p /var/www/example |
Zadaním nasledujúceho príkazu vytvorte ďalší priečinok, ktorý bude obsahovať súbory denníkov (logy) pre túto stránku:
|
1 |
sudo mkdir -p /var/www/example/log |
Keď máte adresáre webových stránok pripravené, priraďte vlastníctvo adresára pomocou premennej prostredia $USER pomocou nasledujúceho príkazu:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Spustením nasledujúceho príkazu zabezpečíte, že váš koreňový webový adresár bude mať predvolené oprávnenia:
|
1 |
sudo chmod -R 755 /var/www |
Teraz vytvorte jednoduchú index.html stránku pomocou editora nano v adresári example zadaním nasledujúceho príkazu:
|
1 |
sudo nano /var/www/example/index.html |
V editore nano pridajte nasledujúci úryvok kódu HTML:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Vitajte na Example.com!</title> </head> <body> <h1>Ak vy môžete vidieť túto správu, to znamená <em>example.com</em> virtuálny hostiteľ je funkčný!</h1> </body> </html> |
Po dokončení uložte súbor stlačením Ctrl O a stlačte ENTER. Teraz môžete editor zatvoriť stlačením Ctrl X.
Zatiaľ máme vytvorený adresár webu a základnú webovú stránku na otestovanie virtuálneho hostiteľa. Ďalej chceme vytvoriť konfiguračné súbory virtuálneho hostiteľa. Súbory virtuálneho hostiteľa špecifikujú konfigurácie rôznych webov, ktoré chcete hostiť na jednom serveri Apache. Smerujú požiadavky na nastavený názov domény do jej konkrétneho adresára.
Súbory virtuálneho hostiteľa sú uložené v adresári /etc/httpd/sites-available. Aktivované súbory virtuálneho hostiteľa sú prepojené symbolickým odkazom z adresára /etc/httpd/sites-available do adresára /etc/httpd/sites-enabled . Tieto dva adresáre sa v systéme CentOS predvolene nevytvárajú, takže ich musíte vytvoriť sami. Zadaním nasledujúceho príkazu vytvorte tieto adresáre:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Keď sú adresáre na svojom mieste, inštruujte Apache, aby hľadal virtuálnych hostiteľov v adresári sites-enabled. Urobíte to úpravou hlavného konfiguračného súboru pre Apache. Zadaním nasledujúceho príkazu otvorte súbor v editore nano:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Chceme pridať riadok, ktorý inštruuje Apache, aby hľadal ďalšie konfiguračné súbory vo voliteľnom adresári. Prejdite na koniec súboru a na koniec pridajte nasledujúci riadok:
|
1 |
IncludeOptional sites-enabled/*.conf |
Súbor uložte stlačením Ctrl O a stlačte ENTER. Teraz môžete editor zatvoriť stlačením Ctrl X. Ďalším krokom je vytvorenie súboru virtuálneho hostiteľa v adresári sites-available. Zadaním nasledujúceho príkazu vytvorte a otvorte nový súbor v editore nano:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
Do otvoreného súboru pridajte nasledujúci konfiguračný blok. Nezabudnite nahradiť našu doménu example.com vaším skutočným názvom domény, a ak ste v adresári /var/www/example použili iný názov, aktualizujte ho tiež zodpovedajúcim spôsobom:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Ako vidíte, špecifikovali sme názov domény a koreňový adresár dokumentov (document root), kde sa budú nachádzať súbory poskytované pre túto doménu. Špecifikovali sme aj umiestnenie chybového logu – to vám pomôže pri riešení problémov so serverom.
Keď máme súbor virtuálneho hostiteľa v adresári sites-available, ďalším krokom je povolenie súboru vytvorením symbolického odkazu do adresára sites-enabled. Zadaním nasledujúceho príkazu vytvorte symbolický odkaz:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Ak ste postupovali podľa doterajších krokov, váš virtuálny hostiteľ by mal byť teraz pripravený poskytovať obsah vášho webu. Predtým, ako virtuálni hostitelia začnú fungovať, však musíte nakonfigurovať ešte jednu kontrolu. Tej sa budeme venovať v ďalšej časti.
Krok 5: Úprava oprávnení SELinux na povolenie virtuálnych hostiteľov
Distribúcie Linuxu vrátane Fedora, RHEL a CentOS sa štandardne dodávajú so systémom SELinux. SELinux (Security Enhanced Linux) je bezpečnostná architektúra pre systémy Linux, ktorá obmedzuje a definuje, ako má server spracovávať požiadavky a ako majú používatelia komunikovať so soketmi, sieťovými portami a základnými adresármi.
Po inštalácii bude SELinux fungovať s predvolenou konfiguráciou Apache. Avšak pri vlastnom virtuálnom hostiteľovi, ktorého ste vytvorili, vrátane vlastného adresára pre logy, sa pri pokuse o reštartovanie služby Apache vyskytne chyba služby. Riešením je upraviť politiky SELinux tak, aby služba Apache mohla zapisovať do potrebných súborov.
Vďaka SELinux je CentOS vysoko bezpečným serverom. Preto ho neodporúčame úplne zakázať. Vzhľadom na to, že SELinux umožňuje prispôsobiť úroveň zabezpečenia rôznymi spôsobmi, odporúča sa aktualizovať alebo nastavovať politiky len na základe potrieb vášho prostredia.
Máte dve možnosti aktualizácie politík Apache: buď univerzálne alebo pre konkrétny adresár. Aktualizácia politík špecifických pre konkrétny adresár je bezpečnejšia. Preto je to odporúčaná možnosť.
-
Univerzálna aktualizácia politík Apache
Politiku Apache môžete upraviť univerzálne, čo inštruuje SELinux, aby so všetkými procesmi Apache zaobchádzal rovnako, a to pomocou premennej typu Boolean httpd_unified. Majte na pamäti, že univerzálna úprava politík Apache vám neposkytne rovnakú úroveň kontroly ako nastavenie každého adresára osobitne. Je to však pohodlnejšie z hľadiska údržby. Spustením nasledujúceho príkazu aktualizujete politiky Apache univerzálne:
|
1 |
sudo setsebool -P httpd_unified 1 |
Definujme si, čo robia hodnoty v tomto príkaze:
- setsebool – aktualizuje boolovské hodnoty SELinux.
- -P prepínač – aktualizuje hodnotu pri zavádzaní systému, takže táto zmena pretrvá aj po reštarte.
- httpd_unified – boolovská hodnota, ktorá inštruuje SELinux, aby zaobchádzal so všetkými procesmi Apache ako s rovnakým typom. Použitím hodnoty 1 ju povolíte.
-
Úprava politík Apache pre adresár
Ak chcete mať väčšiu kontrolu nad adresármi, potom je správnou cestou úprava politík Apache pre jednotlivé adresáre. To však prináša dodatočnú záťaž v podobe náročnejšej údržby. Je to preto, že politika nie je globálna. Preto budete musieť manuálne nastaviť typ kontextu pre všetky nové adresáre s logmi, ktoré špecifikujete v konfiguračných súboroch virtuálneho hostiteľa.
Pred aktualizáciou politiky najprv skontrolujte typ kontextu, ktorý SELinux priradil adresáru /var/www/example/log pomocou nasledujúceho príkazu:
|
1 |
sudo ls -dZ /var/www/example/log/ |
Príkaz vypíše niečo podobné nasledujúcemu, čo je v podstate kontext SELinux daného adresára:
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t je aktuálny kontext, ktorý hovorí SELinuxu, že proces Apache má povolené iba čítať súbory vytvorené v tomto adresári. Keďže na základe našich konfigurácií virtuálneho hostiteľa chceme, aby Apache zapisoval do súborov logov v adresári /var/www/example/log, upravíme túto politiku tak, aby sme Apache umožnili generovať a zapisovať do súborov logov webovej aplikácie. Kontext, ktorý to umožňuje, je httpd_log_t. Tu je príkaz na aktualizáciu kontextu:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Ak chcete použiť zmeny z vyššie uvedeného príkazu a zabezpečiť ich trvalosť aj po reštarte, spustite nasledujúci príkaz:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Definujme si, čo tento príkaz robí:
- restorecon – aplikuje zmeny a zabezpečí, aby pretrvali aj po reštarte.
- príznak -R – spustí príkaz rekurzívne, čím aktualizuje všetky existujúce súbory tak, aby používali nový kontext.
- príznak -v – vypíše zmeny kontextu po spustení príkazu. Výstup bude vyzerať približne takto:
|
1 2 |
Výstup: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Krok 6: Testovanie konfigurácie virtuálneho hostiteľa
Pred testovaním virtuálneho hostiteľa budete musieť reštartovať služby Apache. Tu je príkaz na to:
|
1 |
sudo systemctl restart httpd |
Ďalej vypíšte obsah adresára logov pomocou nasledujúceho príkazu:
|
1 |
ls -lZ /var/www/example/log |
Malo by sa zobraziť niečo takéto, čo ukazuje, že Apache vytvoril súbory logov:

Ak ste postupovali podľa doterajších krokov, Apache by mal byť teraz schopný zobraziť vzorovú HTML stránku, keď navštívite svoj názov domény definovaný v súbore virtuálneho hostiteľa. Ak si prajete, môžete zopakovať kroky 4 a 5 na nastavenie ďalších domén a príslušnú aktualizáciu ich oprávnení SELinux.
Záver
V tomto návode sme nainštalovali Apache, naučili sa, ako aktualizovať pravidlá SELinux, aby sme umožnili Apache zapisovať do vlastných súborov logov, a nakoniec sme otestovali našu konfiguráciu, aby sme potvrdili, že funguje správne. Na základe týchto vedomostí by ste mali byť schopní na nich stavať a poskytovať lepšie aplikácie s bohatšími funkciami.
Ak chcete preskúmať kompletný webový balík, pozrite si náš návod na ako nainštalovať LAMP stack na CentOS 7.
Príjemnú prácu s počítačom!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.