05 januari 2006

Virtual Hosting; domeinnamen dirigeren

Een domeinnaam bestaat meestal uit drie woorden, gescheiden door punten. De achterste twee (een naam en een top-level domain zoals com, net of nl) kun je registreren, maar wat je er voor zet kun je soms zelf nog bepalen. Vaak heeft een website www als toevoeging voor de naam en de TLD, maar je kunt hier dus ook iets anders van maken. Je moet deze toevoegingen op de een of andere manier wel kunnen registreren (soms kan het bij je provider, soms kun je hiervoor beter zelf een zogenaamde nameserver opzetten) anders werkt het niet.

Maar wat moet je daar nou mee? Simpel: meerdere websites, elk met een mooi adresje, op 1 server draaien. Dit kun je doen met behulp van de Virtual Hosting functie van Apache en deze werkt als volgt.

Je hebt dus meerdere adressen gemaakt in de trant van stroop.kikkum.net en kaas.kikkum.net en je wilt dat de ene naar je pagina over stroop en de ander naar je pagina over Zweedse industriëlen in de eerste helft van de twintigste eeuw wordt doorverwezen. Je pagina over stroop zet je dan om te beginnen in een andere map dan de andere pagina; /var/www/stroop/ en /var/www/zweden/ bevatten dan bijvoorbeeld de index.html's en andere bestanden van de pagina's. Wat je dan doet is voor elke site een tekstbestand aanmaken in /etc/apache2/sites-available, noem ze hoe je wilt (een herkenbare naam is het handigst, zeg stroop en kaas). In stroop zet je het volgende:

NameVirtualHost * <VirtualHost *> ServerName stroop.kikkum.net DocumentRoot /var/www/stroop </VirtualHost>

en voor kaas net zo maar dan met kaas en zweden. Als je meerdere adressen naar dezelfde pagina wilt sturen kun je binnen de VirtualHost tags deze extra lijn zetten:

ServerAlias [extra adressen]

De extra adressen kun je achter elkaar zetten, gescheiden door spaties en bovendien kun je de *- en ?-tekens gebruiken als wildcards.

De configuratie is nu klaar en wat nu nog rest is het activeren van deze instellingen en dit doe je met het programma a2ensite; een voorbeeld situatie:

$ sudo a2ensite Which site would you like to enable? Your choices are: default stroop zweden Site name? [vul in] Site [wat je in hebt gevuld] installed; run /etc/init.d/apache2 reload to enable.

En omdat we altijd braaf doen wat de progjes ons vertellen doen we nog even

$ sudo /etc/init.d/apache2 reload

En je adresje wordt voortaan netjes naar de juiste site gestuurd (als je me niet gelooft: ik heb dit adres al verkort tot dit) Als je nu een bepaald instellingen bestand en daarmee dus het doorsturen naar de juiste site van een bepaald adres wilt uitschakelen dan gebruik je a2dissite die op dezelfde manier werkt als z'n enablende vriend.

Oe begriep'm: ondergetekende is binnenkort bereikbaar op avecpinguin.kikkum.net. Eerst echter nog even een harde schijf regelen die niet in staat van ontbinding verkeert.