Mezi mnoha balíčky, které tvoří operační systém Ubuntu, je webový server Apache. Škálovatelnost a odolnost Ubuntu z něj ve skutečnosti dělá ideální platformu pro hostování i těch nejnavštěvovanějších webových stránek.
V této kapitole vysvětlíme, jak nakonfigurovat systém Ubuntu pomocí Apache tak, aby fungoval jako webový server, včetně zabezpečených (HTTPS) i nezabezpečených (HTTP) konfigurací.
K nastavení vlastního webu potřebujete počítač (nebo instanci cloudového serveru), operační systém, webový server, název domény, název server a IP adresu.
Pokud jde o operační systém, budeme samozřejmě předpokládat, že používáte Ubuntu. Jak již bylo zmíněno, Ubuntu podporuje webový server Apache, který lze snadno nainstalovat, jakmile bude operační systém spuštěn. Doménové jméno lze zaregistrovat u jakékoli služby registrace názvu domény.
Pokud používáte Ubuntu v cloudové instanci, IP adresa přidělená poskytovatelem bude uvedena v informacích o přehledu serveru. Pokud hostujete svůj vlastní server a váš poskytovatel internetových služeb (ISP) přidělil statickou IP adresu, budete muset k této adrese přiřadit svou doménu. Toho je dosaženo pomocí jmenného serveru a všechny služby registrace domény vám tuto službu poskytnou.
Pokud nemáte statickou IP adresu (tj. váš ISP vám poskytuje dynamickou adresu, která se často mění), můžete použít jednu z řady bezplatných služeb dynamického DNS (DDNS nebo zkráceně DynDNS), které mapují vaše dynamické IP adresa k názvu vaší domény.
Jakmile máte nakonfigurován název domény a názvový server, dalším krokem je instalace a konfigurace webového serveru.
Aktuální verze Ubuntu obvykle ve výchozím nastavení webový server Apache neinstaluje. Chcete-li zkontrolovat, zda je server již nainstalován, spusťte následující příkaz:
Pokud apt generuje výstup podobný následujícímu, server apache je již nainstalován:
Pokud výstup apt neuvádí balíček nebo neobsahuje stav [installed], spusťte na příkazovém řádku následující příkaz a proveďte instalaci Apache:
Před spuštěním a testováním webového serveru Apache bude nutné upravit bránu firewall, aby webový server mohl komunikovat s vnějším světem. Protokoly HTTP a HTTPS standardně používají porty 80 a 443, takže v závislosti na používaných protokolech bude nutné otevřít jeden nebo oba tyto porty. Pokud je váš systém Ubuntu chráněn nekomplikovanou bránou firewall, lze následující příkaz použít k povolení pouze nezabezpečeného webového provozu (HTTP):
Povolení pouze zabezpečeného provozu (HTTPS):
Případně povolte zabezpečený i nezabezpečený webový provoz následovně:
Pokud používáte bránu firewall, lze k otevření portů HTTP a HTTPS použít následující příkazy. Při otevírání portů nezapomeňte zadat zónu brány firewall, která se vztahuje na síťové připojení k internetu:
Po otevření potřebných portů nezapomeňte znovu načíst nastavení brány firewall:
Na serverech hostovaných v cloudu může být také nutné povolit příslušný port pro instanci serveru v rámci cloudové konzoly. Postup, jak to provést, najdete v dokumentaci poskytovatele cloudu.
Pokud je systém Ubuntu hostující webový server umístěn v síti chráněné firewallem (buď na jiném počítači s firewallem, nebo na routeru či bezdrátové základnové stanici s vestavěnou firewallovou ochranou ) budete muset nakonfigurovat bránu firewall tak, aby předávala port 80 a/nebo port 443 vašemu systému webového serveru. Mechanismus tohoto provedení se mezi firewally a zařízeními liší, proto si v dokumentaci zjistěte, jak nakonfigurovat předávání portů.
Jakmile je server Apache nainstalován a nakonfigurován firewall, dalším krokem je ověřit, zda server běží, a v případě potřeby jej spustit.
Chcete-li zkontrolovat stav služby Apache z příkazového řádku, zadejte do příkazového řádku následující:
Pokud výše uvedený příkaz ukazuje, že služba httpd není spuštěna, lze ji spustit z příkazového řádku následovně:
Pokud chcete, aby se služba Apache httpd spouštěla automaticky při spuštění systému, spusťte následující příkaz:
Po dokončení instalace je dalším krokem ověření, zda je webový server v provozu.
Pokud máte přístup (místně nebo vzdáleně) k desktopovému prostředí serveru, jednoduše spusťte webový prohlížeč a do adresního řádku zadejte http://127.0.0.1 (127.0.0.1 je síť se zpětnou smyčkou adresa, která říká systému, aby se připojil k místnímu počítači). Pokud je vše správně nastaveno, prohlížeč by měl načíst stránku zobrazenou na obrázku 32-1:
Obrázek 32-1
Pokud desktopové prostředí není k dispozici, připojte se buď z jiného systému ve stejné místní síti jako server, nebo pomocí externí adresy IP přiřazené systému, pokud je hostován vzdáleně.
Dalším krokem při nastavování vašeho webového serveru je konfigurace pro název vaší domény. Chcete-li nakonfigurovat webový server, začněte změnou adresáře na /etc/apache2, který naopak obsahuje řadu souborů a podadresářů. Hlavní konfigurační soubor se jmenuje apache2.conf a slouží jako centrální bod pro organizaci modulárních konfiguračních souborů umístěných v podadresářích. Například soubor apache2.conf obsahuje řádek pro import konfiguračních nastavení deklarovaných v souborech umístěných ve složce s povolenými weby:
Podobně soubor apache2.conf importuje soubor ports.conf, který definuje porty, na kterých server Apache naslouchá síťovému provozu.
Chcete-li nakonfigurovat doménu webových stránek na Ubuntu, začněte změnou adresáře na /etc/apache2. V tomto adresáři najdete dva podadresáře, sites-available a sites-enabled. Změnit adresář na stránky-dostupné. V tomto adresáři najdete výchozí soubor, který lze použít jako šablonu pro vaše vlastní stránky.
Zkopírujte výchozí soubor do nového souboru s názvem, který odpovídá názvu vaší domény. Například:
Upravte svůj soubor myexample.com pomocí svého oblíbeného editoru, kde bude vypadat následovně:
Směrnice ServerAdmin definuje administrativní e-mailovou adresu pro lidi, kteří chtějí kontaktovat správce webu pro váš web. Změňte toto na vhodnou e-mailovou adresu, na které vás lze kontaktovat:
Dále je třeba odkomentovat direktivu ServerName (jinými slovy odstranit předponu znaku „#“) a definovat ji, aby webový server věděl, na kterého virtuálního hostitele se tento konfigurační soubor vztahuje:
V další fázi musíme pomocí direktivy DocumentRoot definovat, kde budou umístěny soubory webových stránek. Tradicí je používat /var/www/název-domény:
Po dokončení změn nyní potřebujeme web povolit následovně:
Tento příkaz vytvoří symbolický odkaz ze souboru myexample.conf v adresáři sites-available na složku sites-enabled.
S povoleným webem spusťte následující příkaz a deaktivujte výchozí testovací web:
Dále vytvořte adresář /var/www/myexample.com a umístěte do něj soubor index.html. Například:
Po provedení těchto změn spusťte příkaz apache2ctl ke kontrole chyb v konfiguračních souborech:
Pokud nejsou hlášeny žádné chyby, znovu načtěte webový server Apache, abyste se ujistili, že používá naše nová nastavení:
Nakonec zkontrolujte, zda konfigurace serveru funguje. Otevřete okno prohlížeče a přejděte na web pomocí názvu domény namísto adresy IP. Webová stránka, která se načte, by měla být ta, která je definována v souboru index.html vytvořeném výše.
Webový server a webová stránka dosud vytvořené v této kapitole používají protokol HTTP na portu 80 a jako takové jsou považovány za nezabezpečené. Problém je v tom, že provoz mezi webovým serverem a klientem (obvykle webovým prohlížečem uživatele) se přenáší v čistém textu. Jinými slovy, data jsou nešifrovaná a náchylná k zachycení. I když to není problém pro obecné procházení webu, je to vážná slabina při provádění úkolů, jako je přihlašování na webové stránky nebo přenos citlivých informací, jako jsou údaje o totožnosti nebo kreditní kartě.
V dnešní době se očekává, že webové stránky budou používat protokol HTTPS, který k navázání zabezpečené, šifrované komunikace mezi webovým serverem a klientem používá buď Secure Socket Layer (SSL) nebo Transport Layer Security (TLS). Toto zabezpečení je zajištěno použitím veřejného, soukromého a relačního šifrování spolu s certifikáty.
Pro podporu HTTPS musí mít web certifikát vydaný důvěryhodnou autoritou známou jako certifikační autorita (CA). Když se prohlížeč připojí k zabezpečenému webu, webový server odešle zpět kopii certifikátu SSL webu, který také obsahuje kopii veřejného klíče webu. Prohlížeč poté ověří pravost certifikátu u důvěryhodných certifikačních autorit.
Pokud je certifikát shledán platným, prohlížeč použije veřejný klíč odeslaný serverem k zašifrování klíče relace a předá jej serveru. Server dešifruje klíč relace pomocí soukromého klíče a použije jej k odeslání zašifrovaného potvrzení do prohlížeče. Jakmile je tento proces dokončen, prohlížeč a server použijí klíč relace k šifrování všech následných datových přenosů, dokud relace neskončí.
Ve výchozím nastavení server Apache neobsahuje modul nezbytný pro implementaci zabezpečené webové stránky HTTPS. Prvním krokem je proto povolit modul Apache mod_ssl na serverovém systému následovně:
Po dokončení instalace restartujte httpd, aby se nový modul načetl na server Apache:
Zkontrolujte, zda se modul načetl na server pomocí následujícího příkazu:
Jakmile je modul ssl nainstalován, opakujte kroky z předchozí části této kapitoly a vytvořte konfigurační soubor pro web, tentokrát s použitím souboru sites-available/default-ssl.conf jako šablony pro konfiguraci webu. soubor.
Za předpokladu, že je modul nainstalován, je dalším krokem vygenerování certifikátu SSL pro webovou stránku.
Certifikát pro webovou stránku je nutné získat od certifikační autority. K dispozici je řada možností za různé ceny. Zdaleka nejlepší možností je však získat bezplatný certifikát od Let’s Encrypt na následující URL:
https://letsencrypt.org/
Proces získání certifikátu od Let’s Encrypt jednoduše zahrnuje instalaci a spuštění nástroje Certbot. Tento nástroj prohledá konfigurační soubory Apache na serveru a poskytuje možnost generovat certifikáty pro libovolné virtuální hostitele nakonfigurované v systému. Poté vygeneruje certifikát a přidá položky virtuálního hostitele do konfigurace Apache speciálně pro odpovídající webové stránky.
K instalaci nástroje certbot do systému Ubuntu použijte následující kroky:
Jakmile je certbot nainstalován, spusťte jej následovně:
Po vyžádání e-mailové adresy a žádosti o přijetí podmínek služby Certbot zobrazí seznam domén nalezených ve složce dostupné stránky a nabídne možnost vybrat jednu nebo více z těchto stránek, pro které má být certifikát nainstalován. Certbot poté provede některé kontroly před získáním a instalací certifikátu do systému:
Certbot také vytvoří nový soubor s názvem myexample-le-ssl.conf v adresáři /etc/apache2/sitesavailable obsahující zabezpečený záznam virtuálního hostitele pro každý název domény, pro který byl vygenerován certifikát, a umožní webu tak že odkaz na soubor je vytvořen v adresáři /etc/apache2/sites-enabled. Tyto položky budou podobné následujícím:
Nakonec se Certbot zeptá, zda by budoucí webové požadavky HTTP měly být serverem přesměrovány na HTTPS. Jinými slovy, pokud se uživatel pokusí o přístup na http://www.myexample.com, webový server ho přesměruje na https://www.myexample.com:
Pokud aktuálně testujete konfiguraci HTTPS a chcete verzi HTTP zachovat na později, vyberte možnost Bez přesměrování. Jinak se obecně doporučuje přesměrování na HTTPS.
Jakmile bude certifikát nainstalován, otestujte jej v prohlížeči na následující adrese URL (myexample.com nahraďte svým vlastním názvem domény):
Pokud byla konfigurace certifikátu úspěšná, bude zpráva SSL Labs poskytovat vysoké hodnocení, jak ukazuje obrázek 32-2:
Obrázek 32-2
Jako závěrečný test otevřete okno prohlížeče a přejděte do své domény pomocí předpony https://. Stránka by se měla načíst jako předtím a prohlížeč by měl indikovat, že spojení mezi prohlížečem a serverem je zabezpečené (obvykle označeno ikonou visacího zámku v adresním řádku, na kterou lze kliknout pro další informace):
Obrázek 32-3
Systém Ubuntu lze použít k hostování webových stránek instalací webového serveru Apache. Na Ubuntu lze nasadit jak nezabezpečené (HTTP), tak zabezpečené (HTTPS) webové stránky. Zabezpečené webové stránky používají buď Secure Socket Layer (SSL) nebo Transport Layer Security (TLS) k navázání šifrované komunikace mezi webovým serverem a klientem pomocí veřejného, soukromého a relačního šifrování spolu s certifikátem vydaným důvěryhodnou certifikační autoritou.