Ve svém posledním příspěvku jsem vysvětlil, jak nakonfigurovat webový server Apache pro jeden web. Ukázalo se, že je to velmi snadné. V tomto příspěvku vám ukážu, jak obsluhovat více webů pomocí jediné instance Apache.
Poznámka:Tento článek jsem napsal na virtuálním počítači pomocí Fedory 27 s Apache 2.4.29. Pokud máte jinou distribuci nebo vydání Fedory, mohou se příkazy, které budete používat, a umístění a obsah konfiguračních souborů lišit.
Jak již bylo zmíněno v předchozím článku, všechny konfigurační soubory pro Apache jsou umístěny v /etc/httpd/conf
a /etc/httpd/conf.d
. Údaje pro webové stránky jsou umístěny v /var/www
ve výchozím stavu. S více webovými stránkami budete muset zadat více umístění, jedno pro každý web, který hostujete.
Virtuální hosting podle jména
S virtuálním hostingem založeným na jménu můžete použít jednu IP adresu pro více webových stránek. Moderní webové servery, včetně Apache, používají hostname
část zadané adresy URL k určení, který virtuální webový hostitel odpoví na požadavek stránky. To vyžaduje jen trochu více konfigurace než pro jeden web.
I když začínáte pouze s jedním webem, doporučuji jej nastavit jako virtuálního hostitele, což usnadní pozdější přidávání dalších webů. V tomto článku navážu tam, kde jsme v předchozím článku skončili, takže budete muset nastavit původní web, virtuální web založený na názvu.
Příprava původního webu
Než nastavíte druhý web, musíte pro stávající web zprovoznit virtuální hosting založený na názvu. Pokud nemáte existující web, vraťte se a vytvořte si ho nyní.
Jakmile budete mít svůj web, přidejte následující stanzu na konec jeho /etc/httpd/conf/httpd.conf
konfigurační soubor (přidání této stanzy je jediná změna, kterou musíte provést v httpd.conf
soubor):
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html
ServerName www.site1.org
</VirtualHost>
Toto bude první stanza virtuálního hostitele a měla by zůstat první, aby se z ní stala výchozí definice. To znamená, že přístup HTTP k serveru podle IP adresy nebo jiného jména, které se překládá na tuto IP adresu, ale které nemá specificky pojmenovanou stanzu konfigurace hostitele, bude přesměrován na tohoto virtuálního hostitele. Všechny ostatní stanzy konfigurace virtuálního hostitele by měly následovat po této.
Musíte také nastavit své webové stránky pomocí položek v /etc/hosts
poskytnout rozlišení názvu. Minule jsme právě použili IP adresu pro localhost
. Normálně by to bylo provedeno pomocí jakékoli jmenné služby, kterou používáte; například Google nebo Godaddy. U testovacího webu to udělejte přidáním nového názvu do localhost
řádek v /etc/hosts
. Přidejte položky pro oba weby, abyste tento soubor nemuseli později znovu upravovat. Výsledek vypadá takto:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 www.site1.org www.site2.org
Změňme také /var/www/html/index.html
aby byl soubor o něco jasnější. Mělo by to vypadat takto (s nějakým dodatečným textem, který to identifikuje jako web číslo 1):
<h1>Hello World</h1>
Web site 1.
Restartujte server HTTPD, abyste povolili změny v httpd
konfigurace. Poté se můžete na webovou stránku podívat pomocí prohlížeče textového režimu Lynx z příkazového řádku.
[root@testvm1 ~]# systemctl restart httpd
[root@testvm1 ~]# lynx www.site1.org
Hello World
Web site 1.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Můžete vidět, že se zobrazuje upravený obsah původní webové stránky a že nejsou žádné zjevné chyby. Stiskněte klávesu „Q“ a poté „Y“ pro ukončení webového prohlížeče Lynx.
Konfigurace druhého webu
Nyní jste připraveni nastavit druhý web. Vytvořte novou strukturu adresářů webu pomocí následujícího příkazu:
[root@testvm1 html]# mkdir -p /var/www/html2
Všimněte si, že druhý web je prostě druhý html
adresář ve stejném /var/www
adresář jako první web.
Nyní vytvořte nový soubor indexu, /var/www/html2/index.html
, s následujícím obsahem (tento indexový soubor je trochu odlišný, aby se odlišil od souboru pro původní web):
<h1>Hello World -- Again</h1>
Web site 2.
Vytvořte novou konfigurační stanzu v httpd.conf
pro druhý web a umístěte jej pod předchozí stanzu virtuálního hostitele (ty dva by měly vypadat velmi podobně). Tato stanza říká webovému serveru, kde má najít soubory HTML pro druhý web.
<VirtualHost 127.0.0.1:80>
DocumentRoot /var/www/html2
ServerName www.site2.org
</VirtualHost>
Znovu restartujte HTTPD a použijte Lynx k zobrazení výsledků.
[root@testvm1 httpd]# systemctl restart httpd
[root@testvm1 httpd]# lynx www.site2.org
Hello World -- Again
Web site 2.
<snip>
Commands: Use arrow keys to move, '?' for help, 'q' to quit, '<-' to go back.
Arrow keys: Up and Down to move. Right to follow a link; Left to go back.
H)elp O)ptions P)rint G)o M)ain screen Q)uit /=search [delete]=history list
Zde jsem zkomprimoval výsledný výstup, aby se vešel do tohoto prostoru. Rozdíl na stránce naznačuje, že se jedná o druhý web. Chcete-li zobrazit obě webové stránky současně, otevřete další terminálovou relaci a pomocí webového prohlížeče Lynx zobrazte druhou stránku.
Další úvahy
Tento jednoduchý příklad ukazuje, jak obsluhovat dva weby pomocí jediné instance serveru Apache HTTPD. Konfigurace virtuálních hostitelů se stává o něco složitější, když se zváží další faktory.
Můžete například chtít použít některé skripty CGI pro jednu nebo obě tyto webové stránky. K tomu byste měli vytvořit adresáře pro CGI programy v /var/www
:/var/www/cgi-bin
a /var/www/cgi-bin2
, aby byl konzistentní s pojmenováním adresáře HTML. Pak byste museli přidat konfigurační direktivy do stanz virtuálního hostitele, abyste určili umístění adresáře pro skripty CGI. Každá webová stránka může mít také adresáře, ze kterých lze stahovat soubory; to by také vyžadovalo záznamy v příslušné stanze virtuálního hostitele.
Web Apache popisuje další metody pro správu více webů a také možnosti konfigurace od ladění výkonu po zabezpečení.
Apache je výkonný webový server, který lze použít ke správě webových stránek od jednoduchých až po velmi složité. Přestože se jeho celkový podíl zmenšuje, Apache zůstává jediným nejčastěji používaným HTTPD serverem na internetu.