Een webserver in Linux installeren is eigenlijk niet moeilijk. Dit hoofdstuk gaat over het installeren van de webserver, hoe de deamon wordt gestart en gestopt en hoe je bestanden en webpaginas kunt aanbieden met de webserver. In de details zijn deze handelingen toegespitst op Mandrake. Bij de meeste bewerkingen zul je moeten zijn aangemeld als root.
De webserver is een zelfstandig draaiende applicatie die ook draait wanneer er geen gebruiker is aangemeld. In unix-termen wordt zo'n applicatie die draait zonder aan een terminal of venster gekoppeld te zijn een deamon genoemd. In de Windowswereld heeft men het vaak over een service . Feitelijk is de webserver aktief alsof er een onzichtbare gebruiker is aangemeld die het programma heeft gestart. In praktijk betekent dit dat je niet direct kunt zien of de webserver aktief is. Of de webserver aktief is, kunt je zien wanneer je een proceslijst opvraagt met het commando ps -ax of met het commando top . Een betere manier is direct de status van de deamon op te vragen met :
# service httpd status
Allereerst is het zaak om te kijken of de webserver geinstalleerd is. Je kunt zien of de deamon aanwezig is. Als een webserver is geinstalleerd , dan is meestal een deamon als een uitvoerbaar bestand genaamd httpd aanwezig in een speciale systeemmap met deamons. Je vindt die map in Mandrake in /etc/rc.d/init.d , maar per distributie kan die map op een andere plaats te vinden zijn, meestal ergens in /etc . Kijk eventueel in de documentatie van je distributie. In Mandrake kun je een simpele listing oproepen van de deamons als volgt.
[root@deimos root]# ls /etc/rc.d/init.d
acpi* dund* mandrake_everytime* oki4daemon* sshd*
acpid* functions* mandrake_firstime* pand* syslog*
alsa* halt* messagebus* partmon* udev*
apmd* harddrake* mtink* pcmcia* usb*
atd* hidd* netfs* portmap* vncserver*
bluetooth* hotplug* netplugd* postfix* xfs*
cpufreq* keytable* network* rawdevices* xinetd*
crond* kheader* nfs* single*
devfsd* killall* nfslock* smb*
dm* mandrake_consmap ntpd* sound*
Zoek naar een bestand genaamd httpd. Is deze aanwezig , dan is de webserver geinstalleerd. Zo niet, dan moet de webserver eerst worden geinstalleerd.
Het installeren van de webserver gaat bijzonder makkelijk met het zeer gebruikersvriendelijke Mandrake programma voor software installatie Rpmdrake. Je start dit vanuit X , de grafische omgeving door te klikken op Start -> Systeem -> Configuratie -> Pakketten -> Software installeren (in Mandrake 10.1). Rpmdrake start en zal vragen om het root wachtwoord. Het root wachtwoord is nodig omdat software installeren een taak is van de root gebruiker, maar binnen X is de gebruiker meestal aangemeld als een normale gebruiker.

Het scherm van Rpmdrake biedt de mogelijkheden de pakketten van de installatie-CDs te installeren. Het laat een boomstructuur zien, waarin het pakket "apache" moet worden aangeklikt om de webserver te installeren. Er zijn momenteel vaak twee verschillende uitvoeringen van apache. We kiezen hier apache2 . Dit pakket is te vinden als je "Server" openklikt, en daarna "Web/FTP".
Vink het pakket apache2-2.0.50-7mdk aan, en klik op installeren.
Rpmdrake zal in veel gevallen aangeven dat er extra pakketten moeten
worden geinstalleerd, omdat het pakket apache2 afhankelijk is van
enkele andere pakketten. Deze moeten ook worden geinstalleerd om de
apache2 webserver goed te kunnen gebruiken.
Klik op OK om dit te bevestigen. Rpmdrake zal vervolgens gaan kijken welke van de 3 installatie-CDs nodig zijn om te pakketten te installeren. Het zal vragen om achtereenvolgens de juiste CD(s) in de speler te leggen en vraagt dan om bevestiging. Volg de aanwijzingen en het gaat vanzelf.




Na afloop en als alles goed gaat, zijn de pakketten geinstalleerd en is de webserver klaar voor gebruik. Rpmdrake kan dan worden afgesloten.
De installatie kun je als volgt controleren.
[root@deimos root]# ls /etc/rc.d/init.d
acpi* dund* mandrake_consmap ntpd* sound*
acpid* functions* mandrake_everytime* oki4daemon* sshd*
alsa* halt* mandrake_firstime* pand* syslog*
apmd* harddrake* messagebus* partmon* udev*
atd* hidd* mtink* pcmcia* usb*
bluetooth* hotplug* netfs* portmap* vncserver*
cpufreq* httpd* netplugd* postfix* xfs*
crond* keytable* network* rawdevices* xinetd*
devfsd* kheader* nfs* single*
dm* killall* nfslock* smb*
Zoals hierboven zichtbaar is, is de deamon httpd nu aanwezig.
Het stoppen en starten van de deamon wordt uitgevoerd met het service commando. De syntaxis van dit commando is:
service SERVICE ARGUMENTS
Het commando neemt als eerste parameter de naam van een deamon. Eigenlijk is dit de naam van een van de scripts in de map /etc/rc.d/init.d . Kijk in die map om te weten te komen welke deamons er zoals op de computer aktief (kunnen) zijn. De webserver wordt aangesproken met de naam httpd .
Starten van de webserver gaat nu met het commando (Dit moet je uitvoeren als root):
# service httpd start
Starting httpd2: [ OK ]
Er verschijnt OK en dat betekent dat de webserver gestart is. De
boodschap [FAILED]
duidt erop dat de aktie niet goed is uitgevoerd. Dit kan erop duiden
dat er een fout in
de configuratie is.
Stoppen van de webserver gaat nu met het argument stop, als volgt:
# service httpd stop
Shutting down httpd2: [ OK ]
Om te kijken of de webserver draait, kun je het argument status gebruiken. Je krijgt een boodschap met de status, of de webserver aktief is of gestopt is.
[root@deimos root]# service httpd status
Apache is *not* running.
Use /etc/init.d/httpd extendedstatus for more information.
of wanneer de wbeserver aktief is:
[root@deimos root]# service httpd status
Apache is running.
httpd2: 6347 6346 6345 6344 6343 6336
Use /etc/init.d/httpd extendedstatus for more information.
In de laatste boodschap krijg je bovendien een aantal programma identificatienummer (PIDs) van de processen van httpd. Je ziet dat de webserver niet bestaat uit een proces maar uit een aantal processen. In deze versie 2 van Apache past het aantal aktieve processen zich automatisch aan de load (belasting) aan. Hoe meer aanvragen de webserver krijgt, des te meer processen er worden gestart die aanvragen van clients in behandeling kunnen nemen. Apache presteert hierdoor beter en de responsiviteit van een druk bezochte website met meer dan 100 hits per seconde wordt daardoor verbeterd.
Na het starten van de httpd-deamon is de webserver in werking. Je kunt de werking op een simpele wijze controleren door de eigen URL in te tikken in een webbrowser. Start bijvoorbeeld Mozilla en tik in het adresveld http://localhost. Je kunt ook het eigen ip--adres hier intikken of het loopback-adres van de netwerkadapter, welke altijd http://127.0.0.1 is. Je zult nu de default pagina van de webserver te zien krijgen , die eigenlijk verder niet zo interessant is.
Om zelf een website te maken gaan we een eigen startpagina maken in de webrootmap van de webserver. De webroot map is de map waarin de HTML bestanden staan die de vormgeving van de website bepalen en dit is in Mandrake de map /var/www/html . Een index.html bestand op deze plek maakt dat we deze pagina kunnen bekijken in een webbrowser op de URL http://localhost . Dat geldt eigenlijk voor alle bestanden in deze map en in submappen, zolang deze geen speciale betekenis hebben. Alle HTML bestanden, afbeeldingen en andere bestanden zoals zip-bestanden kunnen nu met de webbrowser worden getoond respectievelijk gedownload.
Een webpagina maken doet de rechtgeaarde Linuxfan natuurlijk in VI ! Zie de Basiscursus les 5 om te zien hoe vi werkt. Natuurlijk mag je ook een pagina maken met een andere editor als je dat plezieriger vindt, zolang je dat doet als de gebruiker root. Het gaat tenslotte gewoon om een bestand met leesbare tekst. Start VI en bewerk een index.html in de webroot map.
# vi /var/www/html/index.htmlDruk in VI op de 'i' toets om tekst in te voegen en tik:
<html>
<head>
<title>Mijn eigen webserver</title>
</head>
<body style="background-color: rgb(255, 255, 153);">
<center><h1>Joepie</h1>
Mijn eigen webserver
<br><br><br><a href="mailto:root@localhost">Mail de webmaster</a>
</center>
</body>
</html>
Druk op Esc toets en druk 'ZZ' (hoofdletters!) om de tekst op te slaan en VI af te sluiten.
Als je de editor moeilijk vindt, kun je ook een andere editor gebruiken, bijvoorbeeld joe in een tekstterminal, of een van de vele grafische editors Kate, Gedit, KWrite, enz die in X tot je beschikking staan.
We hebben nu een index.html pagina gemaakt die zichtbaar is op de webserver. Start nu een webbrowser en tik in het adresveld de URL http://localhost . Met deze URL kun je de webserver bereiken als deze zich bevindt op dezelfde computer. Wanneer je vanaf een andere computer de webserver wilt raadplegen, dan wordt in het beste geval het ip-adres van de webserver ingevuld, bijvoorbeeld http://172.18.10.5 (zie hoofdstuk Netwerkbasics). De zojuist gemaakte pagina zou nu zichtbaar moeten worden.

Dit is nog geen webserver die we via het internet kunnen vinden. Om
een webserver bereikbaar te
maken vanaf internet moet er meer worden
gedaan.
Een van die dingen is het aanbrengen van een route vanaf de
internetverbinding naar de server. Indien er een firewall aktief is op
de computer zelf of een gateway, dan moet een poort op de firewall
worden opengezet. Eventueel moet verkeer naar deze poort worden
doorgestuurd naar de computer waarop de webserver.
Een tweede
belangrijk ding is dat een domein geregistreerd wordt, bijvoorbeeld
"mijnwebserver.nl" en in de DNS ingevoerd, zodat aanvragen voor http://mijnwebserver.nl worden
doorgestuurd naar de webserver.
Als derde punt is het zaak dat de computer met de webserver voldoende beveiligd is tegen ongewenste toegang door hackers. Hierbij moet gedacht worden aan het beperken van de toegang tot de webservercomputer via FTP of SSH, maar ook dat de instellingen van Apache zelf zo worden bijgesteld dat bekende zwakheden van Apache niet kunnen worden uitgebuit. Hiervoor is het belangrijk om op de hoogte te zijn en te blijven van bekende beveiligingsgaten en het is ook noodzakelijk om continu veiligheidspatches te installeren voor de linuxkernel, Apache zelf en aanverwante software.
We hebben nu Apache werkend gemaakt. Apache is uitgebreid in te stellen en kent heel veel mogelijkheden. Om Apache naar eigen wensen in te stellen is het nodig om de configuratiebestanden te bewerken met een editor. Vroegere versies van Apache kon je configureren door het bestand /etc/httpd.conf te bewerken, maar latere versies van Apache kennen meestal een aantal configuratiebestanden die allemaal in de map /etc/httpd/conf/ te vinden zijn. Het belangrijkste configuratiebestand hierin is commonhttpd.conf .
Wanneer er wijzigingen zijn gemaakt aan dit bestand is het nodig om de webserver opnieuw de configuratiebestanden te laten inlezen om de wijzingen aktief te maken. Dit gaat met het service commando als volgt.
# service httpd reload
Reloading httpd2: [ OK ]
De configuratiebestanden kennen een vastgelegde eigen syntaxis. Apache controleert bij het starten of de reload aktie of de configuratie juist is. De status OK of FAILED is hierbij een belangrijke aanduiding of de configuratie na een wijziging nog juist is of dat er ergens een foutje in geslopen is, naar de laatste wijziging van commonhttpd.conf .
Een complete beschrijving van de configuratie van Apache vult met gemak een dik boek. Dat is ook de reden dat hier slechts enkele aspecten behandeld worden. Voor meer informatie verwijs ik naar de man pages en de Apache website op http://www.apache.org .
Om een map in de webserver toegankelijk te maken bestaan een aantal goede en minder goede manieren. De webserverhoofdmap is (meestal) gelegen in /var/www/html/http://localhost intikt .
Een manier om een extra map toegankelijk te maken is door een map aan te maken onder /var/www/html ( bijv mkdir /var/www/html/mijnweb). Deze map is dan direct toegankelijk via de URL http://localhost/mijnweb . Dit heeft het nadeel dat alleen root hierin bestanden mag wijzigen of HTML-pagina plaatsen. Een gewone gebruiker mag hierin niets wijzigen. Om de gebruiker cursist hierin bestanden te mogen laten plaatsen, is deze manier niet geschikt.
Een iets betere oplossing is om een symbolische link te maken in de webserver map en die te laten wijzen naar een map in de homedirectory van gebruiker cursist.
$ mkdir /home/cursist/mijnwebmaak als root een link naar deze map vanuit de webroot.
# ln -s /home/cursist/mijnweb /var/www/html/mijnweb
Deze oplossing werkt wel maar er is ook een groot nadeel aan: de beveiliging van de webserver wordt complexer. Het gebruik van symbolische links is over het algemeen niet aan te raden.
De beste oplossing is om in de configuratie van Apache een zogenaamde alias te maken. Deze alias wijst een mapnaam toe aan een map op de schijf. Om een map in de homedirectory van cursist toegankelijk te maken moet eerst een map aangemaakt worden (als cursist).
$ mkdir ~/mijnweb
Vervolgens wordt aan het eind van commonhttpd.conf een aantal regel worden toegevoegd (als root) die de toegang tot de directory instelt en de alias aanmaakt. Voeg de volgende regels toe
<Directory /home/cursist/mijnweb>
AllowOverride All
Options Multiviews Indexes
<IfModule mod_access.c>
Order allow,deny
Allow from all
</IfModule>
</Directory>
Alias /mijnweb/ /home/cursist/mijnweb/
De eerste 8 regels definieren de toegang tot de map. Hierin wordt
o.a.
bepaald dat je de directorylisting kunt zien indien er geen index.html
aanwezig is. Ook wordt hier bepaald dat iedere bezoeker deze map mag
zien. De laatste regel definieert de feitelijke alias en maakt het nu
mogelijk om de map /home/cursist/mijnweb te zien in een webbrowser.
Herstart de deamon om de configuratie aktief te maken. Daarna kan een
bezoeker nu deze map bereiken door
middel van de url http://localhost/mijnweb
Wanneer in deze map geen index.html bestaat, dan is de inhoud van de
map op deze manier zichtbaar als directorylisting.

Het gedrag dat de inhoud van een map zichtbaar wordt , is bepaald met het sleutelwoord "Indexes" in de sectie van deze directory in commonhttpd.conf .