16/5/2012

Meer websites op één server: Apache virtual hosts

Filed under: — cybrarian @ 11:08 am

.. door middel van “Name-based Virtual Hosts” op Apache 2 webserver (2.2 in dit geval).

Directories op de server die verband houden met de webserver:

  • /etc/apache2 : de instellingen voor de webserver, met
    /etc/apache2/httpd.conf het (hoofd)configuratiebestand. Hierin kan een ander configuratiebestand geladen worden, bv met “include /etc/apache2/vhosts.d/vhosts.conf”.
  • /srv (alle) serverdiensten (incl ftp, webserver, etc)
  • /srv/www de webserverdiensten, met subdirs:

    /srv/www/cgi-bin/ uitvoerbare scripts
    /srv/www/htdig/ voor zoekmachine op website
    /srv/www/htdocs/ gewone webserver documenten

Standaard zijn documenten vanaf hier zichtbaar naar buiten.
Standaard hier staat ook index.html, het eerste welkom-document (bv met de tekst “it works”).

Om virtuele hosts te gebruiken op “virtserver” in een intern/lokaal netwerk “.test.loc” zijn een paar stappen nodig:

  • kies de nieuwe hostnamen, bv alfa.test.loc, beta.test.loc, gamma.test.loc.
  • zet in de dns server verwijzingen naar het ip-adres waarop die virtuele sites zullen draaien. Bv voeg de lijnen toe in de dns-server (hier dns.test.loc) in het bestand /var/named/test.loc:
    …
    gateway IN A 192.168.1.1
    laserprinter IN A 192.168.1.110
    colorprinter IN A 192.168.1.120
    …
    virtserver IN A 192.168.1.200
    …
    dns IN CNAME gateway.test.local.
    mail IN CNAME gateway.test.local.
    webmail IN CNAME gateway.test.local.
    ..
    alfa IN CNAME virtserver.test.local.
    beta IN CNAME virtserver.test.local.
    …
    Let op het puntje aan het einde van de lijn bij alfa, beta..
    Bewaar en herstart de serverdienst: /etc/init.d/named restart
    (of service named restart)
    En test met ping alfa.test.local
  • in vhosts.conf maak je een paragraaf aan voor elke virtuele server, en/of maak een file per virtuele server:
  • /etc/apache2/vhosts.d : hierin staat een template “vhost.template” die je kan kopiëren voor elke virtuele host, bv naar alfa.test.local.conf, beta.test.local.conf, ..: daarin de virtuele hosts – instellingen doen.
    Enkele parameters moeten ingesteld worden in het configuratiebestand, hier onder het kopje < VirtualHost alfa.test.local:80 >

    ServerName alfa.test.local
    Documentroot /srv/www/vhosts/alfa.test.local/htdocs
    ErrorLog /var/log/apache2/alfa.test.local-error_log
    CustomLog /var/log/apache2/alfa.test.local-access_log combined
    ScriptAlias /cgi-bin/ “/srv/www/vhosts/alfa.test.local/cgi-bin/

    Dan onder < Directory "/srv/www/vhosts/alfa.test.local/cgi-bin" >

    AllowOverride None
    Options +ExecCGI -Include
    Order allow,deny
    Allow from all

    en sluit
    < / Directory >
    En dan de document directory
    < Directory "/srv/www/vhosts/alfa.test.local/htdocs" >

    Options Indexes FollowSymLinks
    AllowOverride None

    en sluit
    < / Directory >

  • maak mappen aan in de vhosts directory voor elke virtuele webserver, bv :
    /srv/www/vhosts/alfa.test.local/ krijgt

    • cgi-bin
    • htdocs – – > hierin komen de eigenlijke website bestanden.
  • Zeg in /etc/apache2/listen.conf dat de server naar deze poort (80=standaard) moet luisteren:
    Listen 80
    NameVirtualHost *.80

Veel voorkomende problemen:

  • Als je bij ping test “ping unknown host alfa.test.local” krijgt, moet je de dns instellingen checken of het dns systeem herstarten om de instellingen te doen lezen.
  • Als je in de browser je virtuele site niet te zien krijgt (maar bv wel een “algemene” webserverpagina uit de /srv/www/htdocs dir) kan je:
    – de webserver herstarten om zijn configuratiefiles te laten lezen:
    /etc/init.d/apache2 restart
    – de documentdirectory checken: bestaat htdocs, en is hij leesbaar door de webserver?
    – is de configuratiefile in orde (vhosts.conf)?
    Na elke wijziging de webserver herstarten.

Uitgebreid 13/9/2012

Powered by WordPress