VirtualHost aanmaken in Apache om meerdere websites te hosten (Debian)

Als u Apache heeft geïnstalleerd op uw VPS heeft deze standaard één map op de server waar alle website-bestanden in staan, namelijk /var/www. Dit is niet een wenselijke situatie indien u meer dan één website op uw server wilt draaien. Op deze pagina vindt u een korte handleiding hoe u met Debian een Apache webserver zo kunt instellen dat hij meerdere websites kan aanbieden. Dit gaat met behulp van zogeheten VirtualHosts.

Wat is een VirtualHost

Een VirtualHost is een configuratie-bestand dat zich op Debian bevindt in de map /etc/apache2/sites-available. Een VirtualHost instrueert Apache waar hij de website-bestanden kan vinden die gekoppeld zijn aan een specifieke domeinnaam. In beginsel wordt er per domeinnaam één VirtualHost aangemaakt. U dient er dus voor te zorgen dat de nameservers van de domeinnaam (of sub-domeinnaam) doorverwijzen naar de (virtuele) server waar Apache op draait.

Stap 1

Maak verbinding met uw server via SSH. Indien Apache nog niet is geïnstalleerd, of eventueel moet worden bijgewerkt naar de nieuwste versie, kan dit eenvoudig worden gedaan met behulp van de Aptitude package manager van Debian. Meer informatie over hoe u software kunt installeren op Debian.

Stap 2

Maak nieuwe mappen aan voor alle bestanden van de websites die we via Apache willen hosten, één map per website. In deze map maken wij weer twee submappen, public_html voor de website-bestanden zelf en logs voor de log-bestanden die Apache per website gaat bijhouden. In dit voorbeeld plaatsen we alles in /home.

Stap 3

Stel Apache zo in dat hij kan omgaan met VirtualHosts. Hiervoor moet een regel worden toegevoegd aan één van de configuratie-bestanden die zich bevinden in /etc/apache2:

De kans is aanwezig dat in één van de config-bestanden in /etc/apache2 bovenstaande regel al is toegevoegd. Als dit per ongeluk dan nog een keer wordt toegevoegd zal de Apache webserver niet meer opstarten. Het is daarom verstandig om eerst te kijken of de regel niet al is toegevoegd:

rgrep zal in de command line elk bestand noemen waar hij NameVirtualHost heeft gevonden. Indien dit in precies één bestand voorkomt hoeft u niets te doen. Als het in meer dan één bestand voorkomt moet u de desbetreffende bestanden aanpassen om te zorgen dat er maar één bestand overblijft waar NameVirtualHost in genoemd staat.

In ons voorbeeld is standaard NameVirtualHost al toegevoegd aan /etc/apache2/ports.conf. Dit was te ontdekken met behulp van rgrep, de inhoud kan worden ingezien met cat:

Stap 4

Maak nu in de map /etc/apache2/sites-available twee nieuwe bestanden aan met een editor naar keuze. In ons voorbeeld gebruiken we nano en als bestandsnamen de domeinnamen, om het overzichtelijk te houden. Per bestand definiëren we één VirtualHost:

Stap 5

Nu de relevante VirtualHosts zijn aangemaakt dienen de websites in Apache nog geactiveerd te worden. Dit kan met het commando a2ensite (deactiveren gaat met a2dissite). Met dit commando wordt er in /etc/apache2/sites-enabled een symlink (een soort alias) aangemaakt naar het configuratie-bestand met de VirtualHost in /etc/apache2/sites-available. Elke keer wanneer Apache opnieuw wordt opgestart worden alle configuratie-bestanden ingeladen die het via /etc/apache2/sites-enabled kan vinden. De map /etc/apache2/sites-available wordt dus door Apache in feite genegeerd.

Stap 6

Het configureren van de VirtualHosts in Apache is nu klaar. Het enige wat nog moet gebeuren is het opnieuw inladen van de configuratie-bestanden:

De bron van een groot deel van de informatie op deze pagina is hier te vinden: debian-administration.org