Ubuntu Sverige

Servrar/apache vhost

Ubuntu Sverige

Hoppa till: navigering, sök
Virtualhosts i Apache2

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.

Den här artikeln är hämtad från http://ubuntu-se.org/wiki/Servrar/apache_vhost
Personliga verktyg