Servrar/apache vhost
Ubuntu Sverige
Virtualhosts är en teknik som Apache använder för att kunna hantera separata webbplatser på separata domäner. Apache kan antingen hantera virtualhosts utifrån unika ip-nummer eller beroende på vilket domännamn som de anropas med. Det sistnämnda refereras till som namnbaserade virtualhosts och är vad den här guiden kommer att fokusera på.
[redigera] Allmänt
I Apaches konfiguration så specificeras en virtualhost inom taggarna <VirtualHost ...></VirtualHost>. En typisk, och lätt minimalistisk, virtualhost skulle till exempel kunna se ut så här.
<VirtualHost *>
ServerAdmin webmaster@andreasolsson.se
ServerName www.andreasolsson.se
ServerAlias andreasolsson.se
DocumentRoot /home/andreas/www
<Directory /home/andreas/www/>
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/andreas_error.log
LogLevel warn
CustomLog /var/log/apache2/andreas_access.log combined
</VirtualHost>
Låt oss nu gå igenom exemplet rad för rad.
<VirtualHost *> - Inleder själva virtualhosten. Stjärnan (*) betyder att virtualhosten funkar med vilket ip-nummer som helst. Detta är en praktisk inställning om man (bara) använder sig utav namnbaserade virtualhosts. Extra praktiskt blir det om man dessutom råkar ha en dynamisk ip-adress.
ServerAdmin - Mailadressen till personen som ansvarar för virtualhosten. Visas bland annat i samband med felsidor (till exempel 404:or).
ServerName - Det domännamn som är associerat med virtualhosten.
ServerAlias - Ytterligare domännamn som kan mappas till virtualhosten. Valfritt.
DocumentRoot - Den mapp i vilken virtualhosten hittar sina filer.
<Directory ...> - Specificerar vilka rättigheter Apache ska använda för ett specifik mapp. Om inte annat vill/behöver man definera rättigheter för sin DocumentRoot. Rättigheterna i exemplet funkar överlag bra i enklare sammanhang. Läs dock gärna på mer om Options och AllowOverride.
ErrorLog och CustomLog - Att ge virtualhosten egna loggfiler är praktiskt för felsökning såväl som för generering utav statistik.
Om Apache får en anslutning från en domän som inte finns angiven i någon virtualhost så används den virtualhost vars konfiguration förekommer först.
Notera att namnbaserade virtualhosts kräver att det någonstans i Apaches konfiguration finns en NameVirtualHost specificerad.
Notera även att Apache behöver laddas om för att en ny konfiguration ska börja gälla.
Läs gärna på mer i Apache Virtual Host documentation
[redigera] Ubuntu-specifikt
Ubuntu använder, precis som Debian, en specifik struktur på sin Apache-konfiguration vad gäller virtualhosts. Den kretsar kring mapparna /etc/apache2/sites-available och /etc/apache2/sites-enabled. I sites-available placeras alla virtualhost-konfigurationer i separata filer; alltså en fil per virtualhost. När en virtualhost sen ska börja användas (sym)länkas den in i sites-enabled. Vill man kan man hantera dessa symlänkar på egen hand. Annars så finns kommandona a2ensite och a2dissite.
(Den intresserade kan titta i apache2.conf och se hur där innehållet från mappen sites-enabled inkluderas.)
Antag att vi har tagit exempelkonfiguration ovan och sparat den i filen /etc/apache2/sites-available/andreas
Vi kan nu aktivera den med kommandot: a2ensite andreas
Samt genom att ladda om Apache: /etc/init.d/apache2 reload
Skulle vi sen vilja deaktivera den: a2dissite andreas
Följt av den obligatoriska: /etc/init.d/apache2 reload
Angående den tidigare nämna NameVirtualHost så finns den angiven högst upp in förskapade default-virtualhosten. Det är alltså inget man själv behöver peta in.
Notera hur default-virtualhosten är inlänkad som /etc/apache2/sites-enabled/000-default. Det blir alltså alltid den som laddas först och som sålunda används om inget domännamn matchar.
[redigera] Angående SSL
Notera att det bara går att ha en SSL-skyddad site per ip-nummer. Namnbaserade virtualhosts är alltså inte en teknik för den som vill göra flera olika domäner tillgängliga via https.


