• Digitální příslušenství
  • Server
  • Digitální život
  • Zásady ochrany osobních údajů
  • Kontaktujte nás
  1. Domov
  2. Článek
  3. Webové servery - Apache | Ubuntu

Webové servery - Apache | Ubuntu

Rsdaa 22/12/2021 1785

HTTPD – webový server Apache2

Apache je nejběžněji používaný webový server v systémech Linux. Webové servery se používají k poskytování webových stránek požadovaných klientskými počítači. Klienti obvykle požadují a prohlížejí webové stránky pomocí aplikací webového prohlížeče, jako je Firefox, Opera, Chromium nebo Internet Explorer.

Uživatelé zadávají adresu URL (Uniform Resource Locator), aby odkazovali na webový server pomocí jeho plně kvalifikovaného názvu domény (FQDN) a cesty k požadovanému zdroji. Například pro zobrazení domovské stránky webu Ubuntu uživatel zadá pouze FQDN:

www.ubuntu.com

Chcete-li zobrazit podstránku komunity, uživatel zadá FQDN následované cestou:

www.ubuntu.com/community

Nejběžnějším protokolem používaným k přenosu webových stránek je Hyper Text Transfer Protocol (HTTP). Podporovány jsou také protokoly jako Hyper Text Transfer Protocol over Secure Sockets Layer (HTTPS) a File Transfer Protocol (FTP), protokol pro odesílání a stahování souborů.

Webové servery Apache se často používají v kombinaci s databázovým strojem MySQL, skriptovacím jazykem HyperText Preprocessor (PHP) a dalšími populárními skriptovacími jazyky, jako je Python a Perl. Tato konfigurace se nazývá LAMP (Linux, Apache, MySQL a Perl/Python/PHP) a tvoří výkonnou a robustní platformu pro vývoj a nasazení webových aplikací.

Instalace

Webový server Apache2 je k dispozici v Ubuntu Linux. Chcete-li nainstalovat Apache2:

Na příkazovém řádku zadejte následující příkaz:

sudo apt install apache2

Konfigurace

Apache2 se konfiguruje umístěním direktiv do konfiguračních souborů ve formátu prostého textu. Tyto direktivy jsou rozděleny mezi následující soubory a adresáře:

apache2.conf: hlavní konfigurační soubor Apache2. Obsahuje nastavení, která jsou globální pro Apache2.

httpd.conf: historicky hlavní konfigurační soubor Apache2, pojmenovaný podle démona httpd. V jiných distribucích (nebo starších verzích Ubuntu) může být soubor přítomen. V Ubuntu byly všechny možnosti konfigurace přesunuty do apache2.conf a níže uvedených adresářů a tento soubor již neexistuje.

conf-available: tento adresář obsahuje dostupné konfigurační soubory. Všechny soubory, které byly dříve v /etc/apache2/conf.d, by měly být přesunuty do /etc/apache2/conf-available.

conf-enabled: obsahuje symbolické odkazy na soubory v /etc/apache2/conf-available. Když je konfigurační soubor symbolicky propojen, bude povolen při příštím restartu apache2.

envvars: soubor, kde jsou nastaveny proměnné prostředí Apache2.

mods-available: tento adresář obsahuje konfigurační soubory pro načítání modulů a jejich konfiguraci. Ne všechny moduly však budou mít specifické konfigurační soubory.

mods-enabled: obsahuje symbolické odkazy na soubory v /etc/apache2/mods-available. Když je konfigurační soubor modulu symbolicky propojen, bude povolen při příštím restartu apache2.

ports.conf: obsahuje direktivy, které určují, na kterých portech TCP Apache2 naslouchá.

sites-available: tento adresář obsahuje konfigurační soubory pro virtuální hostitele Apache2. Virtuální hostitelé umožňují konfiguraci Apache2 pro více webů, které mají samostatné konfigurace.

sites-enabled: jako je povoleno mods, obsahuje site-enabled symbolické odkazy na adresář /etc/apache2/sites-available. Podobně, když je konfigurační soubor v sites-available označen jako symbolický odkaz, web konfigurovaný jím bude aktivní po restartování Apache2.

magic: instrukce pro určení typu MIME na základě prvních několika bajtů souboru.

Kromě toho lze pomocí direktivy Include přidat další konfigurační soubory a k zahrnutí mnoha konfiguračních souborů lze použít zástupné znaky. Jakákoli direktiva může být umístěna v kterémkoli z těchto konfiguračních souborů. Změny v hlavních konfiguračních souborech rozpozná Apache2 pouze při jeho spuštění nebo restartu.

Server také čte soubor obsahující typy dokumentů MIME; název souboru se nastavuje direktivou TypesConfig, obvykle přes /etc/apache2/mods-available/mime.conf, která může také obsahovat doplňky a přepisy, a ve výchozím nastavení je /etc/mime.types.

Základní nastavení

Tato část vysvětluje základní konfigurační parametry serveru Apache2. Další podrobnosti naleznete v dokumentaci k Apache2.

Apache2 se dodává s výchozí konfigurací vhodnou pro virtuální hostitele. To znamená, že je nakonfigurován s jedním výchozím virtuálním hostitelem (pomocí direktivy VirtualHost), který lze upravit nebo použít tak, jak je, pokud máte jeden web, nebo použít jako šablonu pro další virtuální hostitele, pokud máte více webů. Pokud zůstanete sami, výchozí virtuální hostitel bude sloužit jako váš výchozí web nebo uživatelé webu uvidí, zda zadaná adresa URL neodpovídá direktivě ServerName žádného z vašich vlastních webů. Chcete-li upravit výchozího virtuálního hostitele, upravte soubor /etc/apache2/sites-available/000-default.conf.

Poznámka

Direktivy nastavené pro virtuálního hostitele platí pouze pro tohoto konkrétního virtuálního hostitele. Pokud je direktiva nastavena na celém serveru a není definována v nastavení virtuálního hostitele, použije se výchozí nastavení. Můžete například definovat e-mailovou adresu správce webu a nedefinovat jednotlivé e-mailové adresy pro každého virtuálního hostitele.

Pokud si přejete nakonfigurovat nového virtuálního hostitele nebo web, zkopírujte tento soubor do stejného adresáře s názvem, který si zvolíte. Například:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/mynewsite.conf

Upravte nový soubor pro konfiguraci nového webu pomocí některých direktiv popsaných níže.

Směrnice ServerAdmin určuje e-mailovou adresu, která má být inzerována pro správce serveru. Výchozí hodnota je webmaster@localhost. Toto by mělo být změněno na e-mailovou adresu, která vám bude doručena (pokud jste správcem serveru). Pokud má vaše webová stránka problém, Apache2 zobrazí chybovou zprávu obsahující tuto e-mailovou adresu, na kterou lze problém nahlásit. Najděte tuto direktivu v konfiguračním souboru vašeho webu v /etc/apache2/sites-available.

Direktiva Listen určuje port a volitelně IP adresu, na které by měl Apache2 naslouchat. Pokud IP adresa není specifikována, Apache2 bude naslouchat na všech IP adresách přiřazených počítači, na kterém běží. Výchozí hodnota pro direktivu Listen je 80. Změňte tuto hodnotu na 127.0.0.1:80, aby Apache2 naslouchal pouze na vašem rozhraní zpětné smyčky, takže nebude dostupný pro Internet, na (například) 81, chcete-li změnit port, který poslouchá, nebo jej ponechte tak, jak je pro normální provoz. Tuto direktivu lze nalézt a změnit v jejím vlastním souboru /etc/apache2/ports.conf

Direktiva ServerName je volitelná a určuje, na jaké FQDN má váš web odpovídat. Výchozí virtuální hostitel nemá zadanou direktivu ServerName, takže bude reagovat na všechny požadavky, které neodpovídají direktivě ServerName v jiném virtuálním hostiteli. Pokud jste právě získali název domény mynewsite.com a chcete ji hostit na svém serveru Ubuntu, hodnota direktivy ServerName v konfiguračním souboru virtuálního hostitele by měla být mynewsite.com. Přidejte tuto direktivu do nového souboru virtuálního hostitele, který jste vytvořili dříve (/etc/apache2/sites-available/mynewsite.conf).

Můžete také chtít, aby vaše stránky odpovídaly na www.mynewsite.com, protože mnoho uživatelů bude předpokládat, že předpona www je vhodná. Použijte k tomu direktivu ServerAlias. Můžete také použít zástupné znaky v direktivě ServerAlias.

Následující konfigurace například způsobí, že vaše stránky odpoví na jakýkoli požadavek domény končící na .mynewsite.com.

ServerAlias ​​*.mynewsite.com

Direktiva DocumentRoot určuje, kde má Apache2 hledat soubory, které tvoří web. Výchozí hodnota je /var/www/html, jak je uvedeno v /etc/apache2/sites-available/000-default.conf. Pokud chcete, změňte tuto hodnotu v souboru virtuálního hostitele vašeho webu a v případě potřeby nezapomeňte vytvořit tento adresář!

Povolte nový VirtualHost pomocí nástroje a2ensite a restartujte Apache2:

sudo a2ensite mynewsitesudo systemctl restart apache2.service

Poznámka

Nezapomeňte nahradit mynewsite popisnějším názvem pro VirtualHost. Jednou z metod je pojmenovat soubor podle direktivy ServerName VirtualHost.

Podobně použijte nástroj a2dissite k deaktivaci stránek. To může být užitečné při řešení problémů s konfigurací s více virtuálními hostiteli:

sudo a2dissite mynewsitesudo systemctl restartujte apache2.service

Výchozí nastavení

Tato část vysvětluje konfiguraci výchozího nastavení serveru Apache2. Pokud například přidáte virtuálního hostitele, nastavení, která pro virtuálního hostitele nakonfigurujete, mají pro tohoto virtuálního hostitele přednost. Pro direktivu, která není definována v nastavení virtuálního hostitele, se použije výchozí hodnota.

AdresářIndex je výchozí stránka obsluhovaná serverem, když uživatel požaduje index adresáře zadáním lomítka (/) na konci názvu adresáře.

Když si například uživatel vyžádá stránku http://www.example.com/tento_adresář/, zobrazí se mu buď stránka DirectoryIndex, pokud existuje, serverem vygenerovaný seznam adresářů, pokud neexistuje, a Je zadána volba Indexes nebo stránka Oprávnění odepřena, pokud ani jedna není pravdivá. Server se pokusí najít jeden ze souborů uvedených v direktivě DirectoryIndex a vrátí první, který najde. Pokud nenajde žádný z těchto souborů a pokud je pro tento adresář nastavena možnost Indexy voleb, server vygeneruje a vrátí seznam podadresářů a souborů v adresáři ve formátu HTML. Výchozí hodnota v /etc/apache2/mods-available/dir.conf je „index.html index.cgi index.pl index.php index.xhtml index.htm“. Pokud tedy Apache2 nalezne v požadovaném adresáři soubor odpovídající některému z těchto jmen, zobrazí se první.

Direktiva ErrorDocument vám umožňuje určit soubor, který má Apache2 použít pro konkrétní chybové události. Pokud například uživatel požaduje zdroj, který neexistuje, dojde k chybě 404. Ve výchozím nastavení Apache2 jednoduše vrátí návratový kód HTTP 404. Přečtěte si /etc/apache2/conf-available/localized-error-pages.conf pro podrobné pokyny pro použití ErrorDocument, včetně umístění ukázkových souborů.

Ve výchozím nastavení server zapisuje protokol přenosu do souboru /var/log/apache2/access.log. Toto můžete změnit na základě jednotlivých stránek v konfiguračních souborech vašeho virtuálního hostitele pomocí direktivy CustomLog nebo ji vynechat, abyste přijali výchozí nastavení uvedené v /etc/apache2/conf-available/other-vhosts-access-log.conf. Můžete také určit soubor, do kterého se budou protokolovat chyby, pomocí direktivy ErrorLog, jejíž výchozí nastavení je /var/log/apache2/error.log. Ty jsou uchovávány odděleně od protokolů přenosu, aby vám pomohly při odstraňování problémů s vaším serverem Apache2. Můžete také zadat LogLevel (výchozí hodnota je “warn”) a LogFormat (viz/etc/apache2/apache2.conf pro výchozí hodnotu).

Některé možnosti jsou specifikovány pro jednotlivé adresáře, nikoli pro servery. Jednou z těchto směrnic jsou možnosti. Stanza Directory je uzavřena ve značkách podobných XML, například:

...

Direktiva Options ve stanze Directory přijímá jednu nebo více z následujících hodnot (mimo jiné), oddělených mezerami:

ExecCGI – Umožňuje provádění skriptů CGI. Pokud tato volba není zvolena, skripty CGI se nespustí.

Pozor

Většina souborů by neměla být spouštěna jako CGI skripty. To by bylo velmi nebezpečné. Skripty CGI by měly být uchovávány v adresáři odděleném od vašeho DocumentRoot a mimo něj a pouze tento adresář by měl mít nastavenou volbu ExecCGI. Toto je výchozí a výchozí umístění pro skripty CGI je /usr/lib/cgi-bin.

Zahrnuje – Povolit začlenění na straně serveru. Zahrny na straně serveru umožňují, aby soubor HTML zahrnoval další soubory. Další informace najdete v dokumentaci Apache SSI (komunita Ubuntu).

IncludesNOEXEC – Povolit zahrnutí na straně serveru, ale deaktivovat příkazy #exec a #include ve skriptech CGI.

Indexy – Zobrazí formátovaný seznam obsahu adresáře, pokud v požadovaném adresáři neexistuje žádný DirectoryIndex (např. index.html).

Pozor

Z bezpečnostních důvodů by toto obvykle nemělo být nastaveno a rozhodně by nemělo být nastaveno v adresáři DocumentRoot. Tuto možnost povolte opatrně pro jednotlivé adresáře, pouze pokud jste si jisti, že chcete, aby uživatelé viděli celý obsah adresáře.

Vícenásobné zobrazení – Podpora vícenásobného zobrazení s vyjednáváním obsahu; tato možnost je z bezpečnostních důvodů ve výchozím nastavení zakázána. Viz dokumentaci Apache2 k této možnosti.

SymLinksIfOwnerMatch – Následujte pouze symbolické odkazy, pokud má cílový soubor nebo adresář stejného vlastníka jako odkaz.

Nastavení apache2

Tato část vysvětluje některá základní nastavení konfigurace démona apache2.

LockFile – Direktiva LockFile nastavuje cestu k souboru lockfile použitého při kompilaci serveru buď s USE_FCNTL_SERIALIZED_ACCEPT nebo USE_FLOCK_SERIALIZED_ACCEPT. Musí být uložen na místním disku. Pokud není adresář logs umístěn ve sdílené složce NFS, měla by být ponechána na výchozí hodnotě. V takovém případě by měla být výchozí hodnota změněna na umístění na místním disku a na adresář, který je čitelný pouze pro uživatele root.

PidFile – Direktiva PidFile nastavuje soubor, do kterého server zaznamenává své ID procesu (pid). Tento soubor by měl být čitelný pouze pro uživatele root. Ve většině případů by měla být ponechána na výchozí hodnotě.

User – Direktiva User nastavuje ID uživatele, které server používá k odpovídání na požadavky. Toto nastavení určuje přístup serveru. Jakékoli soubory nepřístupné tomuto uživateli budou nepřístupné také návštěvníkům vašeho webu. Výchozí hodnota pro uživatele je „www-data“.

Upozornění

Pokud přesně nevíte, co děláte, nenastavujte direktivu User na root. Použití root jako uživatele vytvoří pro váš webový server velké bezpečnostní díry.

Skupina – Direktiva Group je podobná direktivě User. Skupina nastavuje skupinu, pod kterou bude server odpovídat na požadavky. Výchozí skupina je také „www-data“.

Moduly Apache2

Apache2 je modulární server. To znamená, že základní server obsahuje pouze nejzákladnější funkce. Rozšířené funkce jsou dostupné prostřednictvím modulů, které lze načíst do Apache2. Ve výchozím nastavení je základní sada modulů součástí serveru v době kompilace. Pokud je server zkompilován pro použití dynamicky načítaných modulů, lze moduly zkompilovat samostatně a kdykoli je přidat pomocí direktivy LoadModule. V opačném případě musí být Apache2 překompilován, aby bylo možné přidat nebo odebrat moduly.

Ubuntu kompiluje Apache2, aby umožnilo dynamické načítání modulů. Konfigurační direktivy mohou být podmíněně zahrnuty na přítomnost konkrétního modulu jejich uzavřením do anblock.

Můžete nainstalovat další moduly Apache2 a používat je se svým webovým serverem. Například spusťte následující příkaz na příkazovém řádku pro instalaci modulu Python 3 WSGI:

sudo apt install libapache2-mod-wsgi-py3

Instalace modul automaticky povolí, ale můžeme jej deaktivovat pomocí a2dismod:

sudo a2dismod wsgisudo systemctl restartujte apache2.service

A pak použijte nástroj a2enmod k jeho opětovné aktivaci:

sudo a2enmod wsgisudo systemctl restart apache2.service

V adresáři /etc/apache2/mods-available naleznete další moduly, které jsou již ve vašem systému k dispozici.

Konfigurace HTTPS

Modul mod_ssl přidává na server Apache2 důležitou funkci – schopnost šifrovat komunikaci. Když tedy váš prohlížeč komunikuje pomocí SSL, použije se předpona https:// na začátku adresy URL (Uniform Resource Locator) v navigační liště prohlížeče.

Modul mod_ssl je dostupný v balíčku apache2-common. Chcete-li povolit modul mod_ssl, spusťte na příkazovém řádku následující příkaz:

sudo a2enmod ssl

V souboru /etc/apache2/sites-available/default-ssl.conf je výchozí konfigurační soubor HTTPS. Aby Apache2 poskytoval HTTPS, je potřeba také certifikát a soubor klíče. Výchozí konfigurace HTTPS bude používat certifikát a klíč vygenerovaný balíčkem ssl-cert. Jsou dobré pro testování, ale automaticky vygenerovaný certifikát a klíč by měly být nahrazeny certifikátem specifickým pro web nebo server. Informace o vygenerování klíče a získání certifikátu naleznete v části Certifikáty.

Chcete-li nakonfigurovat Apache2 pro HTTPS, zadejte následující:

sudo a2ensite default-ssl

Poznámka

Adresáře /etc/ssl/certs a /etc/ssl/private jsou výchozí umístění. Pokud instalujete certifikát a klíč do jiného adresáře, ujistěte se, že jste správně změnili SSLCertificateFile a SSLCertificateKeyFile.

Když je Apache2 nyní nakonfigurován pro HTTPS, restartujte službu, abyste povolili nová nastavení:

sudo systemctl restart apache2.service

Poznámka

V závislosti na tom, jak jste certifikát získali, budete možná muset při spuštění Apache2 zadat přístupovou frázi.

Na stránky zabezpečeného serveru se dostanete zadáním https://název_vašeho_hostitele/url/ do adresního řádku prohlížeče.

Sdílení oprávnění k zápisu

Aby více než jeden uživatel mohl zapisovat do stejného adresáře, bude nutné udělit oprávnění k zápisu skupině, kterou sdílejí společně. Následující příklad uděluje sdílené oprávnění k zápisu do /var/www/html skupině „webmasteři“.

sudo chgrp -R webmasters /var/www/htmlsudo chmod -R g=rwX /var/www/html/

Tyto příkazy rekurzivně nastavují skupinová oprávnění pro všechny soubory a adresáře v /var/www/html, aby umožnily čtení, psaní a vyhledávání adresářů. Mnoho správců to považuje za užitečné, protože umožňuje více uživatelům upravovat soubory ve stromu adresářů.

Upozornění

Démon apache2 bude spuštěn jako uživatel www-data, který má odpovídající skupinu www-data. Těm by neměl být udělen přístup pro zápis do kořenového adresáře dokumentu, protože by to znamenalo, že zranitelnosti v Apache nebo aplikacích, které obsluhuje, by útočníkům umožnily přepsat obsluhovaný obsah.

Odkazy

Dokumentace Apache2 obsahuje podrobné informace o konfiguračních direktivách Apache2. Podívejte se také na balíček apache2-doc pro oficiální dokumenty Apache2.

O’Reilly’s Apache Cookbook je dobrým zdrojem pro provádění konkrétních konfigurací Apache2.

Na otázky týkající se Apache2 specifické pro Ubuntu se zeptejte na IRC kanálu #ubuntu-server na freenode.net.


PREV: „Nelze se připojit k vašemu serveru DHCP“ *Řešení* – Xbox One

NEXT: Jak smazat Discord Server - ochotni udělat

Populární články

Žhavé články

Navigační seznamy

Zpět na začátek