Úvod
Apache je v súčasnosti najpoužívanejším webovým serverom na svete. Ide o open-source softvér vyvinutý pred viac ako dvadsiatimi rokmi, ktorý spravuje Apache Software Foundation. Odhaduje sa, že k septembru 2020 obsluhoval 35 % všetkej návštevnosti webových stránok na svete.
Vývojári uprednostňujú Apache pre jeho rýchlosť, bezpečnosť, spoľahlivosť, robustnosť a jednoduchosť prispôsobenia. Okrem toho je Apache schopný uspokojiť potreby mnohých prostredí, pretože umožňuje inštaláciu rôznych rozšírení a modulov. Je to možné vďaka súboru konfigurácií, ktoré môžu vývojári a správcovia serverov upravovať na rôzne účely. V tomto návode vás prevedieme všeobecnými konfiguračnými súbormi a možnosťami, ktoré môžu ovplyvniť rôzne výsledky na serveroch Ubuntu a Debian.
Debian a Ubuntu patria medzi najobľúbenejšie serverové operačné systémy. Tieto dva systémy majú veľa spoločného. Napríklad oba používajú správcu balíkov APT a balíky DEB na manuálnu inštaláciu. Nastavenia Apache a štruktúru adresárov riešia podobne. Preto by ste mali byť schopní postupovať podľa tohto návodu s ktorýmkoľvek z týchto operačných systémov. Najprv môžete postupovať podľa tohto návodu na nastavenie servera Ubuntu v niekoľkých krokoch.
Potom sa prihláste ako používateľ bez oprávnení root s privilégiami sudo a môžeme začať!
Ako nainštalovať Apache na Ubuntu a Debian
Ak váš server ešte nemá Apache, môžete ho jednoducho nainštalovať pomocou jedného príkazu. Najprv spustite príkaz na aktualizáciu:
|
1 |
sudo apt-get update |
Potom môžete nainštalovať Apache zadaním nasledujúceho príkazu:
|
1 |
sudo apt-get install apache2 |
Po dokončení inštalácie môžete skontrolovať nainštalovanú verziu pomocou príkazu:
|
1 |
apache2 -v |
V čase písania tohto návodu bola verzia:

Potom navštívte IP adresu alebo doménové meno vášho servera. Mali by ste vidieť predvolenú indexovú stránku Apache:

Súborová hierarchia Apache v distribúciách Ubuntu a Debian
Distribúcie Ubuntu aj Debian používajú správcu balíkov apt. Podobne, keď nainštalujete balík, vytvorí sa podobná hierarchia súborov. V našom prípade, pre Ubuntu aj Debian, Apache uchováva svoje konfiguračné súbory v adresári „/etc/apache2“. Prejdite do tohto adresára pomocou nasledujúceho príkazu a vypíšte jeho obsah:
|
1 2 |
cd /etc/apache2 ls -F |
Výstup príkazu môžete vidieť na snímke obrazovky nižšie:

Môžete vidieť niekoľko súborov a podadresárov, s ktorými by ste mali byť oboznámení pri konfigurácii nastavenia servera Apache. Tu je ich popis:
- apache2.conf – Je to hlavný konfiguračný súbor pre server Apache. Obsahuje tiež všetky predvolené konfigurácie. Hoci takmer všetky konfigurácie je možné vykonať z tohto súboru, z dôvodu zjednodušenia a ochrany tohto predvoleného súboru pred poškodením sa vždy odporúča použiť samostatné určené súbory.
- conf-available – Je to adresár obsahujúci ďalšie lokálne konfiguračné súbory a súbory iných aplikácií, ktoré ešte nie sú priradené k žiadnym modulom. Konfigurácie v tomto adresári nie sú aktívne, kým ich nepovolíte. Príkaz a2enconf môže povoliť konfiguračný súbor. Tu je obsah tohto adresára:

- conf-enabled – Je to adresár obsahujúci ďalšie lokálne konfigurácie a konfiguračné súbory iných aplikácií priradených k ich príslušným modulom. Konfiguračné súbory v tomto adresári sú aktívne a ovplyvňujú správanie Apache. Konfiguračný súbor môžete zakázať pomocou príkazu a2disconf. Tu je obsah tohto adresára:

- envvars – Je to súbor obsahujúci premenné prostredia Apache2. Premenné v tomto súbore ovplyvňujú iba Apache a nesúvisia s vaším systémom Linux. Tu je obsah tohto súboru:

- magic – Je to súbor obsahujúci inštrukcie na určenie typu MIME súboru. Pomáha serveru určiť typ súboru.
- mods-available – Je to adresár obsahujúci konfiguračné súbory na načítanie modulov a ich konfiguráciu. Nie sú však ešte povolené. Môžete ich povoliť pomocou príkazu a2enmod.
- mods-enabled – Je to adresár obsahujúci konfiguračné súbory na načítanie modulov a ich konfiguráciu. Konfigurácie v tomto adresári sú už povolené a odkazujú na príslušné moduly. Moduly môžete zakázať pomocou príkazu a2dismod.
- ports-conf – Je to súbor určujúci porty dostupné pre virtuálnych hostiteľov a TCP porty, na ktorých Apache počúva.
- sites-available – Je to adresár obsahujúci dostupné konfiguračné súbory pre virtuálnych hostiteľov Apache. Virtuálni hostitelia umožňujú Apache obsluhovať rôzne webové stránky. Súbory v tomto adresári ešte nie sú aktívne. Súbor virtuálneho hostiteľa môžete povoliť pomocou príkazu a2ensite.
- sites-enabled – Je to adresár obsahujúci aktivované konfiguračné súbory virtuálnych hostiteľov. Zvyčajne obsahuje symbolické odkazy na súbory v adresári sites-available. Súbor virtuálneho hostiteľa môžete zakázať pomocou príkazu a2dissite.
Modulárny dizajn konfiguračných súborov Apache vám umožňuje upravovať a pridávať súbory podľa potreby.
Obsah súboru apache2.conf
Súbor na adrese “/etc/apache2/apache2.conf” obsahuje hlavné konfiguračné súbory pre Apache. Presnejšie povedané, obsahuje konfiguračné direktívy, ktoré dávajú serveru inštrukcie. Skladá sa z troch častí, ktoré definujú konfigurácie procesov pre globálny server, konfiguráciu pre predvolený server a konfigurácie pre virtuálnych hostiteľov .
V systémoch Ubuntu a Debian obsahuje väčšina súboru konfigurácie procesov globálneho servera. Smerom nadol môžete nájsť konfigurácie pre predvolený server a virtuálnych hostiteľov pomocou direktívy „Include“. Apache používa direktívu „Include“ na čítanie iných konfiguračných súborov a ich následné začlenenie do aktuálneho konfiguračného súboru od miesta, kde sa direktíva nachádza. K tomu dochádza pri spustení servera Apache.
Keď prejdete na koniec súboru apache2.conf, mali by ste vidieť niekoľko direktív include. Tieto direktívy načítavajú definície modulov v adresári mods-enabled, súbor ports.conf, lokálne konfigurácie v adresári conf-enabled a konfigurácie virtuálnych hostiteľov v adresári sites-enabled.
Sekcia globálnej konfigurácie servera
Sekcia globálnej konfigurácie servera obsahuje nastavenia a inštrukcie, ktoré riadia fungovanie Apache na globálnej úrovni. Obsahuje niekoľko direktív, ktorých hodnoty môžete upraviť a zmeniť tak správanie Apache. Poďme si niektoré z nich predstaviť:
- Timeout – Táto direktíva určuje maximálny čas, za ktorý má server splniť požiadavku. Predvolene je to 300 sekúnd, čo je pravdepodobne príliš veľa, ak vyvíjate rýchlejšie reagujúcu aplikáciu. Túto hodnotu môžete zmeniť na nižšiu, ak má váš server dostatok zdrojov.
- KeepAlive – Určuje, že každé pripojenie by malo zostať otvorené na spracovanie viacerých požiadaviek od rovnakého klienta. Predvolene je nastavená na „On“. Ak je však nastavená na „Off“, každá požiadavka bude musieť nadviazať nové pripojenie, a to ako od rovnakého klienta. To môže spôsobiť výrazné preťaženie servera.
- MaxKeepAliveRequests – Riadi maximálny počet požiadaviek povolených počas jedného trvalého pripojenia pred jeho ukončením. Ak chcete povoliť neobmedzený počet pripojení, nastavte hodnotu na 0. Pre maximálny výkon a efektivitu nastavte toto číslo na čo najvyššie.
- KeepAliveTimeout – Určuje maximálny počet sekúnd, počas ktorých sa po poslednej požiadavke čaká na ďalšiu požiadavku od rovnakého klienta pred ukončením pripojenia. Predvolená hodnota je 5 sekúnd. Ak tento čas uplynie, pri ďalšej požiadavke sa na jej spracovanie vytvorí nové pripojenie.
- HostnameLookups – Rozhoduje o tom, či má byť povolené vyhľadávanie DNS. Predvolene je vypnuté. Ak ho povolíte, každá požiadavka bude mať za následok aspoň jedno vyhľadávanie na nameserveri, čo výrazne negatívne ovplyvní výkon vášho servera.
Predvolený súbor virtuálneho hostiteľa
Nová inštalácia servera Apache prichádza s predvoleným súborom virtuálneho hostiteľa s názvom 000-default.conf. Toto je súbor, ktorý poskytuje predvolenú stránku index.html pre Apache. Nachádza sa v adresári sites-available. Obsah tohto súboru vám poskytne všeobecnú predstavu o formáte súborov virtuálnych hostiteľov Apache. Zadajte nasledujúci príkaz na otvorenie súboru:
|
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Tu je obsah súboru. Pre stručnosť sme odstránili komentáre:
|
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Ako môžete vidieť v hlavičke konfigurácie VirtualHost *:80, v predvolenom nastavení je tento virtuálny hostiteľ nakonfigurovaný na spracovanie požiadaviek na porte 80. Toto je štandardný port HTTP.
Apache je navrhnutý tak, aby používal najšpecifickejšiu definíciu virtuálneho hostiteľa, ktorá zodpovedá konkrétnej požiadavke. To znamená, že tento konkrétny virtuálny hostiteľ nemusí nevyhnutne spracovať každú požiadavku na server. Ak by existoval iný súbor virtuálneho hostiteľa s konkrétnejšou definíciou, mal by prednosť pred týmto súborom.
Tu sú popisy direktív v súbore virtuálneho hostiteľa:
- ServerAdmin – Určuje kontaktný e-mail, ktorý sa má použiť v prípade problémov so serverom. Apache ho zvyčajne zobrazuje na svojej vygenerovanej chybovej stránke. Ak nastavíte ServerSignature na „Email“ v súbore /etc/apache2/conf-enabled/security.conf , tu zadaná e-mailová adresa sa zobrazí s odkazom mailto
- DocumentRoot – Táto direktíva ukazuje na adresár obsahujúci súbory webovej lokality. Predvolenú uvítaciu indexovú stránku Apache nájdete v adresári /var/www/html v systéme Ubuntu 20.04.
- ErrorLog – Táto direktíva určuje umiestnenie súboru s chybovým protokolom.
- CustomLog – Táto direktíva zobrazuje umiestnenie prístupového protokolu a formát zobrazenia protokolu.
Ďalšie direktívy virtuálneho hostiteľa
- ServerName – Určuje názov domény alebo IP adresu, ktorú má virtuálny hostiteľ spracovávať. Ak by sme definovali viacero virtuálnych hostiteľov, aby náš server Apache mohol obsluhovať viacero webových lokalít, pridali by sme direktívu ServerName a špecifikovali doménu, ktorú má každý virtuálny hostiteľ obsluhovať.
- ServerAlias – Táto direktíva umožňuje, aby sa jeden súbor virtuálneho hostiteľa vzťahoval na viac ako jeden názov, čím poskytuje alternatívne domény na prístup k rovnakému obsahu. Napríklad, keď majú vaši používatelia prístup k rovnakému obsahu, ak pred názov vašej domény pridajú www. Napríklad do virtuálneho hostiteľa pre doménu example.com by sme mohli pridať nasledujúce:
|
1 2 |
ServerName example.com ServerAlias www.example.com |
Direktíva definície adresára
V reálnych prípadoch budete mať súbory svojej webovej lokality pravdepodobne vo viacerých adresároch. Predvolený súbor virtuálneho hostiteľa neobsahuje direktívu Directory pretože môže obsluhovať iba jeden súbor index.html. Direktíva Directory určuje, ako Apache narába s rôznymi adresármi v rámci koreňového adresára dokumentov webovej lokality. V tejto direktíve tiež definujete obmedzenia prístupu k súborovému systému. V predvolenom nastavení Apache povoľuje prístup z internetu iba k súborom v adresári /var/www . V tomto adresári môžete vytvoriť ďalšie adresáre, ktoré budú obsahovať súbory vašej webovej lokality. Okrem toho môžete určiť, ako sa má k súborom v adresári pristupovať. Vzorová definícia môže vyzerať takto:
|
1 2 3 4 5 |
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> |
Direktíva <Directory /var/www/html> určuje adresár, na ktorý sa tieto pravidlá budú vzťahovať. „AllowOverride” určuje, či súbor „.htaccess” má prepísať nastavenia, ak ho umiestnite do špecifikovaného adresára. Je to potrebné pri práci s frameworkmi ako Laravel, ktoré pracujú s .htaccess a prepisovaním URL.
Ak sa chcete dozvedieť viac o virtuálnych hostiteľoch, môžete navštíviť náš návod na to, ako nastaviť virtuálnych hostiteľov Apache na Ubuntu 20.04. Tu je ukážkový súbor virtuálneho hostiteľa so všetkými direktívami, ktoré sme definovali:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@localhost.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> </VirtualHost> |
Direktívy Redirect, Alias a ScriptAlias
V niektorých prípadoch môžete chcieť pristupovať k súborom webových stránok alebo spustiteľným súborom, ktoré sa nenachádzajú priamo v adresári DocumentRoot. Tu prichádzajú na rad tieto tri direktívy.
Direktíva Redirect inštruuje klientov, aby vytvorili novú požiadavku s inou URL adresou. Zvyčajne ju použijete, keď chcete návštevníkov svojho webu presmerovať na iný názov domény alebo IP adresu. Upozorňujeme, že Redirect sa vykoná ako prvá pred Alias a ScriptAlias. Direktíva Alias mapuje URL adresu na cestu k adresáru. Direktíva ScriptAlias mapuje URL adresu na adresáre, ktoré budú obsahovať spustiteľné skripty. Aby Alias a ScriptAlias fungovali, musíte nastaviť oprávnenia adresára pre používateľa www-data, ktorého web používa.
Ako povoliť stránky a moduly v Apache
Virtuálni hostitelia a moduly musia byť povolené predtým, ako sa stanú aktívnymi a prístupnými pre proces Apache. Okrem toho sa virtuálni hostitelia vytvárajú v adresári sites-available, ako už bolo vysvetlené. Ak máte súbor virtuálneho hostiteľa s názvom example.com.conf, môžete ho povoliť pomocou nasledujúceho príkazu:
|
1 |
sudo a2ensite example.com.conf |
Tento príkaz povolí virtuálneho hostiteľa. Aby sa však zmeny prejavili, musíte inštruovať Apache, aby znova načítal konfiguračné súbory zadaním nasledujúceho príkazu:
|
1 |
sudo service apache2 reload |
Možno budete chcieť zakázať súbor virtuálneho hostiteľa s názvom example.com.conf aby ho Apache nepoužíval na vybavovanie požiadaviek. Ak to chcete urobiť, zadajte nasledujúci príkaz na zakázanie súboru:
|
1 |
sudo a2dissite example.com.conf |
Opäť platí, že aby sa zmeny prejavili okamžite, musíte inštruovať Apache, aby znova načítal konfiguračné súbory zadaním nasledujúceho príkazu:
|
1 |
sudo service apache2 reload |
Podobne môžete povoliť a zakázať moduly pomocou rovnakej syntaxe. Príkaz na povolenie modulu je “a2enmod” a príkaz na zakázanie modulu je “a2dismod.” Napríklad existuje modul Apache s názvom mod_rewrite, ktorý pomáha s prepisovaním URL adries v závislosti od konfigurácií .htaccess. Tento modul musíte povoliť, aby súbor .htaccess fungoval. Môžete to urobiť zadaním príkazu:
|
1 |
sudo a2enmod rewrite |
Aby sa táto zmena prejavila, musíte znova načítať konfigurácie Apache. Modul môžete tiež zakázať zadaním príkazu:
|
1 |
sudo a2dismod rewrite |
Potom znova načítajte konfigurácie Apache2, aby sa zmeny prejavili okamžite.
Na záver uvádzame niekoľko ďalších zdrojov, ktoré vám pomôžu zoznámiť sa s webovým serverom Apache:
- Inštalácia servera Apache na Ubuntu 18.04: Návod ako na to
- Ako nainštalovať Linux, Apache, MySQL, PHP (LAMP) stack na CentOS 7
- Zabezpečenie Apache pomocou Let’s Encrypt na Ubuntu 18.04
- Svet webových serverov: Apache vs. Nginx
Záver
V tomto návode sme definovali základné konfiguračné súbory Apache v systémoch Ubuntu a Debian. Ako sme ukázali, Apache je vysoko modulárny, čo znamená, že môžete nainštalovať množstvo modulov na vykonávanie rôznych úloh.
Tieto moduly môžete jednoducho povoliť a zakázať a zmeniť ďalšie konfigurácie, aby ste dosiahli rôzne výsledky. Teraz môžete upraviť lokálne konfiguračné súbory, ktoré sú potom zahrnuté v hlavnom konfiguračnom súbore. Nemusíte sa tak obávať poškodenia globálneho konfiguračného súboru.
Príjemnú prácu s počítačom!
Komentáre
Zatiaľ žiadne komentáre. Buďte prvý.