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_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.
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