Ik beheer mijn eigen DNS en mijn eigen mail/web server op de computer die ik thuis heb staan; gewoon om te blijven leren hoe zulke zaken in elkaar steken. Ik zal hier vertellen hoe ik een site op heb gezet.

Tis wel ontzettend lang geleden sinds ik dit allemaal opgezet heb, dus ik hoop dat ik het nog juist vertel.

voorbereiding

Dit verhaal gaat er vanuit dat je een domein hebt geregistreerd en dat er een A (address) record met de naam ‘www’ bestaan. Dit address record heeft het IP adres van jouw host. Ik zal het hier over het domein miek.nl hebben. Ik ga verder niet in op de details die je moet regelen omdat voor elkaar te krijgen.

Als het allemaal goed werkt kun je een ping www.miek.nl geven en zien dat je antwoord krijgt.

webserver installeren

Dit gaat gewoon via het mechanisme van de desbetreffende distributie. Bij mij dus: apt-get install apache2

configureren

Nu moet er eea aan instellingen goed gezet worden; onder Debian/Ubuntu heb je nu ongeveer de volgende layout in /etc/apache2:

apache2.conf   
httpd.conf    
ports.conf
mods-enabled/	
sites-available/
sites-enabled/   
conf.d/  
mods-available/  
ssl/

Onder debian beheer je de apache modules met de commandos a2enmod en a2dismod. Ik zal hier niet verder ingaan op de apache modules. Dat is een verhaal op zich.

Het aan- of uitzetten van een website gaat met a2ensite en a2dissite respectievelijk.

/etc/apache2/apache2.conf

De laatste 2 regels van deze file luiden als volgt:

NameVirtualHost *:80
Include /etc/apache2/sites-enabled

Met het eerste statement geef ik aan dat ik websites heb draaien op port 80 op alle interfaces van mijn machine.

Het laatste statement verteld apache waar de website definities gevonden kunnen worden.

Maar goed - nu moet er dus nog eerst een site worden geconfigureerd. Dit doe je door de configuratie dus in sites-available te zetten.

/etc/apache2/sites-available/ In deze directory heb ik een file genaamd ‘miek.nl’ staan, hierin wordt aan apache vertelt hoe die website geconfigureerd is:

 1	<VirtualHost *:80>
 2	        ServerAdmin hostmaster@miek.nl
 3	        ServerName www.miek.nl
 4	        ServerAlias miek.nl
 5	        ServerAlias a.miek.nl
 6	        ServerAlias gieben.com
 7	        ServerAlias a.gieben.com
 8	        ServerAlias 80.127.17.126
 9	        ServerAlias 192.168.1.2
10	        ServerSignature Off
11	        DocumentRoot /home/miekg/miek.nl
12	        LogLevel warn
13	        ErrorLog /var/log/apache2/miek.nl-error.log
14	        CustomLog /var/log/apache2/miek.nl-access.log combined
15	</VirtualHost>
  1. Start een nieuwe virtualhost op port 80 (de http poort)
  2. Wie is de admin?
  3. Wat is de officiele hostnaam voor deze server: www.miek.nl
  4. Een alias
  5. Nog een
  6. Idem
  7. Idem
  8. Idem, maar dan een IP nummer (weet niet of dit per se nodig is).
  9. Idem
  10. Geef geen extra informatie over de apache server (versie nummers enzo)
  11. Waar kun je de site op het filesystem vinden? Hier dus /home/miekg/miek.nl.
  12. Hoeveel logging wil je hebben
  13. En waar moet die logging heen
  14. Idem
  15. Einde virtual host block

a2ensite

Nu kun je met a2ensite miek.nl voor deze file een symlink creeeren vanuit /etc/apache2/site-enabled naar /etc/apache2/site-available. Daar moet je apache restarten en zou eea moeten gaan werken:

/etc/init.d/apache2 restart

Permissies

De apache server op Debian/Ubuntu draait als user www-data, deze user moet wel recht hebben om de files in /home/miekg/miek.nl te kunnen lezen!

Ik kan nu dus een /home/miekg/miek.nl/index2.html file aanmaken met de juiste permissies:

touch /home/miekg/miek.nl/index2.html
chmod 644 /home/miekg/miek.nl/index2.html

NB: ook alle tussenliggende directories moeten bewandelbaar zijn voor de ‘www-data’ user, anders krijg je een ‘permission denied’.

Nu moet je dus je browser naar miek.nl/index2.html kunnen wijzen en moet je een mooi, wit scherm krijgen. Heb je dit dan kun je daarna verder gaan met het ontwikkelen van een website.

Heb je dit niet dan kun je in /var/log/apache2/miek.nl-error.log zien of er fout-meldingen zijn verschijnen. Eventueel kun je ook /var/log/apache2/error.log bekijken.