Vyhledávání na webu

Jak nainstalovat Apache s virtuálním hostitelem na CentOS 8


Webový server Apache je opensource a oblíbený webový server HTTP, který se nadále těší obrovskému podílu na trhu v odvětví hostingu. Dodává se se spoustou funkcí včetně vylepšení modulů, podpory více protokolů, zjednodušené konfigurace a podpory více jazyků, abychom zmínili jen některé.

Přečtěte si také: Jak nainstalovat Nginx na CentOS 8

V této příručce vás provedeme instalací webového serveru Apache na CentOS 8 a RHEL 8 s prostředím virtuálního hostitele. V době psaní tohoto návodu je nejnovější verze Apache Apache 2.2.43.

Instalace webového serveru Apache

Chcete-li začít, nejprve aktualizujte seznam systémových balíčků CentOS 8 nebo RHEL 8 pomocí následujícího příkazu dnf.

sudo dnf update

Po dokončení aktualizace nainstalujte webový server Apache provedením následujícího příkazu.

sudo dnf install httpd

Po instalaci můžete ověřit verzi Apache spuštěním příkazu rpm.

rpm -qi httpd

Příkaz vytiskne řadu informací, jako je verze, datum vydání, sestavení a architektura balíčku.

Chcete-li spustit webovou službu Apache HTTP, spusťte příkaz systemctl.

sudo systemctl start httpd

Chcete-li potvrdit, zda je služba spuštěna, spusťte.

sudo systemctl status httpd

Zelený stav „aktivní“ na výstupu znamená, že webový server Apache je spuštěn a spuštěn.

Chcete-li odstranit jakékoli pochybnosti o tom, že webový server běží, vyžádejte si testovací stránku od Apache procházením IP adresy nebo názvu domény vašeho serveru, jak je znázorněno.

http://server-ip  

IP svého serveru můžete získat spuštěním příkazu ifconfig. Pokud je váš server hostován v cloudu, můžete veřejnou IP získat spuštěním příkazu curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Při procházení IP adresy serveru by se měla zobrazit následující webová stránka.

Toto je jisté potvrzení, že webový server běží.

Správa webového serveru Apache

S nainstalovaným a spuštěným Apache můžete ke správě Apache použít inspekční nástroj systemctl.

Chcete-li například zastavit Apache, spusťte příkaz:

sudo systemctl stop httpd

Chcete-li službu znovu spustit, proveďte:

sudo systemctl start httpd

Pokud jste provedli změny v některém z jeho konfiguračních souborů a pro použití změn potřebujete restartovat, spusťte příkaz:

sudo systemctl restart httpd

Restartování služby obvykle způsobí přerušení služby. Lepší alternativou je jednoduše znovu načíst bez jakéhokoli přerušení připojení.

sudo systemctl reload httpd

Chcete-li webový server Apache spustit automaticky po spuštění nebo restartu, spusťte níže uvedený příkaz. Tím zajistíte, že se Apache spustí automaticky bez vašeho zásahu.

sudo systemctl enable httpd

Pokud se rozhodnete službu nespouštět automaticky při spouštění, spusťte:

sudo systemctl disable httpd

Nastavení virtuálních hostitelů Apache

Ve výchozím nastavení je webový server Apache nakonfigurován tak, aby obsluhoval nebo hostoval pouze jeden web. Pokud chcete hostovat pouze jeden web, pak tento krok není vyžadován. Ale v případě, že plánujete hostovat na svém serveru více domén, musíte nakonfigurovat virtuální hostitele Apache.

Virtuální hostitel je samostatný soubor, který obsahuje konfigurace, které vám umožňují nastavit jinou doménu než výchozí. Pro tuto příručku nastavíme virtuálního hostitele pro doménu crazytechgeek.info.

Výchozí virtuální hostitel je umístěn v adresáři /var/www/html. Toto funguje pouze pro jeden web. Pro vytvoření samostatného virtuálního hostitele pro naši doménu vytvoříme další adresářovou strukturu v adresáři /var/www, jak je znázorněno.

sudo mkdir -p /var/www/crazytechgeek.info/html

Kromě toho můžete také vytvořit adresář pro ukládání souborů protokolu.

sudo mkdir -p /var/www/crazytechgeek.info/log

Dále upravte oprávnění k souboru pomocí proměnné prostředí $USER, jak je znázorněno.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Upravte také oprávnění adresáře webroot podle obrázku.

sudo chmod -R 755 /var/www

Dále vytvořte ukázkový soubor index.html podle obrázku.

sudo vim /var/www/crazytechgeek.info/html/index.html

Stiskněte na klávesnici písmeno 'i' a vložte ukázkový obsah podle obrázku, který se zobrazí ve webovém prohlížeči při testování virtuálního hostitele.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Uložte a ukončete konfigurační soubor.

Po vytvoření ukázkového indexového souboru a adresáře webu můžete nyní pokračovat a vytvořit soubor virtuálního hostitele. Soubor virtuálního hostitele bude obsahovat konfiguraci webu vaší domény a instruuje Apache, jak bude reagovat na požadavky klientů.

Soubor virtuálního hostitele bude obsahovat konfiguraci webu vaší domény a instruuje Apache, jak bude reagovat na požadavky klientů. Ale pokračujte, musíte vytvořit 2 adresáře: sites-available a sites-enabled adresáře.

Soubor virtuálního hostitele bude uložen v adresáři sites-available, zatímco adresář sites-enabled bude obsahovat symbolický odkaz na virtuálního hostitele.

Vytvořte oba adresáře podle obrázku.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Dále upravte hlavní konfigurační soubor webového serveru Apache a dejte Apache pokyn, kde má v adresáři s povolenými weby najít virtuálního hostitele.

sudo vim /etc/httpd/conf/httpd.conf

Připojte řádek, jak je znázorněno na samém konci konfiguračního souboru.

IncludeOptional sites-enabled/*.conf

Uložit a odejít.

Nyní vytvořte soubor virtuálního hostitele, jak je znázorněno:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Vložte obsah níže a nahraďte crazytechgeek.info svým vlastním názvem domény.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Uložte a ukončete soubor.

Nyní povolte soubor virtuálního hostitele vytvořením symbolického odkazu v adresáři sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Úprava oprávnění SELinux pro virtuální hostitele

CentOS 8 a RHEL 8 jsou dodávány s SELinux, což je bezpečnostní modul pro posílení bezpečnosti systému Linux. Protože jste v předchozím kroku nakonfigurovali vlastní adresář log, musíte aktualizovat některé zásady SELinux, abyste dali webovému serveru Apache pokyn k zápisu do adresáře.

Existují 2 přístupy k úpravě zásad SELinux Apache: Univerzální úprava zásad a zásad v adresáři. Poslední jmenovaný je výhodný, protože je výhodnější.

Úprava zásad SELinux v adresáři

Úpravou oprávnění SELinux pro adresář protokolu získáte absolutní kontrolu nad zásadami webového serveru Apache. Tato metoda je poměrně zdlouhavá a vyžaduje ruční konfiguraci typu kontextu pro další adresáře uvedené v konfiguračním souboru virtuálního hostitele.

Než začnete, nejprve potvrďte typ kontextu, který SELinux přiřadil adresáři protokolu:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Výstup by měl být podobný tomu, co máme níže.

Z výstupu je nastavený kontext httpd_sys_content_t. To znamená, že webový server může číst pouze soubory v adresáři log. Tento kontext musíte změnit na httpd_log_t, aby Apache mohl generovat a přidávat položky protokolu do adresáře.

Proto proveďte příkaz:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Pokud se vám stane, že se zobrazí chyba níže „semanage: command not found “.

Znamená to, že balíčky, které poskytují příkaz semanage, nejsou nainstalovány. Chcete-li tuto chybu opravit, musíte tyto balíčky nainstalovat. Nejprve však zkontrolujte, které balíčky poskytují příkaz semanage spuštěním:

sudo dnf whatprovides /usr/sbin/semanage

Výstup nám poskytuje balíček, který poskytuje správu, což je policycoreutils-python-utils.

Nyní nainstalujte balíček podle obrázku pomocí správce balíčků DNF.

sudo dnf install policycoreutils-python-utils

Příkaz pro změnu kontextu by nyní měl fungovat.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Chcete-li uložit změny a učinit je trvalými, zadejte příkaz restorecon, jak je znázorněno:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Změny můžete potvrdit opětovným spuštěním příkazu:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Nezapomeňte, že typ kontextu se změnil na httpd_log_t, jak je vidět ve výstupu.

Restartujte Apache, aby se změny projevily.

sudo systemctl restart httpd

Nyní můžete potvrdit, zda Apache ukládá soubory protokolu do adresáře protokolu, uvedením jeho obsahu, jak je znázorněno:

ls -l /var/www/crazytechgeek.info/log/

Měli byste vidět dva soubory protokolu, jak je znázorněno: protokol chyb a soubory protokolu požadavků.

Testování virtuálního hostitele Apache

Nakonec si musíte být jisti, že webový server Apache obsluhuje váš virtuální hostitelský soubor. Chcete-li to provést, otevřete prohlížeč a přejděte na adresu IP nebo název domény vašeho serveru:

http://domain-name

Perfektní! To znamená, že vše proběhlo v pořádku a náš virtuální hostitel je obsluhován podle očekávání.

Závěr

V této příručce jsme se naučili, jak nainstalovat webový server Apache na CentOS 8 a RHEL 8 a také jak nakonfigurovat soubor virtuálního hostitele poskytovat obsah pro další doménu. Neváhejte a nakonfigurujte více souborů virtuálního hostitele, jak uznáte za vhodné, aby vyhovovaly dalším doménám.

Pokud chcete nastavit kompletní hostingový stack, doporučuji vám nainstalovat LAMP stack na CentOS 8.