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