Nyní, když je Apache nainstalován a spuštěn, můžete jej nakonfigurovat tak, aby obsluhoval více domén pomocí virtuálních hostitelů .
Vytvořte rozvržení
Tento příklad používá dvě domény:domain1.com a domain2.com.
-
Ve svém domovském adresáři vytvořte složku public_html:
cd ~ mkdir public_html
-
Pro každou doménu, kterou chcete hostovat, vytvořte složku se standardní sadou podsložek. Následující příkazy vytvářejí složky public, private, log, cgi-bin a backup pro doménu1.com a doménu2.com:
mkdir -p public_html/domain1.com/{public,private,log,cgi-bin,backup} mkdir -p public_html/domain2.com/{public,private,log,cgi-bin,backup}
Vytvořit index.html
Obsah veřejné složky je na vás, ale tento příklad používá velmi jednoduchý soubor HTML, abyste mohli zkontrolovat práci virtuálního hostitele.
-
Pro každou doménu vytvořte soubor index.html:
nano public_html/domain1.com/public/index.html
-
Přidejte následující kód do souboru index.html:
<html> <head> <title>domain1.com</title> </head> <body> <h1>domain1.com</h1> </body> </html>
-
Opakujte proces, abyste měli podobný soubor pro doménu2.com. Nahraďte všechny výskyty
domain1.com
sdomain2.com
.
Definujte virtuální hostitele
Nyní máte základní strukturu pro své dvě domény, můžete definovat dva virtuální hostitele.
Recenze NameVirtualHost
U virtuálních hostitelů způsobuje nastavení NameVirtualHost často zmatek.
Každé rozhraní a port, na kterém je Apache nastaven k naslouchání, potřebuje direktivuNameVirtualHost. Direktivu můžete definovat pouze jednou za port.
V rozložení Apache pro operační systém Ubuntu je v ports.conf
výchozí názevVirtualHostdirective soubor.
Spusťte následující příkaz a podívejte se na obsah ports.conf
:
cat /etc/apache2/ports.conf
Měli byste získat následující výstup (pokud jste soubor předtím neupravili):
# If you just change the port or add more ports here, you will likely also
# have to change the VirtualHost statement in
# /etc/apache2/sites-enabled/000-default
NameVirtualHost *:80
Listen 80
<IfModule mod_ssl.c>
# SSL name based virtual hosts are not yet supported, therefore no
# NameVirtualHost statement here
Listen 443
</IfModule>
Výchozí nastavení NameVirtualHost splňuje současné požadavky – Apache použije logiku a nastavení virtuálního hostitele založenou na pojmenování pro požadavky HTTP provedené na libovolném dostupném rozhraní (*) na portu 80.
Poznámka :Umístění výchozí direktivy NameVirtualHost v ‘ports.conf’ je nové v rozložení Apache operačního systému Ubuntu; předchozí verze umístily podobné nastavení do výchozího vhost.
Definování vlastních virtuálních hostitelů
Nyní jste připraveni přidat své vlastní virtuální hostitele, abyste mohli začít obsluhovat své domény.
Vytvořte soubor vhost pro doménu1:
sudo nano /etc/apache2/sites-available/domain1.com.conf
Obsah vypadá následovně:
# Place any notes or comments you have here
# It will make any customisation easier to understand in the weeks to come
# domain: domain1.com
# public: /home/demo/public_html/domain1.com/
<VirtualHost *:80>
# Admin email, Server Name (domain name) and any aliases
ServerAdmin [email protected]
ServerName domain1.com
ServerAlias www.domain1.com
# Index file and Document Root (where the public files are located)
DirectoryIndex index.html
DocumentRoot /home/demo/public_html/domain1.com/public
# Custom log file locations
LogLevel warn
ErrorLog /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined
</VirtualHost>
Povolte web
Povolte web následovně:
sudo a2ensite domain1.com
Výstup příkazu je následující:
Site domain1.com installed; run /etc/init.d/apache2 reload to enable.
Spusťte doporučený příkaz:
sudo /etc/init.d/apache2 reload
Přejděte na web
Chcete-li otestovat doménu bez vytvoření zóny DNS a záznamů na některých internetových jmenných serverech, můžete upravit soubor '/etc/hosts' na svém místním počítači tak, aby obsahoval některé položky mapující 'domain1.com', 'domain2.com' a ostatní na veřejnou IP adresu ukázkového cloudového serveru:
127.0.0.1 localhost
...
# entries related to the demo Cloud Server
123.45.67.890 domain1.com
123.45.67.890 www.domain1.com
123.45.67.890 domain2.com
...
Umístění souboru „hosts“ se liší v závislosti na tom, jaký operační systém je nahrán na vašem místním počítači.
Poznámka :Záznamy v souboru 'hosts' musí být odstraněny před testováním a použitím živých DNS zón a záznamů vytvořených na internetových jmenných serverech. Pokud je neodstraníte, může to z vaší strany vést k nejasnostem a nepřesným testům nových nebo upravených veřejných DNS záznamů.
S takovými změnami provedenými pro testovací účely můžete přejít na svůj web ve webovém prohlížeči v místním počítači a zobrazí se obsah souboru public/index.html.
Použít ServerAlias
Všimněte si, že v souboru vhost nastavíte ServerAlias. Pokud máte správně nastaven DNS, můžete také použít tuto adresu.
O vynucení jedné nebo druhé adresy si promluvíme v pozdějším článku o pravidlech přepisování.
Opakujte proces pro druhou doménu
Chcete-li vytvořit a povolit doménu2.com, opakujte postup následovně:
-
Vytvořte soubor vhost:
sudo nano /etc/apache2/sites-available/domain2.com ... # Enter the details for domain2.com as per the example shown above
-
Povolte web a restartujte Apache:
sudo a2ensite domain2.com ... sudo /etc/init.d/apache2 reload
-
Přejděte do druhé domény:
https://domain2.com or https://www.domain2.com
Měli byste vidět indexový soubor „domain2.com“.
Zobrazit soubory protokolu
Jak je definováno v souboru vhosts, každá doména má své vlastní soubory protokolu.
Seznam protokolů pro vaše domény:
ls /var/log/apache2/error-mydomainname.com.log
Výstup je přesně podle očekávání:
access.log error.log
Výchozí soubor vhost
Ačkoli jste změnili výchozího virtuálního hostitele, nechali jste jej na svém místě.
Pokud někdo zadá IP adresu cloudového serveru, je mu doručen obsah tohoto výchozího souboru vhosts (pokud jste pro IP adresu nenastavili samostatný vhost).
Proč jsou obsluhovány z tohoto souboru vhost?
Apache prohledává povolené soubory vhost v abecedním pořadí, a pokud nemůže najít žádný pro požadovanou IP adresu nebo název domény, obslouží první (abecedně).
Pokud jste zakázali nebo odstranili výchozí soubor vhost, zobrazí se obsah domény1.com (v abecedním pořadí před doménou2.com).
To je něco, co je třeba vzít v úvahu při plánování vašich webových stránek. Chcete, aby konkrétní doména byla výchozí? Chcete, aby IP adresa měla úplně jiný obsah?
Nastavit e-mailovou adresu správce
Nastavte e-mailovou adresu správce serveru. Tato adresa se používá, pokud nastavíte server, aby vás kontaktoval, když dojde k chybě. Je také zobrazen v ServerSignature, pokud je jeho hodnota nastavena na Email. (Viz část Definování zápatí Apache .
ServerAdmin [email protected]
Nastavte název domény
Nastavte název domény (ServerName) pro virtuálního hostitele. Podle potřeby můžete mít tolik aliasů (ServerAlias). Například můžete mít domény.com a domain.net odkazovat na stejný obsah.
ServerName domain.com
ServerAlias www.domain.com
Poznámka :Toto není pravidlo přepisu, ale zde definované domény budou sloužit stejnému obsahu (za předpokladu, že jste nastavili DNS tak, aby ukazoval na vaši IP adresu cloudového serveru).
Definujte soubor indexu
Definujte soubor indexu (domovská stránka, která se zobrazí po zadání adresy domény). To je užitečné, pokud chcete, aby byl uživatel přesměrován na alternativní stránku nebo na nestandardní domovskou stránku.
DirectoryIndex index.html
Poznámka :Toto není dobrá metoda pro přesměrování uživatelů, protože mohou přejít přímo na blíže nespecifikovanou stránku, jako je doména.com/index.php, zatímco hodnota DirectoryIndex funguje pouze pro uživatele, kteří zadávají doménu.com.
Definujte cestu k dokumentům
Definujte umístění veřejných souborů domény. Použijte absolutní cestu.
DocumentRoot /home/demo/public_html/domain.com/public
Nastavte soubory protokolu
Nastavte úrovně protokolu a umístění souborů protokolu virtuálních hostitelů.
LogLevel warn
ErrorLog /var/log/apache2/error-mydomainname.com.log
CustomLog /var/log/apache2/access-mydomainname.com.log combined
Definujte chybové dokumenty
Nastavte ErrorDocument, který se používá pro všechny standardní chybové zprávy.
ErrorDocument 404 /errors/404.html
ErrorDocument 403 /errors/403.html
V tomto příkladu je ve veřejném adresáři složka „chyby“. Každý chybový dokument byl vytvořen a umístěn do složky chyb. Zobrazené cesty se vztahují k dříve definované složce DocumentRoot.
Pokud nejsou chybová hlášení definována, Apache generuje své vlastní chybové stránky. Vlastní chybové stránky jsou uživatelsky přívětivější a lze je přizpůsobit tak, jak chcete.
Definujte zápatí Apache
Definujte ServerSignature, chcete-li určit, zda se budou podrobnosti o serveru zobrazovat na chybových stránkách nebo seznamech indexů generovaných serverem. Možnosti jsou Zapnuto, Vypnuto a E-mail.
ServerSignature On
Úroveň podrobností v podpisu se konfiguruje pomocí ServerTokens, které nelze nastavit v souboru Virtual Hosts. Pro Apachelayout operačního systému Ubuntu je to správně nastaveno v „/etc/apache2/conf.d/security“. Další podrobnosti naleznete v článku Konfigurace Apache č. 2 NEED LINK.
Pokud je ServerSignature nastaven na E-mail , zobrazí se e-mail ServerAdmin.
Povolit cgi-bin
Povolte umístění cgi-bin, jak je definováno vlastním virtuálním hostslayout. Pokud chcete, můžete ponechat cgi-bin v umístění DocumentRoot.
ScriptAlias /cgi-bin/ /home/demo/public_html/domain.com/cgi-bin/
<Location /cgi-bin>
Options +ExecCGI
</Location>
Nastavit možnosti adresáře
Nastavte možnosti pro zadaný adresář. Následující příklad povoluje možnost FollowSymLinks pro veřejný adresář ofdomain.com.
Options FollowSymLinks
Níže jsou uvedeny další možnosti, které můžete nastavit:
Možnost procházení adresáře
Chcete-li vypnout procházení adresářů, použijte -Indexy. Chcete-li zapnout procházení adresářů, použijte +Indexy.
Options -Indexes
Možnost SSI
Povolit nebo zakázat Zahrnutí na straně serveru. Následující příklad zakáže.
Options -Includes
Možnost symbolických odkazů
Povolte nebo zakažte možnost sledování symbolických odkazů. Buďte opatrní s touto možností, protože může vést k bezpečnostním rizikům (neúmyslné propojení s konfiguračními složkami).
Options -FollowSymLinks
Místo direktivyFollowSymLinks můžete zvážit použití direktivy SymLinksIfOwnerMatch. Direktiva SymLinksIfOwnerMatch umožňuje následovat symbolické odkazy pouze v případě, že vlastník odkazu je totožný s vlastníkem cílového souboru nebo adresáře (ve smyslu vlastnictví/oprávnění systému souborů Linux). To zabraňuje mnoha bezpečnostním rizikům, která může vytvořit jednoduchá směrnice FollowSymlinks.
Možnost .htaccess
Chcete-li zakázat podporu .htaccess, nastavte AllowOverride na None. Chcete-li povolit podporu, nastavte jej na Vše.
AllowOverride None
Můžete také určit, které funkce .htaccess povolit, například:
AllowOverride AuthConfig Indexes
Dokumenty ApachehtaccessandAllowOverride obsahují více informací o různých funkcích.
Nezapomeňte konkrétně chránit svůj soubor .htaccess. Můžete to udělat tak, že jej přejmenujete na něco nejasného a odepřete přístup k souboru z externích zdrojů:
AccessFileName .myobscurefilename
<Files ~ "^\.my">
<SatisfyAll>
Require all denied
</SatisfyAll>
</Files>
Poznámka :Předchozí příklad je naformátován pro Apache 2.4. Pokud používáte 2.2, nahraďte **
Žádné možnosti
Zadáním možnosti Žádné vypnete všechny dostupné možnosti.
Options None
Hierarchie možností
Direktivy options lze nastavit pro každý adresář, jak ukazuje následující příklad:
AllowOverride None
Options None
AllowOverride All
První nastavení adresáře vypne všechny možnosti a vypne podporu.htaccess pro všechny adresáře.
Druhé nastavení adresáře by však přepsalo první a podporu allow.htaccess pro adresář domain.com/public.
Přehled
Soubor virtuálních hostitelů je jednoduchý, ale velmi výkonný nástroj. Doporučujeme zadat jedno nastavení a otestovat jej. Poté zadejte další nastavení a test a tak dále.
Jakmile se s ním seznámíte, uvidíte, že máte nad všemi svými webovými složkami a soubory jemnou kontrolu.