Apache Virtual Hosts vám umožňuje provozovat více než jednu webovou stránku na jednom počítači. Pomocí virtuálních hostitelů můžete určit kořen dokumentu webu (adresář obsahující soubory webu), vytvořit samostatnou bezpečnostní politiku pro každý web, používat různé certifikáty SSL a mnoho dalšího.
Tento článek vysvětluje, jak nastavit virtuální hostitele Apache na serveru CentOS 8.
Předpoklady #
Než budete pokračovat v tomto kurzu, ujistěte se, že jste splnili následující požadavky:
- Název domény odkazující na IP vašeho veřejného serveru.
- Apache nainstalovaný ve vašem systému CentOS.
- Jste přihlášeni jako uživatel root nebo uživatel s právy sudo.
Vytváření adresářové struktury #
Kořen dokumentu je adresář, ve kterém jsou uloženy soubory webových stránek pro název domény a obsluhovány v reakci na požadavky. Kořen dokumentu lze nastavit na libovolné umístění.
Použijeme následující adresářovou strukturu:
/var/www/
├── example.com
│ └── public_html
├── example2.com
│ └── public_html
├── example3.com
│ └── public_html
Pro každou doménu, která bude hostována na serveru, vytvoříme samostatný adresář v /var/www
. V adresáři domény vytvoříme public_html
adresář, který bude kořenovým adresářem dokumentů domény a bude ukládat soubory webových stránek domény.
Začněme vytvořením kořenového adresáře pro doménu example.com
:
sudo mkdir -p /var/www/example.com/public_html
Pro účely testování vytvořte index.html
soubor v kořenovém adresáři dokumentů domény:
sudo nano /var/www/example.com/public_html/index.html
Zkopírujte a vložte následující kód do souboru:
/var/www/example.com/public_html/index.html<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Welcome to example.com</title>
</head>
<body>
<h1>Success! example.com home page!</h1>
</body>
</html>
Chcete-li se vyhnout problémům s oprávněními, změňte vlastnictví kořenového adresáře dokumentu domény na uživatele apache
:
sudo chown -R apache: /var/www/example.com
Vytváření souboru virtuálního hostitele #
Existuje několik způsobů, jak nastavit virtuální hostitele. Můžete buď přidat všechny direktivy virtuálního hostitele do jednoho souboru, nebo vytvořit nový konfigurační soubor pro každou direktivu virtuálního hostitele. Obecně byste měli preferovat druhý přístup, který je lépe udržovatelný.
Ve výchozím nastavení je Apache nakonfigurován tak, aby načítal všechny konfigurační soubory, které končí na .conf
z /etc/httpd/conf.d/
adresář.
Chcete-li vytvořit virtuálního hostitele pro konkrétní webovou stránku, otevřete svůj editor a vytvořte následující základní konfigurační soubor virtuálního hostitele:
/etc/httpd/conf.d/example.com.conf<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin [email protected]
DocumentRoot /var/www/example.com/public_html
<Directory /var/www/example.com/public_html>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
ErrorLog /var/log/httpd/example.com-error.log
CustomLog /var/log/httpd/example.com-access.log combined
</VirtualHost>
ServerName
:Název domény, pro kterou bude použita konfigurace virtuálního hostitele. Toto je název vaší domény.ServerAlias
:Všechny ostatní domény, pro které bude také použita konfigurace virtuálního hostitele, jako jewww
subdoména.DocumentRoot
:Adresář, ze kterého Apache obsluhuje soubory domény.Options
:Tato směrnice řídí funkce serveru podle adresáře.-Indexes
:Zabraňuje výpisům adresářů.FollowSymLinks
:Tato možnost říká webovému serveru, aby sledoval symbolické odkazy.
AllowOverride
:Určuje, které směrnice deklarované v.htaccess
soubor může přepsat konfigurační direktivy.ErrorLog
,CustomLog
:Umístění souborů protokolu.
Upravte soubor podle svých potřeb a uložte jej.
Název konfiguračního souboru musí končit .conf
. Konfigurační soubor můžete pojmenovat, jak chcete. Nejlepším postupem je použít název domény jako název konfiguračního souboru virtuálního hostitele.
Otestujte syntaxi konfiguračního souboru pomocí:
sudo apachectl configtest
Pokud nejsou žádné chyby, výstup by měl vypadat takto:
Syntax OK
Chcete-li aktivovat nově vytvořeného virtuálního hostitele, restartujte službu Apache pomocí:
sudo systemctl restart httpd
Otevřete http://example.com
abyste ověřili, že vše funguje podle očekávání.