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 VirtualHostinstrueert 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_htmlvoor de website-bestanden zelf en logs voor de log-bestanden die Apache per website gaat bijhouden. In dit voorbeeld plaatsen we alles in /home.

# mkdir /home/voorbeeldsite1.nl
# mkdir /home/voorbeeldsite1.nl/public_html
# mkdir /home/voorbeeldsite1.nl/logs
# mkdir /home/voorbeeldsite2.nl
# mkdir /home/voorbeeldsite2.nl/public_html
# mkdir /home/voorbeeldsite2.nl/logs
]]>

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:

NameVirtualHost *

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 -li NameVirtualHost /etc/apache2

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:

# rgrep -li NameVirtualHost /etc/apache2
/etc/apache2/ports.conf

# cat /etc/apache2/ports.conf
NameVirtualHost *:80
Listen 80


    NameVirtualHost *:443
    Listen 443

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:

# nano /etc/apache2/sites-available/voorbeeldsite1.nl
<Virtualhost *:80>
        ServerAdmin webmaster@voorbeeldsite1.nl
        ServerName  www.voorbeeldsite1.nl
        ServerAlias voorbeeldsite1.nl

        DocumentRoot /home/voorbeeldsite1.nl/public_html/

        <Directory /home/voorbeeldsite1.nl/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /home/voorbeeldsite1.nl/logs/error.log
        LogLevel warn

        CustomLog /home/voorbeeldsite1.nl/logs/access.log combined
</VirtualHost>
# nano /etc/apache2/sites-available/voorbeeldsite2.nl
<Virtualhost *:80>
        ServerAdmin webmaster@voorbeeldsite2.nl
        ServerName  www.voorbeeldsite2.nl
        ServerAlias voorbeeldsite2.nl

        DocumentRoot /home/voorbeeldsite2.nl/public_html/

        <Directory /home/voorbeeldsite2.nl/public_html/>
                Options -Indexes FollowSymLinks MultiViews
                AllowOverride All
                Order allow,deny
                allow from all
        </Directory>

        ErrorLog /home/voorbeeldsite2.nl/logs/error.log
        LogLevel warn

        CustomLog /home/voorbeeldsite2.nl/logs/access.log combined
</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.

# a2ensite voorbeeldsite1.nl voorbeeldsite2.nl
Enabling site voorbeeldsite1.nl.
Enabling site voorbeeldsite2.nl.
Run '/etc/init.d/apache2 reload' to activate new configuration!

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:

# /etc/init.d/apache2 reload
Reloading web server config: apache2.

Bron: debian-administration.org

Mijn Rimote

Bent u al klant van Rimote? U kunt dan inloggen in Mijn Rimote. Hier kunt u o.a. alle informatie over uw abonnementen bekijken, facturen inzien en betalingen doen. Tevens kunt u heel makkelijk via Mijn Rimote ons een vraag stellen.

Wie is Rimote

Rimote is een full-service internetbureau uit Groningen met een groot team aan internet professionals, opgericht in 2005. Zoekt u een ervaren ICT-partij om uw idee voor een website of webapplicatie uit te voeren? U kunt altijd een vrijblijvend gesprek aanvragen om de mogelijkheden te bespreken. De koffie staat klaar!

Uw domeinnaam nog vrij?

Volg ons ook op social media

Meer weten of eens langs komen?

Bel of mail voor een afspraak

Bezoekadres

Rimote
Herestraat 106
9711 LM Groningen

Telefoon

050 - 763 04 07
(ma-vr 9:00 tot 18:00)

06 - 43 887 949
(24/7 storingsnummer)

Postadres

Rimote
Pioenstraat 194
9713 XX Groningen