Zpět na blog

Konfigurace webového serveru Apache na Ubuntu nebo Debian VPS

Konfigurace webového serveru Apache na Ubuntu nebo Debian VPS

Úvod

Apache je v současnosti nejpoužívanějším webovým serverem na světě. Jedná se o open-source software vyvinutý před více než dvaceti lety, který spravuje Apache Software Foundation. K září 2020 se odhaduje, že obsluhuje 35 % veškerého webového provozu na světě.

Vývojáři dávají přednost Apache pro jeho rychlost, bezpečnost, spolehlivost, robustnost a snadné přizpůsobení. Apache je navíc schopen splnit potřeby mnoha prostředí, protože umožňuje instalaci různých rozšíření a modulů. To je možné díky sadě konfigurací, které mohou vývojáři a správci serverů upravovat pro různé účely. V tomto návodu vás provedeme obecnými konfiguračními soubory a možnostmi, které mohou ovlivnit různé výsledky na serverech Ubuntu a Debian.

Debian a Ubuntu patří mezi nejoblíbenější serverové operační systémy. Tyto dva systémy mají mnoho společného. Oba například používají správce balíčků APT a balíčky DEB pro ruční instalaci. Nastavení Apache a adresářovou strukturu zpracovávají podobně. Proto byste měli být schopni sledovat tento návod s kterýmkoli z těchto operačních systémů. Nejprve můžete postupovat podle tohoto návodu na nastavení serveru Ubuntu v několika krocích.

Poté se přihlaste jako uživatel bez oprávnění root s právy sudo a můžeme začít!

Jak nainstalovat Apache na Ubuntu and Debian

Pokud váš server ještě nemá Apache, můžete jej snadno nainstalovat pomocí jednoho příkazu. Nejprve spusťte příkaz pro aktualizaci:

Poté můžete Apache nainstalovat zadáním následujícího příkazu:

Po dokončení instalace můžete zkontrolovat nainstalovanou verzi pomocí příkazu:

V době psaní tohoto návodu byla verze:

Apache Web Server

Poté navštivte IP adresu nebo doménové jméno svého serveru. Měli byste vidět výchozí indexovou stránku Apache:

Apache Web Server

Souborová hierarchie Apache v distribucích Ubuntu a Debian

Distribuce Ubuntu i Debian používají správce balíčků apt. Podobně při instalaci balíčku vznikají podobné souborové hierarchie. V našem případě, jak pro Ubuntu, tak pro Debian, uchovává Apache své konfigurační soubory v adresáři „/etc/apache2“. Přejděte do tohoto adresáře pomocí následujícího příkazu a vypište jeho obsah:

Výstup příkazu můžete vidět na snímku obrazovky níže:

screenshot

Můžete vidět řadu souborů a podadresářů, se kterými byste se měli seznámit při konfiguraci nastavení serveru Apache. Zde je jejich popis:

  • apache2.conf – Je to hlavní konfigurační soubor pro server Apache. Obsahuje také všechny výchozí konfigurace. Přestože téměř všechny konfigurace lze provádět z tohoto souboru, z důvodu zjednodušení a ochrany tohoto výchozího souboru před poškozením se vždy doporučuje používat samostatné určené soubory.
  • conf-available – Je to adresář obsahující další lokální konfigurační soubory a soubory jiných aplikací, které ještě nejsou spojeny s žádnými moduly. Konfigurace v tomto adresáři nejsou aktivní, dokud je nepovolíte. Příkaz a2enconf může povolit konfigurační soubor. Zde je obsah tohoto adresáře:

Apache Web Server

  • conf-enabled – Je to adresář obsahující další lokální konfigurace a konfigurační soubory jiných aplikací spojených s jejich odpovídajícími moduly. Konfigurační soubory v tomto adresáři jsou aktivní a ovlivňují chování Apache. Konfigurační soubor můžete zakázat pomocí příkazu a2disconf. Zde je obsah tohoto adresáře:

conf-enabled

  • envvars – Je to soubor obsahující proměnné prostředí Apache2. Proměnné v tomto souboru ovlivňují pouze Apache a nesouvisí s vaším systémem Linux. Zde je obsah tohoto souboru:

envvars

  • magic – Je to soubor obsahující instrukce pro určení typu MIME souboru. Pomáhá serveru určit typ souboru.
  • mods-available – Je to adresář obsahující konfigurační soubory pro načtení modulů a jejich konfiguraci. Nejsou však dosud povoleny. Můžete je povolit pomocí příkazu a2enmod.
  • mods-enabled – Je to adresář obsahující konfigurační soubory pro načtení modulů a jejich konfiguraci. Konfigurace v tomto adresáři jsou již povoleny a odkazují na odpovídající moduly. Moduly můžete zakázat pomocí příkazu a2dismod. 
  • ports-conf – Je to soubor určující porty dostupné pro virtuální hostitele a TCP porty, na kterých Apache naslouchá.
  • sites-available – Je to adresář obsahující dostupné konfigurační soubory pro virtuální hostitele Apache. Virtuální hostitelé umožňují Apache obsluhovat různé webové stránky. Soubory v tomto adresáři nejsou dosud aktivní. Soubor virtuálního hostitele můžete povolit příkazem a2ensite.
  • sites-enabled – Je to adresář obsahující aktivované konfigurační soubory virtuálních hostitelů. Obvykle obsahuje symbolické odkazy na soubory v adresáři sites-available. Soubor virtuálního hostitele můžete zakázat pomocí příkazu a2dissite.

Modulární design konfiguračních souborů Apache vám umožňuje upravovat a přidávat soubory podle potřeby.

Obsah souboru apache2.conf

Soubor v “/etc/apache2/apache2.conf” obsahuje hlavní konfigurační soubory pro Apache. Přesněji řečeno obsahuje konfigurační direktivy, které serveru dávají instrukce. Skládá se ze tří sekcí, které definují globální konfigurace procesů serveru, výchozí konfigurace serveru a konfigurace pro virtuální hostitele .

V systémech Ubuntu a Debian obsahuje většina souboru konfigurace globálních procesů serveru. Směrem dolů najdete konfigurace pro výchozí server a virtuální hostitele pomocí direktivy „Include“ . Apache používá direktivu „Include“ k načtení dalších konfiguračních souborů a jejich následnému zahrnutí do aktuálního konfiguračního souboru od místa, kde se direktiva objevuje. K tomu dochází při spuštění serveru Apache.

Při posunu na konec souboru apache2.conf byste měli vidět několik direktiv include. Tyto direktivy načítají definice modulů v adresáři mods-enabled, soubor ports.conf, lokální konfigurace v adresáři conf-enabled a konfigurace virtuálních hostitelů v adresáři sites-enabled.

Sekce globální konfigurace serveru

Sekce globální konfigurace serveru obsahuje nastavení a instrukce, které řídí, jak Apache globálně funguje. Obsahuje některé direktivy, jejichž hodnoty můžete upravit a změnit tak chování Apache. Pojďme si některé z nich probrat:

  • Timeout – Tato direktiva určuje maximální čas pro vyřízení požadavku serverem. Ve výchozím nastavení je to 300 sekund, což je pravděpodobně příliš mnoho, pokud vyvíjíte rychle reagující aplikaci. Tuto hodnotu můžete snížit, pokud má váš server dostatek prostředků.
  • KeepAlive – Určuje, že každé připojení by mělo zůstat otevřené pro zpracování více požadavků od stejného klienta. Ve výchozím nastavení je nastaveno na „On“. Pokud je však nastaveno na „Off“, pak každý požadavek bude muset navázat nové připojení, a to i od stejného klienta. To může způsobit značné přetížení serveru.
  • MaxKeepAliveRequests – Řídí maximální počet požadavků povolených během jednoho trvalého připojení před jeho ukončením. Chcete-li povolit neomezený počet připojení, nastavte hodnotu na 0. Pro maximální výkon a efektivitu nastavte toto číslo na nejvyšší možnou hodnotu.
  • KeepAliveTimeout – Určuje maximální počet sekund, po který se má po posledním požadavku čekat na další požadavek od stejného klienta, než se připojení ukončí. Výchozí hodnota je 5 sekund. Pokud čas uplyne, při dalším požadavku se vytvoří nové připojení pro zpracování požadavku.
  • HostnameLookups – Rozhoduje o tom, zda má být povoleno vyhledávání DNS. Ve výchozím nastavení je vypnuté. Pokud jej povolíte, každý požadavek povede k alespoň jednomu dotazu na jmenný server, což výrazně negativně ovlivní výkon vašeho serveru.

Výchozí soubor virtuálního hostitele

Čistá instalace serveru Apache obsahuje výchozí soubor virtuálního hostitele s názvem 000-default.conf. Jedná se o soubor, který slouží pro výchozí stránku index.html serveru Apache. Ukládá se do adresáře sites-available. Obsah tohoto souboru vám poskytne obecnou představu o formátu souborů virtuálních hostitelů Apache. Pro otevření souboru zadejte následující příkaz:

Zde je obsah souboru. Pro stručnost jsme odstranili komentáře:

Jak můžete vidět v konfigurační hlavičce VirtualHost *:80, je tento virtuální hostitel ve výchozím nastavení nakonfigurován tak, aby zpracovával požadavky na portu 80. Jedná se o standardní port HTTP.

Apache je navržen tak, aby používal nejspecifičtější definici virtuálního hostitele, která odpovídá konkrétnímu požadavku. To znamená, že tento konkrétní virtuální hostitel nemusí nutně zpracovávat každý požadavek na server. Pokud by existoval jiný soubor virtuálního hostitele s konkrétnější definicí, měl by před tímto souborem přednost.

Zde jsou popisy direktiv v souboru virtuálního hostitele:

  • ServerAdmin – Určuje kontaktní e-mail, který se má použít v případě problémů se serverem. Apache jej obvykle zobrazuje na své vygenerované chybové stránce. Pokud nastavíte ServerSignature na „Email“ v souboru /etc/apache2/conf-enabled/security.conf , zobrazí se zde uvedená e-mailová adresa s odkazem mailto
  • DocumentRoot – Tato direktiva ukazuje na adresář obsahující soubory webu. Výchozí uvítací stránku index serveru Apache najdete v adresáři /var/www/html v systému Ubuntu 20.04.
  • ErrorLog – Tato direktiva určuje umístění souboru protokolu chyb.
  • CustomLog – Tato direktiva zobrazuje umístění protokolu přístupů a formát zobrazení protokolu.

Další direktivy virtuálního hostitele

  • ServerName – Určuje název domény nebo IP adresu, kterou má virtuální hostitel obsluhovat. Pokud bychom definovali více virtuálních hostitelů, aby náš server Apache mohl obsluhovat více webů, přidali bychom direktivu ServerName a specifikovali doménu, kterou má každý virtuální hostitel obsluhovat.
  • ServerAlias – Tato direktiva umožňuje, aby se jeden soubor virtuálního hostitele vztahoval na více než jeden název, což poskytuje alternativní domény pro přístup ke stejnému obsahu. Například když mají vaši uživatelé přístup ke stejnému obsahu, pokud před název vaší domény předřadí www. Do virtuálního hostitele pro doménu example.com bychom například mohli přidat následující:

Direktiva definice adresáře (Directory)

V reálných případech budete mít soubory svého webu pravděpodobně v několika adresářích. Výchozí soubor virtuálního hostitele neobsahuje direktivu Directory, protože může obsluhovat pouze jeden soubor index.html. Direktiva Directory určuje, jak Apache zachází s různými adresáři v kořenovém adresáři dokumentů webu. V této direktivě také definujete omezení přístupu k souborovému systému. Ve výchozím nastavení Apache povoluje přístup z internetu pouze k souborům v adresáři /var/www. V tomto adresáři můžete vytvářet další adresáře, které budou obsahovat soubory vašeho webu. Kromě toho můžete určit, jakým způsobem se má k souborům v adresáři přistupovat. Ukázková definice může vypadat takto:

Direktiva <Directory /var/www/html> určuje adresář, na který se tato pravidla budou vztahovat. „AllowOverride“ volba určuje, zda soubor „.htaccess“ by měl přepsat nastavení, pokud jej umístíte do určeného adresáře. To je nezbytné při práci s frameworky jako Laravel, které pracují s .htaccess a přepisováním URL.

To learn more about virtual hosts, you can visit our návod, jak nastavit virtuální hostitele Apache na Ubuntu 20.04. Zde je ukázkový soubor virtuálního hostitele se všemi direktivami, které jsme definovali:

Direktivy Redirect, Alias a ScriptAlias

V některých případech můžete chtít přistupovat k souborům webu nebo spustitelným souborům, které nejsou přímo v adresáři DocumentRoot. Zde přicházejí na řadu tyto tři direktivy.

Direktiva Redirect instruuje klienty, aby provedli nový požadavek s jinou URL. Obvykle ji použijete, když chcete návštěvníky svého webu přesměrovat na jiný název domény nebo IP adresu. Všimněte si, že Redirect se provádí jako první před Alias a ScriptAlias. Direktiva Alias mapuje URL na cestu k adresáři. Direktiva ScriptAlias mapuje URL na adresáře, které budou obsahovat spustitelné skripty. Aby Alias a ScriptAlias fungovaly, musíte nastavit oprávnění adresáře pro uživatele www-data, kterého web používá.

Jak povolit weby a moduly v Apache

Virtuální hostitelé a moduly musí být povoleny, než se stanou aktivními a přístupnými pro proces Apache. Virtuální hostitelé se navíc vytvářejí uvnitř adresáře sites-available, jak bylo vysvětleno. Pokud máte soubor virtuálního hostitele s názvem example.com.conf, můžete jej povolit pomocí následujícího příkazu:

Tento příkaz povolí virtuálního hostitele. Aby se však změny projevily, musíte Apache instruovat k opětovnému načtení konfiguračních souborů zadáním následujícího příkazu:

Možná budete chtít zakázat soubor virtuálního hostitele s názvem example.com.conf aby jej Apache nepoužíval k vyřizování požadavků. Chcete-li to provést, zadejte následující příkaz pro zakázání souboru:

Aby se změny projevily okamžitě, musíte opět instruovat Apache k opětovnému načtení konfiguračních souborů zadáním následujícího příkazu:

Podobně můžete povolit a zakázat moduly pomocí stejné syntaxe. Příkaz pro povolení modulu je “a2enmod” a příkaz pro zakázání modulu je “a2dismod.” Například existuje modul Apache s názvem mod_rewrite, který pomáhá s přepisováním URL v závislosti na konfiguraci .htaccess. Tento modul musíte povolit, aby soubor .htaccess fungoval. Můžete to provést zadáním příkazu:

Aby se tato změna projevily, musíte znovu načíst konfiguraci Apache. Modul můžete také zakázat zadáním příkazu:

Poté znovu načtěte konfiguraci Apache2, aby se změny projevily okamžitě.

Na závěr uvádíme několik dalších zdrojů, které vám pomouhou seznámit se s webovým serverem Apache:

Závěr

V tomto návodu jsme si definovali základní konfigurační soubory Apache v systémech Ubuntu a Debian. Jak jsme si ukázali, Apache je vysoce modulární, což znamená, že můžete nainstalovat spoustu modulů pro provádění různých úkolů.

Tyto moduly můžete snadno povolit a zakázat a změnit další konfigurace pro dosažení různých výsledků. Nyní můžete upravit lokální konfigurační soubory, které jsou následně zahrnuty do hlavního konfiguračního souboru. Nemusíte se tak obávat poškození globálního konfiguračního souboru.

Příjemnou práci s počítačem!

author

Manpreet Singh

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.