Zpět na blog

Instalace webového serveru Apache na CentOS 7

Instalace webového serveru Apache na CentOS 7

Webový server ukládá, zpracovává a doručuje webové stránky návštěvníkům webu. Existuje poměrně dost open-source webových serverů softwarových možností, ale Apache HTTP server je považován za nejrozšířenější webový server na světě. Je to proto, že kromě toho, že je open-source, jeho modulární architektura umožňuje rozšiřovat jeho možnosti přidáváním modulů pro různé účely. Díky tomu je webový server mimořádně robustní. 

Pokud chcete nainstalovat Apache na systém CentOS 7, tento návod je určen právě vám. Kromě toho se dozvíte, jak vytvořit virtuální hostitele, abyste mohli provozovat více webových stránek na jednom Apache HTTP serveru běžícím na CentOS. 

Toto je podrobný návod zaměřený pouze na instalaci Apache. Pokud hledáte stručný návod na LAMP stack, máme pro vás tohoto průvodce Jak nainstalovat Linux, Apache, MySQL, PHP (LAMP) na CentOS 7, na kterého se můžete podívat. Nyní začněme!

Požadavky

Jelikož se jedná o praktický návod, měli byste mít k dispozici následující: 

Krok 1: Instalace Apache HTTP serveru

Apache najdete ve výchozích repozitářích CentOS. Instalace je proto snadná pomocí správce balíčků yum. Podle sekce s požadavky musíte být přihlášeni jako uživatel bez oprávnění root. Spuštěním následujícího příkazu v terminálu aktualizujte lokální index balíčků Apache httpd:

Jakmile jsou balíčky aktualizovány, zadejte následující příkaz pro instalaci Apache:

Potvrďte instalaci a počkejte, až yum nainstaluje Apache a jeho požadované závislosti. 

Pokud jste postupovali podle kroků v návodu na téma Nastavení firewallu pomocí FirewallD na CentOS 7 a povolili firewall pro port 80, pak máte hotovo. Firewalld je správce firewallu pro CentOS. V opačném případě můžete povolit službu http (port 80) nástroje firewalld zadáním následujícího příkazu: 

Pokud plánujete obsluhovat provoz přes zabezpečené HTTPS, můžete povolit službu https (port 443) nástroje firewalld zadáním následujícího příkazu:

Nakonec musíte znovu načíst firewalld, aby se změny projevily. Zde je příkaz pro opětovné načtení:

V tomto okamžiku máte nainstalovaný a nakonfigurovaný Apache pro obsluhu provozu přes HTTP nebo HTTPS v závislosti na tom, zda jste spustili výše uvedené příkazy. 

Krok 2: Ověření, že webový server Apache běží

V systému CentOS se proces Apache po instalaci nespustí automaticky. Chcete-li Apache spustit ručně, zadejte následující příkaz:

Chcete-li ověřit, že se služba úspěšně spustila, zkontrolujte její stav zadáním následujícího příkazu: 

Pokud služba běží, měli byste vidět výstup podobný níže uvedenému snímku obrazovky. Všimněte si aktivního stavu:

httpd status

Výstup indikuje, že služba byla úspěšně spuštěna a běží. Dále musíme také otestovat, zda Apache dokáže doručovat stránky uživatelům na internetu. Apache je dodáván s výchozí stránkou, kterou můžete použít k otestování, zda je váš server přístupný přes internet. 

Pokud ještě neznáte veřejnou IP adresu svého serveru, budete ji muset zjistit. Tuto IP adresu zadáte do adresního řádku prohlížeče pro vyžádání výchozí webové stránky Apache. Síťové adresy hostitele můžete zobrazit zadáním následujícího příkazu: 

Ze získaného seznamu adres můžete vyzkoušet každou ve svém prohlížeči a ověřit, zda fungují. Volitelně můžete použít curl pro získání vaší IP adresy z icanhazip.com. Níže uvedený příkaz vypíše vaši veřejnou IP adresu, jak je vidět z počítače v jiném internetovém umístění:

Jakmile budete mít veřejnou IP adresu svého serveru, zkopírujte ji a vložte do adresního řádku prohlížeče:

Váš prohlížeč by měl načíst výchozí webovou stránku Apache pro CentOS 7:

web server home page

Pokud se vám podařilo načíst výchozí webovou stránku Apache, znamená to, že váš server funguje správně. Pokud sjedete dolů, uvidíte některé základní informace o souborech Apache a umístění adresářů. S nainstalovanou a správně fungující službou byste měli být schopni používat různé systemctl příkazy pro správu této služby. 

Krok 3: Správa služby Apache

V této části vám ukážeme několik základních příkazů pro správu Apache. Zde je příkaz, který webový server zastaví:

Zde je příkaz pro spuštění webového serveru:

Dále je zde příkaz pro restartování webového serveru (zastavení a spuštění):

Poté vám ukážeme příkaz pro opětovné načtení služby Apache. Tento příkaz je nutný, pokud provádíte pouze změny v konfiguraci. Při opětovném načtení proces Apache převezme změny konfigurace, aniž by došlo k přerušení připojení, jako by tomu bylo v případě restartu:

Podle výchozí konfigurace se Apache spouští automaticky při startu serveru. Pokud chcete toto chování změnit, zde je příkaz pro zakázání spouštění služby při startu:

Chcete-li službu znovu povolit pro spouštění při startu, zadejte následující příkaz: 

Krok 4: Nastavení virtuálních hostitelů Apache

Ve výchozím nastavení je Apache nakonfigurován tak, aby hostoval a obsluhoval jeden web. Ve většině případů budete chtít, aby váš webový server obsluhoval a hostoval více webů. Můžete mít například subdomény nebo budete chtít nastavit blogovací stránku pro hlavní web vaší společnosti/organizace. Zde přicházejí na řadu virtuální hostitelé Apache. Virtuální hostitelé Apache vám umožňují nakonfigurovat webový server tak, aby obsluhoval více webů. Virtuální hostitelé Apache jsou ekvivalentem serverových bloků v Nginx serveru

V tomto návodu vám ukážeme, jak vytvořit virtuálního hostitele pomocí example.com jako naší domény. Doména example.com samozřejmě nebude na internetu fungovat, takže byste ji měli nahradit svou skutečnou doménou – kroky jsou stejné. 

Při instalaci Apache na CentOS se nainstaluje jeden virtuální hostitel, který je nakonfigurován pro poskytování obsahu z adresáře /var/www/html. Toto uspořádání funguje dobře, pokud hostujete jeden web. My však chceme mít možnost hostovat více webů. Ponecháme výchozí adresář /var/www/html a místo toho vytvoříme jiný adresář pro doménu example.com v rámci umístění /var/www. Důvodem pro ponechání výchozího adresáře je to, aby byl použit v případě, že požadavky klientů neodpovídají žádnému jinému webu, který jste nakonfigurovali pomocí virtuálních hostitelů. Navíc, pokud byste chtěli vytvořené virtuální hostitele zakázat, výchozí adresář bude nadále obsluhovat provoz. 

Nejprve vytvořte adresář uvnitř /var/www pro váš název domény. Můžete si vybrat libovolný název. Doporučuje se však zvolit název podobný vaší doméně, abyste si jej snadno zapamatovali, až budete vytvářet soubor conf virtuálního hostitele. Pro vytvoření ukázkového adresáře zadejte následující příkaz:

Zadejte následující příkaz pro vytvoření další složky, která bude obsahovat soubory protokolů pro tento web:

Jakmile máte adresáře webu připravené, přiřaďte vlastnictví adresáře pomocí proměnné prostředí $USER za použití následujícího příkazu:

Spuštěním následujícího příkazu zajistíte, že váš kořenový webový adresář bude mít výchozí oprávnění:

Nyní vytvořte jednoduchou index.html stránku pomocí nano uvnitř adresáře example zadáním následujícího příkazu:

V editoru nano přidejte následující fragment kódu HTML:

Jakmile budete hotovi, uložte soubor stisknutím Ctrl O a stiskněte ENTER. Nyní můžete editor zavřít stisknutím Ctrl X

Zatím máme adresář vašeho webu a základní webovou stránku pro otestování virtuálního hostitele. Dále chceme vytvořit konfigurační soubory virtuálního hostitele. Soubory virtuálního hostitele určují konfigurace různých webů, které chcete hostovat na jednom serveru Apache. Směrují požadavky na nastavený název domény do jejího konkrétního adresáře. 

Soubory virtuálního hostitele jsou uloženy v adresáři /etc/httpd/sites-available. Aktivované soubory virtuálního hostitele jsou symbolicky odkazovány z adresáře /etc/httpd/sites-available do adresáře /etc/httpd/sites-enabled . Tyto dva adresáře nejsou v CentOS ve výchozím nastavení vytvořeny, takže je musíte vytvořit sami. Pro vytvoření adresářů zadejte následující příkaz:

Jakmile jsou adresáře na svém místě, instruujte Apache, aby hledal virtuální hostitele v adresáři sites-enabled. To provedete úpravou hlavního konfiguračního souboru pro Apache. Zadáním následujícího příkazu otevřete soubor v editoru nano:

Chceme přidat řádek, který instruuje Apache, aby hledal další konfigurační soubory ve volitelném adresáři. Přejděte na konec souboru a na konec přidejte následující řádek:

Uložte soubor stisknutím Ctrl O a stiskněte ENTER. Nyní můžete editor zavřít stisknutím Ctrl X. Dalším krokem je vytvoření souboru virtuálního hostitele v adresáři sites-available. Zadáním následujícího příkazu vytvořte a otevřete nový soubor v editoru nano:

V otevřeném souboru přidejte následující konfigurační blok. Nezapomeňte nahradit náš example.com vaším skutečným názvem domény, a pokud jste použili jiný název adresáře v /var/www/example, také jej odpovídajícím způsobem aktualizujte:

Jak vidíte, specifikovali jsme název domény a kořenový adresář dokumentů (document root), kde se budou nacházet soubory, které se mají pro tuto doménu poskytovat. Specifikovali jsme také umístění protokolu chyb (error log) – to vám pomůže při řešení problémů se serverem.

Jakmile máme náš soubor virtuálního hostitele uvnitř adresáře sites-available, dalším krokem je povolení souboru vytvořením symbolického odkazu na adresář sites-enabled . Pro vytvoření symbolického odkazu zadejte následující příkaz:

Pokud jste postupovali podle dosavadních kroků, váš virtuální hostitel by měl být nyní připraven poskytovat obsah vašeho webu. Předtím, než virtuální hostitelé začnou fungovat, je však nutné nakonfigurovat ještě jednu kontrolu. Tomu se budeme věnovat v dalším kroku. 

Krok 5: Úprava oprávnění SELinux pro povolení virtuálních hostitelů

Linuxové distribuce včetně Fedora, RHEL a CentOS obsahují SELinux ve výchozím nastavení. SELinux (Security Enhanced Linux) je bezpečnostní architektura pro systémy Linux, která omezuje a definuje, jak by měl server zpracovávat požadavky a jak by měli uživatelé komunikovat se sockety, síťovými porty a základními adresáři. 

Bez dalších úprav bude SELinux fungovat s výchozí konfigurací Apache. U vlastního virtuálního hostitele, kterého jste vytvořili, včetně vlastního adresáře pro protokoly, se však při pokusu o restartování služby Apache zobrazí chyba služby. Řešením je upravit zásady SELinux tak, aby služba Apache mohla zapisovat do potřebných souborů. 

SELinux dělá z CentOS vysoce zabezpečený server. Proto nedoporučujeme jej zcela zakázat. Vzhledem k tomu, že SELinux umožňuje přizpůsobit úroveň zabezpečení různými způsoby, doporučuje se aktualizovat nebo nastavovat zásady pouze na základě potřeb vašeho prostředí.

Máte dvě možnosti, jak aktualizovat zásady Apache: buď univerzálně nebo pro konkrétní adresář. Aktualizace zásad specifických pro konkrétní adresář je bezpečnější. Proto se jedná o doporučenou možnost. 

  • Univerzální aktualizace zásad Apache

Zásady Apache můžete upravit univerzálně, což SELinuxu nařídí, aby se všemi procesy Apache zacházel identicky, a to pomocí booleovské hodnoty httpd_unified Boolean. Mějte na paměti, že univerzální úprava zásad Apache vám neposkytne stejnou úroveň kontroly jako nastavení každého adresáře zvlášť. Je to však pohodlnější z hlediska údržby. Pro univerzální aktualizaci zásad Apache spusťte následující příkaz: 

Pojďme si definovat, co hodnoty v tomto příkazu dělají:

  • setsebool – aktualizuje booleovské hodnoty SELinuxu. 
  • -P příznak  – aktualizuje hodnotu při spouštění systému, takže tato změna přetrvá i po restartu. 
  • httpd_unified  – booleovská hodnota, která SELinuxu nařídí, aby se všemi procesy Apache zacházel jako se stejným typem. Použitím hodnoty 1 ji povolíte. 
  • Úprava zásad Apache pro adresář

Pokud chcete mít nad adresáři větší kontrolu, pak je správnou cestou úprava zásad Apache pro jednotlivé adresáře. To však přináší režii v podobě náročnější údržby. Je to proto, že zásada není globální. Budete tedy muset ručně nastavit typ kontextu pro všechny nové adresáře protokolů, které definujete v konfiguračních souborech virtuálních hostitelů. 

Před aktualizací zásady nejprve zkontrolujte typ kontextu, který SELinux přiřadil adresáři /var/www/example/log, pomocí následujícího příkazu:

Příkaz vypíše něco podobného následujícímu, což je v podstatě kontext SELinuxu pro daný adresář:

httpd_sys_content_t je aktuální kontext, který SELinuxu říká, že proces Apache smí pouze číst soubory vytvořené v tomto adresáři. Vzhledem k tomu, že v naší konfiguraci virtuálního hostitele chceme, aby Apache zapisoval do souborů protokolů v adresáři /var/www/example/log, upravíme tuto zásadu tak, aby Apache mohl generovat soubory protokolů webové aplikace a zapisovat do nich. Kontext, který to umožňuje, je httpd_log_t. Zde je příkaz pro aktualizaci kontextu:

Chcete-li použít změny z výše uvedeného příkazu a zajistit, aby přetrvaly i po restartu, spusťte následující příkaz:

Pojďme si definovat, co tento příkaz dělá:

  • restorecon – aplikuje změny a zajistí, že přetrvají i po restartu.
  • příznak -R – spustí příkaz rekurzivně a aktualizuje všechny existující soubory tak, aby používaly nový kontext.
  • příznak -v – vypíše změny kontextu po spuštění příkazu. Výstup bude vypadat přibližně takto:
Chcete-li zobrazit změny kontextu, můžete znovu spustit následující příkaz:
Ve výstupu byste měli vidět aktualizovaný typ kontextu:
Po aktualizaci zásad adresářů SELinux, které umožňují Apache zapisovat do adresáře protokolů, můžeme nyní otestovat virtuálního hostitele. 

Krok 6: Testování konfigurace virtuálního hostitele

Před testováním virtuálního hostitele bude nutné restartovat služby Apache. Zde je příkaz k provedení:

Dále vypište obsah adresáře protokolů pomocí následujícího příkazu:

Mělo by se zobrazit něco takového, což ukazuje, že Apache vytvořil soubory protokolů: 

list log files web server

Pokud jste postupovali podle dosavadních kroků, Apache by nyní měl být schopen zobrazit ukázkovou HTML stránku, když navštívíte svůj doménový název definovaný v souboru virtuálního hostitele. Pokud si přejete, můžete zopakovat kroky 4 a 5 pro nastavení dalších domén a odpovídajícím způsobem aktualizovat jejich oprávnění SELinux.

Závěr

V tomto návodu jsme nainstalovali Apache, naučili se aktualizovat zásady SELinux, aby mohl Apache zapisovat do vlastních souborů protokolů, a nakonec jsme otestovali naši konfiguraci, abychom potvrdili, že funguje správně. S těmito znalostmi byste měli být schopni na nich stavět a poskytovat lepší aplikace s bohatšími možnostmi. 

Pokud chcete prozkoumat kompletní webový zásobník, podívejte se na náš návod na jak nainstalovat LAMP stack na CentOS 7

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

author

Akshay Nagpal

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í.