Si të strehoni uebfaqe të shumta me një server Apache
Pritëset virtuale të Apache janë një veçori që ju lejon të organizoni uebfaqe të shumta të pavarura nga një instalim Apache. Çdo sajt ka drejtorinë e vet të sistemit të skedarëve dhe emrin e domenit. Ju mund të shërbeni faqe të ndryshme për vizitorë të ndryshëm bazuar në domenin që ata përdorin.
Pritësit virtual krijohen duke përdorur direktivën
në skedarët e konfigurimit të Apache. Ato zakonisht ruhen në drejtorinë sites-available
brenda vendndodhjes së instalimit të Apache. Në sistemet Debian, kjo zakonisht është /etc/apache2
; shpërndarjet e tjera mund të përdorin /etc/httpd
.
Ne do të supozojmë se ju tashmë keni Apache në funksionim. Ne do të krijojmë dy hoste virtualë të veçantë, a.example.com
dhe b.example.com
. Nuk ka asnjë kufi për numrin e hosteve virtualë që mund të përdorni – nëse keni nevojë për një duzinë faqesh në një server, Apache do t'ju detyrojë.
Konfigurimi i faqeve
Çdo faqe ka nevojë për drejtorinë e vet të sistemit të skedarëve. Do të vendosni skedarët e faqes së internetit, të tilla si HTML, CSS dhe JavaScript, brenda kësaj drejtorie. Quhet DocumentRoot
nga Apache, pasi është rrënja nga e cila shërbehen dokumentet.
Ju mund t'i gjeni faqet tuaja kudo në sistemin tuaj. Shpesh do të shihni hostet virtualë të ruajtur brenda /var/www
, ku çdo sajt merr dosjen e vet:
sudo mkdir -p /var/www/a.example.com
sudo mkdir -p /var/www/b.example.com
/var/www
zakonisht është në pronësi të root
, kështu që ne po përdorim sudo
për të krijuar nën-drejtoritë. Më pas, ndryshoni pronësinë e rrënjëve të dokumentit tek përdoruesi juaj dhe vendosni lejet e duhura. Kjo do të lejojë Apache-n të lexojë skedarë ndërkohë që ju jep akses për shkrim, në mënyrë që të mund të shtoni përmbajtjen tuaj.
sudo chown -R $USER:$USER /var/www/a.example.com
sudo chown -R $USER:$USER /var/www/b.example.com
sudo chmod -R 755 /var/www
Kopjoni skedarët e faqes suaj të internetit në drejtori. Ne do të përdorim dy skedarë të thjeshtë index.html
:
a.example.com/index.html
<html>
<body>
<h1>a.example.com</h1>
</body>
</html>
b.example.com/index.html
<html>
<body>
<h1>b.example.com</h1>
</body>
</html>
Konfigurimi i Apache
Tani jeni gati të konfiguroni hostet tuaj virtualë. Krijoni një skedar të ri Virtual Host për secilën prej sajteve. Nuk ka rëndësi se si e emërtoni skedarin; sipas konventës, zakonisht përputhet me emrin e hostit të faqes suaj.
Së paku, çdo Host Virtual duhet të deklarojë dy veti:
Emri i serverit
– Emri i hostit (domeni) nga i cili do të shërbehet faqja.DocumentRoot
– Vendndodhja e sistemit të skedarëve për të shërbyer për këtë host virtual.
Këtu është një shembull konfigurimi për dy faqet tona:
/etc/apache2/sites-available/a.example.com.conf
<VirtualHost *:80>
ServerName a.example.com
DocumentRoot /var/www/a.example.com
</VirtualHost>
/etc/apache2/sites-available/b.example.com.conf
<VirtualHost *:80>
ServerName b.example.com
DocumentRoot /var/www/b.example.com
</VirtualHost>
Ky konfigurim bazë është i mjaftueshëm për të marrë të dy faqet drejtpërdrejt! *:80
do të thotë se Apache do të marrë në konsideratë përdorimin e këtij Host Virtual për çdo kërkesë që arrin në portin 80. Ato do të zbehen më vonë nga deklaratat ServerName
.
Aktivizimi i hosteve virtualë
Shtimi i një hosti virtual në sites-available
e bën atë të disponueshëm por jo aktiv. Duhet të aktivizoni manualisht çdo sajt që dëshironi të përdorni. Konfigurimet Virtual Host për të aktivizuar duhet të jenë të lidhura në /etc/apache2/sites-enabled
(ose /etc/httpd/sites-enabled
).
Në sistemet Debian, mund të përdorni komandën a2ensite
për të thjeshtuar këtë hap:
a2ensite a.example.com
a2ensite b.example.com
Në shpërndarjet e tjera, përdorni komandën ln
për të krijuar manualisht një lidhje simbolike.
sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/a.example.com.conf
sudo ln -s /etc/httpd/sites-available/a.example.com.conf /etc/httpd/sites-enabled/b.example.com.conf
Më në fund, rinisni Apache për të aplikuar konfigurimin tuaj të ri. Ndryshimet Virtual Host kërkojnë një rinisje të serverit pasi t'i keni shtuar në sajtet e aktivizuara
.
sudo apache2ctl restart
Tani duhet të jeni në gjendje të shihni Apache që shërben dy faqet tuaja të ndryshme. Nëse nuk keni zgjidhjen e DNS në serverin tuaj, mund të modifikoni skedarin /etc/hosts
të sistemit tuaj për të testuar konfigurimin tuaj.
Shtoni rreshtat e mëposhtëm te /etc/hosts
:
127.0.0.1 a.example.com
127.0.0.1 b.example.com
Kjo do t'i detyrojë të dy domenet të zgjidhen përsëri në sistemin tuaj. Tani do të keni mundësi t'i vizitoni ato në shfletuesin tuaj për të parë dy faqet e ndryshme Virtual Host.
Pseudonimet e faqeve
Nëse dëshironi të shërbeni i njëjti sit në domene të shumta, përdorni direktivën ServerAlias
në hostin tuaj virtual. Çdo pseudonim do të merret parasysh kur Apache përputhet me hostin tuaj virtual me kërkesat hyrëse. Pritësi virtual do të përdoret nëse titulli Host
i kërkesës përputhet me një Alias të Serverit
ose me Emri i Serverit
.
<VirtualHost *:80>
ServerName a.example.com
ServerAlias example.com
ServerAlias www.example.com
DocumentRoot /var/www/a.example.com
</VirtualHost>
Ky shembull do të shërbente sitin a
në tre domene, pa pasur nevojë të përsërisni ndonjë detaj konfigurimi. Ju duhet të përdorni ServerAlias
për të përcaktuar domene të shumta – përsëritja e Emri i serverit
është e mundur, por do të anashkalojë përdorimet e mëparshme.
Opsione të tjera të konfigurimit
Shumë nga opsionet e konfigurimit të serverit të Apache mund të përdoren me Virtual Hosts. Ata do të anashkalojnë cilësimet globale të serverit kur Apache trajton një kërkesë duke përdorur Virtual Host.
<VirtualHost *:80>
ServerName a.example.com
DocumentRoot /var/www/a.example.com
DirectoryIndex my-index.html
<Directory /var/www/a.example.com>
AllowOverride All
Options -Indexes
Require all granted
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Ky host virtual aplikon shumë cilësime të tjera. my-index.html
shërbehet si parazgjedhje, në vend të index.html
dhe përdoren vendndodhjet e personalizuara të regjistrimit. Përveç kësaj, cilësimet shtesë aplikohen në vetë rrënjën e dokumentit, duke përdorur bllokun Directory
. Lejohen anulimet e .htaccess
(AllowOverride All
) dhe faqet e listimit të dosjeve të paracaktuara të Apache janë të çaktivizuara (Opsionet -Indekset
).
Pritësit e adresave IP
Apache gjithashtu mbështet hostet me bazë IP përveç hosteve të bazuara në emra që kemi parë deri më tani. Pritëset e bazuara në IP janë ideale kur serveri juaj ka ndërfaqe të shumta rrjeti, të tilla si një rrjet i brendshëm i kompanisë dhe interneti publik. Ju mund të shërbeni një sajt të ndryshëm në varësi të ndërfaqes së rrjetit të përdorur.
<VirtualHost 172.17.0.1>
ServerName a.example.com
DocumentRoot /var/www/a
</VirtualHost>
<VirtualHost 172.17.0.1>
ServerName b.example.com
DocumentRoot /var/www/b
</VirtualHost>
<VirtualHost 192.168.0.1>
ServerName a.example.com
DocumentRoot /var/www/a2
</VirtualHost
Në këtë shembull, kërkesat e bëra në a.example.com
nëpërmjet ndërfaqes me IP 192.168.0.1
do të merrnin përmbajtje të ndryshme nga ato të dërguara nëpërmjet 172.17.0.1. Përveç kësaj, përdoruesit e IP-së së fundit do të mund të hynin në
.b.example.com
. Ky sajt nuk është i ekspozuar ndaj përdoruesve që lidhen nëpërmjet 192.168.0.1
Kjo qasje ju lejon të përdorni një server për intranetin tuaj të korporatës dhe faqen publike të internetit. Lidhni faqet e brendshme me IP-në LAN të serverit tuaj; drejtoni hostet publike kundrejt adresës së tij WAN.
Përputhja e hostit virtual
Rutina e zgjidhjes së Pritësit Virtual të Apache është e mirë-dokumentuar dhe mjaft e drejtpërdrejtë.
Në përgjithësi, Apache përpiqet të përputhet me kokën e kërkesës Host
me një fushë ServerName
ose ServerAlias
në një konfigurim Virtual Host. Nëse ka shumë përputhje, Apache do të përdorë Pritësin Virtual që përputhet i parë që gjeti.
Pritësit virtualë janë renditur sipas emrit të skedarit. Nëse ju duhet një sajt që të përputhet me një tjetër, riemërtoni skedarin e tij të konfigurimit në mënyrë që të renditet përpara sajtit të synuar. Mund të shtoni një parashtesë numerike si 000-a.example.com.conf
. Shumicën e kohës kjo do të jetë e panevojshme – nëse të gjitha faqet tuaja kanë domene unike, nuk duhet të hasni kurrë një konflikt.
konkluzioni
Apache Virtual Hosts ju lejojnë të zbërtheni konfigurimin e shumë faqeve në skedarë me definicion të pavarur. Ju mund të aktivizoni dhe çaktivizoni në mënyrë të pavarur çdo sajt duke e lidhur atë në sites-enabled
.
Shumë opsione konfigurimi janë të disponueshme për Virtual Hosts. Ju mund të anashkaloni disa cilësime të serverit Apache në bazë të hostit, në mënyrë që të keni kontroll të plotë mbi çdo konfigurim të sajtit të virtualizuar.