Eindwerk Apache vs IIS

47
HET OPZETTEN VAN EEN WEBSERVER APACHE VS. IIS Grafische en Digitale Media Academiejaar 2007 - 2008 Artevelde hogeschool Industrieweg 232 9030 Mariakerke - Gent Interne promotor: Willy Van Gestel Externe promotor: Openminds webhosting Eindwerk voorgedragen door Dobbelaere Steven tot het behalen van het diploma Bachelor in de Grafische en Digitale Media, afstudeerrichting Multimediaproductie.

description

eindwerk het opzetten van een webserverApache vs. IIS

Transcript of Eindwerk Apache vs IIS

Page 1: Eindwerk Apache vs IIS

HET OPZETTEN VAN EEN WEBSERVERAPACHE VS. IIS

Grafische en Digitale Media

Academiejaar 2007 - 2008

Artevelde hogeschool

Industrieweg 232

9030 Mariakerke - Gent

Interne promotor: Willy Van GestelExterne promotor: Openminds webhosting

Eindwerk voorgedragen door Dobbelaere Steven tot het behalen van het diplomaBachelor in de Grafische en Digitale Media, afstudeerrichting Multimediaproductie.

Page 2: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

2

INHOUDSOpgave

HOOFDSTUK 1: ALGEMEEN1.1 Woord vooraf1.2 Inleiding

1.3 Webservers algemeen 1.3.1 Wat hebben we nodig om een webserver op te zetten 1.3.2 Protocollen

HOOFDSTUK 2: Internet Information Services2.1 Inleiding2.2 Installatie 2.2.1 Installatie op Windows Vista 2.2.2 Installatie op Windows Server 20082.3 Beheer met command line2.4 Beheer IIS configuratie2.5 IIS interface2.6 Beheren van websites en virtual directories 2.6.1 Toevoegen en instellen van een nieuwe website 2.6.2 Fysical en virtual directories2.7 Logging2.8 Monitoring2.9 Optimaliseren van webserver2.10 Backup2.11 Installatie PHP2.12 Installatie FTP

HOOFDSTUK 3: Apache3.1 Inleiding3.2 Installatie op Linux 3.3 Configuratie van Apache 3.3.1 Algemeen 3.3.1.1 Manueel 3.3.1.2 HTTP server 3.3.1.3 Webmin 3.3.2 Configuratie van Main server 3.3.3 Toevoegen en instellen van nieuwe websites en virtual directories3.4 Monitoring Apache3.5 Installatie PHP3.6 Installatie FTP server

HOOFDSTUK 4: Apache vs IIS4.1 Algemeen besluit4.2 Enquête4.3 Alternatieven

Lijst van illustratiesLiteratuurlijst

BijlagenBijlage 1: HTTP-status codesBijlage 2: RAID

Logboek

Steven Dobbelaere
Bookmarks
klik op de onderdelen om naar het gewenste onderdeel te gaan. Klik op de rechter zijbalk om terug te keren naar de inhoudsopgave.
Page 3: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

3

HOOfDStUk 1: algemeeN1.1 Woord voorafHet was een enorme verrijking om dit eindwerk te schrijven. Onmiddellijk na de keuze van het onderwerp heb ik mij boeken aangekocht en aangeschaft uit de bibliotheek. Ik heb dit onderwerp gekozen omdat het beheer van webserver zowat al hetgeen omvat die mij interesseert omtrent informatica en multimedia en omdat ik vond dat het nauw aansloot bij onze richting. In het middelbaar heb ik informatica gestudeerd, wat mij een goede basiskennis gaf. Informatica is mij altijd blijven interesseren. Het beheer van webserv-ers bevat zoveel vakgebieden en leek mij daarom het perfecte onderwerp voor dit eindwerk. Ik heb mij op allerlei vlakken moeten bijschaven. Het onderwerk is zeker niet te onderschatten. Het vereist dan ook jaren ervaring om webhosting volledig machtig te zijn.

Enkele vaardigheden die vereist zijn om aan webhosting te doen, zijn kennis hebben van hardware, beveil-iging, backup’s, Linux, programmeren, ASP.Net, PHP (en andere scripting talen) en natuurlijk ook kennis van webserversoftware. Ik ben beginnen met lezen over netwerken in het algemeen om de werking van de protocollen zo beter te verstaan. Vervolgens heb ik me verdiept in de onderwerpen firewalls en beveiliging. Het werken met Linux was voor mij ook zo goed als nieuw en heeft dan ook wat aanpassing en veel geduld gevraagd. Het heeft me veel moeite en tijd gekost om Apache werkende te krijgen op Linux. Ik heb ook verschillende Linux distributies getest en daaruit de beste gekozen.

Aangezien het onderwerp zodanig uitgebreid is, heb ik me bij het opstellen van dit eindwerk beperkt tot het uitwerken van de belangrijkste aspecten omtrent het opzetten van een webserver.

Graag zou ik ook de mensen Openminds webhosting uit Gent willen bedanken voor de hulp met het opzetten van de webservers en bij het schrijven van dit eindwerk. Verder wil ik ook mijn interne promoter de heer Willy Vangestel en de personen die mijn eindwerk gecontroleerd hebben op taalfouten bedanken voor hun hulp.

Page 4: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

4

1.2 InleidingApache is al jaren leider in de markt van webservers, maar door de nieuwe IIS 7 zal deze waarschijnlijk snel terrein verliezen. De strijd tussen Apache en IIS woedt reeds lange tijd. Als sinds de introductie van IIS loopt IIS in de schaduw van Apache. In dit eindwerk zal ik proberen te aan te tonen hoe dit komt en hoe dit in de toekomst zal evolueren. Het aandeel van Apache is momenteel nog steeds hoger dan die van IIS, maar is wel ondertussen geslonken tot een magere 10%. Ik zal uitleggen hoe je een webserver opzet dmv zowel Apache als IIS. Ik heb dit eindwerk dan ook opgedeeld in 3 onderdelen. Eerst en vooral zal ik het opzetten van een webserver uitleggen aan de hand van IIS. Vervolgens aan de hand van Apache en als slot zal ik de verschillen tussen beide uitleggen en ook de alternatieven bespreken. Niettegenstaande het jaren ervaring vereist om een objectieve vergelijking te kunnen maken tussen beide, tracht ik toch een duidelijk beeld weer te geven betreffende dit onderwerp.

Voor het praktisch gedeelte van mijn eindwerk heb ik een enquete opgesteld voor webhosting bedrijven en ook verschillende webservers opgezet (nl. Apache, IIS, Nginx, Lighttpd, XSP) op zowel Linux Ubuntu, Linux SUSE, Windows XP en Windows Server 2008 die ik zal voorstellen op de verdediging van het eindwerk.

Page 5: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

5

1.3 Webservers algemeen1.3.1 Wat heb je nodig om een webserver op te zetten?

HardwareVooraleer je een webserver kan opzetten, heb je natuurlijk een server nodig met de nodige hardware. Voor druk bezochte websites gebruik je het best een dedicated server of meerdere servers in een serverfarm. Er zijn 3 belangrijke hardware onderdelen in een webserver nl. geheugen, CPU en harde schijven.

Geheugen:Het aantal geheugen die vereist is hangt af van veel zaken zoals, de hoeveelheid processes die op de server zullen draaien, het aantal veel opgeroepen bestanden. 1Gb zou normaal moeten volstaan voor een gewone webserver, maar hoge performantie webservers gebruiken meestal van 4Gb to 16Gb aan RAM. Hoe meer RAM de webserver heeft, hoe meer files gecachet kunnen worden en hoe minder de harde schijf dus aangesproken moet worden en de bestanden sneller kan aan de client aanleveren.

CPUVoor statische websites is dit minder belangrijk omdat het verwerken van de pagina’s client-side ge-beuren, maar bij scripting talen zoals php of ASP.Net gebeurt dit op de server. Men kan nu nog kiezen tussen de 32-bit versie van windows server (of x86), maar volgende versies zullen alleen nog 64-bit ondersteuenen (of x64).

Harde SchijfDe grootte van de harde schijf hangt af van de grootte van de bestanden die erop staan en het paging file. De grootte is minder belangrijk omdat de harde schijven tegenwoordig een overdaad aan gigabytes leveren voor een lage prijs. De voornaamste interface types zijn SCSI (skoezie uitgesproken), Ultra SCSI, ATA, SATA. Serial ATA is beduidend sneller dan de oudere versie, ATA. SCSI interfaces zijn leveren hoger overdrachtsnelheden, maar zijn een duurdere oplossing dan SATA interfaces.SCSI kan overdrachtsnelheden tot 320MB/s leveren, waar SATA ‘maar’ 300MB/s levert.

Zoals ik al zei is de grootte van de harde schijf minder belangrijk. Belangrijker zijn de read access time en de rotatiesnelheidvan de harde schijf. Dit beschrijft hoe snel de hd een bestand kan vinden en lezen en de snelheid waarmee de platters ronddraaien. Bij gewone consument harde schijven bedraagt de rotatiesnelheid normaal 7200rpm, waar je bij een harde schijf voor een server toch best kiest voor een model met 15000rpm. De seektime voor consument modellen bedraagt tussen de 4 en 9 ms, maar voor een server kiest u best voor een model met een seek time die onder de 4 seconden ligt. Meestal bedraagt die rond de 3.3ms voor een server.

RAID mogelijkheden zijn ook dikwijls een belangrijk punt bij de keuze van harde schijf. RAID werkt op software niveau, dus sowieso heeft uw harde schijf de mogelijkheid om een RAID implementatie te doen. Voor RAID toe te passen heeft u wel meerdere harde schijven nodig en dit kan een zware investering worden. RAID kan gegevens sneller toegangkelijk maken of uw gegevens veilig stellen. Er bestaan 5 verschillende implementaties van RAID. De meest gebruikte zijn RAID 0,1 en 5. Verdere uitleg is te vinden in bijlage 3.

InternetproviderEen tweede vereiste is dat je een vast IP hebt zodat je websites steeds op de zelfde locatie te bereiken zijn. Een registrar kan dit IP dan koppelen aan een domain name die gemakkelijker te onthouden is voor de bezoeker dan bv. 203.243.34.3. Een fixed IP kost iets meer dan een account met een dynamic IP. Bij telenet krijg je voor 80 euro per maand al een fixed IP, maar voor een drukke webserver zul je toch een formule met een hogere bandbreedte moeten kiezen. Vooral de uploadsnelheid telt bij een webserver. Ook kan je kiezen voor een gegarandeerde up –en downstream snelheid zodat je zeker bent dat de server geen tragere connectie krijg op piekuren. Vaak staat er ook een limiet op de totale up –en downloadhoeveelheid wat verzonden kan worden per maand. Tegenwoordig bestaan er ook programma’s om het probleem van een dynamic IP te omzeilen en dus kan je zo wat geld uitsparen, maar de vraag blijft of dit geen problemen zal opleveren en om de 36 uur wordt de connectie met ISP normaal onderbroken, waarbij de client dus ook een nieuw IP krijgt en zo willen verhinderen ze dat end users server functies zouden uitvoeren.

Page 6: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

6

Operating SystemHier zijn er twee voorname spelers, nl. Windows en Linux. Linux leent zich perfect als netwerkbesturings-systeem. Bovendien is Linux open-source wat goed is voor de verdere ontwikkeling van het OS. Ook hoef je voor een Linux distributie geen duizenden euro’s neer te tellen zoals voor een windows server OS. Voor Windows Server 2008 Standard betaal je tegenwoordig 1000 euro. Een Enterprise Edition kost dan direct 4000 euro. Dit is toch wel een grote kost als je weet dat veel Linux distributies zijn gratis of slechts een fractie van het bedrag van een Windows server kosten. Linux vereist wel meer kennis dan windows en ik heb dan ook redelijk wat problemen gehad bij het werken met linux, maar op internet is een grote commu-nity van Linux gebruikers die elkaar helpen. Ik heb gewerkt met Linux SUSE server 10 ( “linux zoe zie” uitgesproken) van Novell. Er bestaan tientallen verschillende Linux distributies, maar ze zijn allemaal op Unix gebaseerd en de wijze van werken blijft grotendeels dezelfde. Linux SUSE wordt standaard geleverd met een grote bundel van software en de keuze van welke GUI je wil gebruiken. De bekendste zijn Gnome en KDE. Linux laat ook toe om zonder GUI te werken en enkel met een terminal te werken, wat heel wat RAM en processorkracht spaart.

Figuur 1.1 - Linux SUSE Gnome

Standaard wordt SUSE geleverd met allerlei programma’s zoals een tekstverwerker, firefox, mailclients, enz... Ook wordt SUSE uitgerust met een firewall. Ik heb ook gewerkt met Linux Ubuntu. Dit is een zeer gebruiksvriendelijke distributie. Ubuntu’s slogan is dan ook “Linux for humans”. Het is heel eenvoudig om hierop een webserver te plaatsen. Op een half uur tijd had ik een volledige webserver opgezet.

Daar tegenover staat Windows die net zijn windows server 2008 gereleased heeft. Deze versie laat toe om de GUI achterwege te laten en enkel te werken met een command prompt. Hiervoor heeft windows afgekeken van Linux. Met de nieuwe Aero GUI die ook geïntegreerd is in Vista, is die server core optie wel nodig, want de GUI vraagt veel recources van het systeem wat niet de bedoeling is van een webserver. Gelukkig kan je een groot deel van die snufjes afzetten. Deze versie van Windows server is zowel voor x86 als x64 systemen. Dit zal de laatste versie zijn die nog x86 ondersteund. De requirements zijn nogal aan de hoge kant vergeleken met de vorige versie. Deze versie beveelt een 2GHz processor aan en 2GB RAM vergeleken met een 133MHz processor en 128MB RAM. Er zijn grote aanpassingen gebeurd aan IIS 7.0 en dat is de grootste sterkte van Windows Server 2008, maar daar ga ik later verder op in.

MSDN: http://msdn.microsoft.com/en-us/windowsserver/cc196364.aspxmicrosoft: http://www.microsoft.com/windowsserver2008/en/us/pricing.aspx

Page 7: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

7

Webserver software:Hier kan men kiezen tussen verschillende webservers. De voornaamste zijn de open source webserver Apache en de webserver van Microsoft Internet information services. Apache wordt op dit moment nog het meest gebruikt met een 50,42% marktaandeel, maar IIS is met een sterke opmars bezig met nu 35,33%. Om de huidige status van het aandeel van de webserver te bekijken, kunt u deze website consulteren http://news.netcraft.com/. In figuur is duidelijk een dalende trend van Apache zichtbaar. De rode lijn stelt het aandeel voor van IIS en is duidelijk aan het stijgen. Ik denk dat deze trend zich alleen maar zal voortzetten nu IIS 7.0 gereleased is.

IIS 7.0 is sterk veranderd bij IIS 6.0 en is bijna niet meer te herkennen. Nu zitten ook alle terkortkomin-gen erin die wel al in Apache zaten zoals de mogelijkheid om modules toe te voegen en het gebruik van commando’s ipv een grafische interface die de webserver zwaar kan belasten. Nog een andere webserver die ook redelijk wat herkenning geniet is Lighttpd ( lighty uitgesproken). Lighttpd is een snelle en veilige webserver die weinig resources nodig heeft. Net als Apache is Lighttpd open source. Ligttpd draait zowel op Linux als Windows. Voor secure websites heeft Apache slechts een kleine voorsprong op zijn concur-rent IIS. Apache heeft hier een 44% marktaandeel, waar IIS 43,8% haalt. De reden van dit marktaandeel is waarschijnlijk te wijten aan de versie 2 van Apache die standaard de mod_ssl module bevat.

Figuur 1.2 - Market Share for Top Servers Across All Domains August 1995 - April 2008(http://news.netcraft.com/archives/web_server_survey.html)

Marktaandeel webserversDeveloper March 2008 Percent April 2008 Percent ChangeApache 82,454,415 50.69% 83,554,638 50.42% -0.27

Microsoft 57,698,503 35.47% 58,547,355 35.33% -0.14

Google 9,012,004 5.54% 10,079,333 6.08% 0.54

lighttpd 1,552,650 0.95% 1,495,308 0.90% -0.05

Sun 546,581 0.34% 547,873 0.33% -0.01

Tabel 1.1 - Marktaandeel webservers (http://news.netcraft.com/archives/web_server_survey.html)

Netcraft: http://news.netcraft.com/archives/web_server_survey.html

Page 8: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

8

1.3.2 protocollenWebservers maken meestal gebruik van 4 protocollen die gebaseerd zijn op het TCP/IP model:

Hypertext Transfer protocol (HTTP): dit protocol maakt het mogelijk om statische of dynamische gegevens te verzenden naar een client via internet of intranet. Een HTTP client zendt meestal een request voor een tcp connectie op poort 80 voor HTTP en de server luistert op deze poort voor requests. Na het maken van de connectie, een procedure die

“handshaking” genoemd wordt, verzendt de server de gevraagde bestanden. Bij http 1.1 is het mogelijk om deze connectie open te houden voor een bepaalde duur zodat niet voor iedere request een nieuwe TCP connectie geïnitieerd moet worden. Bij http 1.0 was dit nog niet mogelijk. Het te lang open houden van deze connecties kan de server laten vastlopen dus de http keep alive time moet goed overwogen worden.

Secure Socket Layer (SSL) : dit is een protocol, gemaakt door Netscape, die de gegevens versleutelt die verzonden worden tussen client en server. Standaard wordt de poort 443 hiervoor gebruikt. Bij het verzenden van gegevens over inter-net passeren deze verschillende routers en de kans op interceptie van die gegevens is dus reëel. Daarom moeten deze gegevens versleutelt worden als het gaat over belangrijke gegevens zoals banktransacties, aankopen op internet of geheim e-mail verkeert. Dit protocol ligt tussen TCP/IP en hoger gelegen proto-collen zoals SMTP, HTTP, FTP en kan dus op deze protocollen toegepast worden. Er zijn twee soorten van deze encryptie: Symmetric en assymetric encrytion. De tweede wordt het meest gebruikt. Bij sym-metric encrytion moeten beide partijen de sleutel hebben om de gegevens te encryteren. Bij assymmetric encrytion wordt gebruik gemaakt van een public en een private key. Bij deze vorm is er een tussenpersoon nodig, nl. Een Certificate Authority (CA). Deze leveren certificaten. De public key is hierbij voor iedereen beschikbaar, maar de private moet strikt geheim blijven.

File Transfer Protocol (FTP): FTP ligt ook op hetzelfde niveau als voorgaande protocollen en maakt het mogelijk dat clients bestanden kunnen uploaden of downloaden van een ftp-server. FTP wordt veel gebruikt door webhosting bedrijven om hun klanten zo de mogelijkheid te bieden om hun bestanden op die manier op de webserver te zetten. Er wordt hierbij meestal gebruik gemaakt van poort 21 om verbinding te maken met de de server. FTP maakt gebruik van out-of-band control, wat wil zeggen dat het gebruik maakt van twee connecties, één voor de connectie open (besturingsverbinding) te houden en één om de gegevens te verzenden (gegevens-verbinding). HTTP gebruikt daarentegen een in-band om controle-informatie te verzenden tussen client en server. De verbinding blijft open voor een bepaalde tijd, ook na het verzenden van een bestand. De gegevens verbinding daarentegen sluit de connectie na het verzenden van ieder bestand. Paswoorden en gegevens worden verzonden als clear tekst (dus niet beveiligd, tenzij er gebruik wordt gemaakt van SFTP) en kunnen dus geïntercepteerd worden door kwaadwilligen.

Simple Mail Transfer Procotol (SMTP): SMTP maakt gebruik van poort 25. Dit protocol maakt het mogelijk om een webclient mails te laten verzenden of webservers mail te laten doorverzenden naar andere mailservers. SMTP is een push proto-col, net als de mail-accessprotocollen POP3 en IMAP een pull protocol zijn om mail te ontvangen. Eerst wordt tussen de client en server een handshaking procedure tot stand gebracht waar de de versleuteling-salgoritme wordt afgesproken (bv. RSA, Fortezza, DES, Idea, RC2, Diffie-Hellman, MD5, KEA, DSA, SKIPJACK,...). Om een versleutelde connectie te maken moet ‘https’ gebruikt worden ipv ‘http’ door de browser (dit kan ook afgedwongen worden dmv server-side scripting), daarop voeren browser en server de handshaking procedure uit.

Kurose, F., James, Computer netwerken, een ‘top-down’ -benadering, Focus to Prepress, 2005, 826 blz.

Page 9: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

9

HOOfDStUk 2:INterNet INfOrmatION ServIceS (IIS)

2.1 InleidingWe zullen dus gebruik maken van IIS 7.0 en niet van de 6.0. Deze nieuwe versie is helemaal vernieuwd bij de vorige versie en is een ‘rewrite from scratch’. Dus alles wat je wist van IIS 6.0 mag je eigenlijk vergeten. Vooral in de onderhuidse architectuur is er veel veranderd. Deze is nu gebaseerd op XML. De interface is erg duidelijk en gemakkelijk om mee te werken. Bij deze nieuwe versie wordt ASP.Net sterk in het daglicht geschoven. Ze hebben ASP.Net en het .NET Framework samengebracht om controle over ASP.Net te verhogen. De nadruk ligt dan ook sterk op ASP.Net. Met IIS 7.0 zullen ASP.Net applicaties sneller en foutlozer draaien. IIS 7 werkt niet meer met een metabase om de configuratie op te slaan. Nu wordt alles in het applicationHost.config bestand geschreven in de vorm van XML.

Verder is IIS 7.0 is ook veiliger dan IIS 6.0 omdat er nu ook request filtering toegevoegd is. De adminstration tool is ook helemaal veranderd en vind ik duidelijk en overzichtelijk. Het is ook mogelijk geworden om de server remotely te beheren over HTTPS. Hiervoor moet de Web Management Service (WMSVC) geïnstalleerd zijn. Het is nu ook mogelijk om met een command line te werken in plaats van een interface. Hoewel dit laatste nog niet alle functies toelaat.

Om toch te werken met IIS 6 applicaties moet je de IIS compatibility feature toevoegen. IIS 7.0 heeft ook geen POP3 of SMTP services meer zoals in IIS 6. Dit gebeurt nu met de SMTP E-mail component van ASP.Net.

IIS 7.0 is beschikbaar voor Windows Vista en Windows Server 2008, maar niet in alle Vista versies zijn alle mogelijkheden geïntegreerd. Vooral op de Vista Starter, Home en Basic versies zijn maar enkele functies geïntegreerd. Deze zijn voldoende om websites te testen in ontwikkeling. Op de Business, Enterprise en Ultimate versies zitten dan alle functies.

IIS 6.0 en vorige versies waren ook minder veilig omdat alle modules standaard geïnstalleerd werden en bij versies eerder dan de 6.0 werden deze functies zelfs geactiveerd op voorhand, wat de veiligheid niet ten goede komt. Bij IIS 7.0 wordt gewerkt met een modulaire opbouw, wat wil zeggen dat je alle modules appart kunt installeren. Zo worden meer dan 40 apparte te installeren Features meegeleverd. Een ander sterk minpunt van vorige versies was dat er geen zelfgemaakte modules konden toegevoegd worden. Nu kunnen dmv c# of Visual Basic zelf modules geschreven worden, zoals in Apache al veel eerder mogelijk was.

Op de website van IIS (www.iis.net) kun je allerhande extensies en extra modules downloaden die niet enkel van Microsoft afkomstig zijn. Zo kun je je IIS verder tweaken en het onderste uit de kan halen.

IIS 7.0 kan verschillende roles hebben, nl.:Applicatie server: deze server biedt applicaties. Het kan XML-webservices, webapplicaties en • gedistribueerde applicaties leveren aan bv. ASP.Net of PHP met of zonder webserver functionaliteit. Webserver: deze biedt websites en applicaties aan op het internet• Microsoft Windows Sharepoint services server: deze laat toe om websites in teamverband te • ontwikkelen.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.

Page 10: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

10

2.2 Installatie2.2.1 Installatie op Windows Server 2008Bij het opstarten van Windows Server krijg je standaard de Server Manager. Deze is ook te vinden in de quick launch bar. Bij roles klik je op Add Role. Dan krijg je een lijst met roles die je kan toevoegen zoals DNS server, DHCP server, Fileserver, etc... We kiezen hier voor Web server(IIS).

Figuur 2.1 - Selecteren van server role

Vervolgens klik je tweemaal op next en dan kan je de gewenste features kiezen.

Figuur 2.2 - Selecteren van features

Daarna volgt de installatie en daarmee is IIS geinstalleerd op uw Windows Server.

Page 11: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

11

2.2.2 Installatie op Windows VistaIn Vista is de installatie verschillend van Windows Server. Hier installeer je IIS aan de hand van de volgende stappen:

ga naar Control panel• ga naar programs and features• In de zijbalk klik je op Turn Windows Features on or off• U krijgt nu een lijst met alle features. De volgende moeten aangevinkt worden:• Internet Information Services + FTP publishing service + Web Management Tools + World Wide Web • ServicesWindows .Net Framework 3.0• Microsoft Message Queue (MSMQ) Server• Windows Process activation Service• Klik op OK en de features worden geïnstalleerd•

2.3 Beheer met de command lineÉén van de grote innovaties van IIS 7.0 is dat het beheerd kan worden via de command-line. Hiervoor zijn er twee mogelijkheden. Standaard word de AppCmd.exe tool geïnstalleerd, maar je kan ook nog de Powershell installeren. Dit kan je downloaden of gewoon toevoegen bij de features. Het beheer via een command-line werd al lange tijd gebruikt in Unix omgevingen en ook om Apache te beheren op Linux. Dit was altijd al een tekortkoming van IIS, maar is bij deze toegevoegd. Je kan de Powershell opstarten door in command prompt powershell in te geven of gewoon bij het start menu.

Figuur 2.3 - Powershell

Het gebruik van de command line vraagt wel enige training, want meestal zijn de commando’s nogal uitgebreid en ingewikkeld. De powershell maakt gebruik van zogenaamd Cmdlets. Dit zijn eenvoudige, ingebouwde commando’s. De Appcmd of Powershell laten niet alle functionaliteiten toe die mogelijk zijn met IIS. Op andere platformen is dit juist omgekeerd. Om een lijst te krijgen van alle mogelijke Cmdlets typ het volgende

Help get-variable

De belangrijkste commando’s om IIS te starten, stoppen of te resetten zijn

Iisreset /startIisreset /stopIisreset /restart

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.

Page 12: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

12

IIS 7.0 maakt het makkelijk om een remote servers te beheren. Ook via de command-line. Om bv. IIS services op een andere computer te beheren doe je :

Iisreset computernaam command

2.4 Beheer van IIS configuratieIIS laat toe om configuraties op globaal niveau en op website niveau uit te voeren. Globale settings kunnen ook overschreven worden en worden standaard overgeërft op lager gelegen niveau’s. De hoogste rang is op server niveau en daaronder is het website niveau en dan de virtuele directories, enz...

Er kan voor elke configuratie sectie ingesteld worden of deze al dan niet overschreven mag worden. Dit gebeurt in het bestand applicationHost.config. Hier volgt een voorbeeld

<sectionGroup name=”system.Webserver”> <section name=”asp” overrideModeDefault = “Deny”> <section name=”Caching” overrideModeDefault= “Allow”></sectionGroup>

IIS 7.0 laat toe gemakkelijk een web server farm op te zetten met meerder servers. In de IIS interface is er een knop Shared configuration. In het actions pane kies je export configuration op serverniveau op de server waar je configuratie is op ingesteld. Bij het exporteren kan je een paswoord kiezen voor de encryptie sleutel die gebruikt zal worden om de configuratie te versleutelen. Op de andere servers in je web server farm kies je ook Shared configuration en dan voor enable Shared configuration. Daarna moet je het pad ingeven van de server. Dit zal door een UNC (Universal Naming Convention) pad gebeuren. Dit ziet er bijvoorbeeld zo uit:

//Server2/Config

2.5 IIS InterfaceDe interface is veel verbeterd bij IIS 6.0 en is één van de grote sterktes geworden van IIS. De interface is duidelijk en overzichtelijk en ik kon er dan ook vlug mee overweg.

Figuur 2.4 -IIS interface

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.

Page 13: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

13

Gebruikers die enige kennis van webservers hebben zullen snel vertrouwd zijn met de interface. Het wordt opgesplits in drie grote onderdelen. Zoals ik al zei is ASP.Net sterk geïntegreerd en heeft dan ook zijn eigen onderdeel. Daarnaast zijn er nog het IIS en Delegation onderdeel. We zullen beginnen met de iconen van ASP.net uit te leggen.

ASP.Net.Net compilationEen ASP.Net developer kan kiezen tussen de applicatie in zijn code vorm op te server te plaatsen of te precompilen voordien. Dit laatste is de beste keuze omdat het ten eerste sneller is omdat de webserver deze niet hoeft te compilen en ook veiliger omdat de brondcode niet meer ingekeken kan worden, moest iemand toegang krijgen tot de webserver. Bij de .Net compilation configuratie kan de adminstrator de output van zijn ASP.Net applicatie regelen. Zoals Debugging die op false moet staan, tenzij in het ontwikkel stadium. Als dit aan staat vertraagt deze de server, omdat hij iedere keer debugged bij het uitvoeren van de applicatie.

.Net globalizationDit icoontje laat je toe om de talen voor de .Net applicatie te configureren. Als je de Culture op Invariant Language zet dan speelt IIS de taal van de bezoeker door aan de ASP.Net applicatie. Globalization bepaalt ook hoe data wordt geëncodeerd voor tranmissie. UTF-8 en UTF-16 zijn de belangrijkste.

.Net ProfileDeze laat toe om setting per gebruiker te definiëren.

.Net rolesEen role is een rol die een gebruiker uitvoert. Dit kan bv. een administrator zijn die de webserver beheert of een developer die websites test op de server.

.Net Trust levelsDit heeft verschillende levels van vertrouwen. Bij full krijgt een applicatie volledige controle over de functies en de bestanden. Deze gebruik je best niet.

.Net usersDit is een lijst van gebruiker die gebruikt kan worden om authentificatie, authorisatie en andere functies uit te voeren die te maken hebben met beveiliging.

Application SettingsDevelopers kunnen code maken die samenwerkt met de application settings die de administrator aanmaakt.

Connection stringsASP.Net en PHP webdevelopers kennen dit ongetwijfeld. Dit is een manier om een verbinding met een databank tot stand te laten komen. De connection strings aangemaakt in de ASP.Net applicaties zijn hier zichtbaar en kunnen aangepast worden door de administrator.

Pages en ControlsHier kan je de masterpage, stylesheet en theme instellen die de ASP.Net applicatie moet gebruiken. Deze is ook aan te passen in Visual Studio. Andere zaken zoals de gebruikte namespaces de gebruikte states en de gebruikte namespaces zijn hier ook zichtbaar.

ProvidersEen provider moet een database aan een applicatie koppelen. De connectie met deze databank is niet bedoeld om data in op te slaan , maar deze bevat info over gebruikers, roles en profiles voor uw applicatie.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.Seguis, Steve, Microsoft Windows Server 2008 administration, Mc Graw Hill, 485blz.

Page 14: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

14

Session stateZoals u wel weet is HTTP stateless en ASP.Net en PHP wel, wat wil zeggen dat wanneer een gebruiker een request doet dat er geen statusinformatie wordt bijgehouden. Zonder session state zou het maken van webwinkels bijvoorbeeld onmogelijk zijn. Dit vraagt natuurlijk wat resources van de webserver en als je wenst alleen statische html pagina’s te hosting wordt deze optie best gedisabled. Er zijn verschillende manieren om session state bij te houden. Dit kan dmv cookies, databases of door werkgeheugen. Het gebruik van database is niet zo snel en er wordt aangeraden om het werkgeheugen te gebruiken omdat deze sneller toegankelijk is en hiervoor niet iedere keer de database geopend moet worden. Het gebruik van cookies is niet meteen de beste optie, maar belast wel de server minder omdat dit client-side gebeurt. Daarvoor moet de client dus wel cookies kunnen accepteren.

SMTP E-mailDit wordt gebruikt om de email te specifiëren en waar emails afgeleverd moeten worden waneer er een email wordt verzonden van een web applicatie. Je kan hier kiezen tussen 3 opties voor het afleveren van email:

Externe mailserver• Lokale mailserver• En een folder op de server•

IISASPASP is eigenlijk de voorloper van ASP.Net, hoewel deze 2 weinig gelijkenissen hebben. Deze mogen dus niet met de instellingen van ASP.Net verward worden.Hier worden dus de instellingen voor ASP applicaties beheerd.

AuthentificationHier kan je kiezen welke methode van authentificatie gebruikt wordt. Standaard is enkel Anonymous Authentification enabled. Hier wordt geen authentificatie van de clients gedaan. De drie meest gebruikte methoden zijn basic, digest en Windows Authentificatie. Bij basic worden login en paswoord als cleartext verzonden en kan dus onderschept worden en om die reden dus niet veilig. Digest maakt gebruik van de MD5 cryptografie methode en is dus heel veilig. Ook de Windows Authentificatie is veilig.

Authorization RulesDit bepaalt wie toegang heeft tot welke content op de webserver. Je kan dit per niveau doen. Ook op folder niveau om bv. enkel toegang te verlenen tot een folder aan 1 bepaalde gebruiker.

CGICommon Gateway Interface is één van de oudste methoden om applicaties op een webserver te draaien. Deze wordt ook op Apache ondersteund.

Default documentIn het IIS menu kan je kiezen voor Default Document. Door het gebruik van Default Document hoeft een client niet het volledig pad ingeven en is bv. www.test.com/folder/ genoeg. IIS zal dan kijken in de lijst van Default documents en zal de eerste filename die hij vindt uit de lijst zenden naar de client. Dit doe je best op website niveau. Ook beperk je best het aantal documenten tot een minimum omdat IIS anders telkens de volledige lijst moet aflopen en dit de server onnodig belast.

Default DocumentDoor het gebruik van Default Document hoeft een client niet het volledig pad ingeven en is bv. www.test.com/folder/ genoeg. De server zal dan kijken of er in deze folder één van de opgegeven Default Documents zit en zal bij het vinden van een document dit terugsturen naar de client. Deze lijst moet zo kort mogelijk gehouden worden en best op niveau van elke website gedaan worden.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.Seguis, Steve, Microsoft Windows Server 2008 administration, Mc Graw Hill, 485blz.

Page 15: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

15

Directory BrowsingDit heeft de client de mogelijkheid om te browsen in een directory wanneer hij een folder ingeeft als link. Dit wordt standaard gedisabled in IIS omdat dit net zoals Default Document een kwaadwillige meer info kan verschaffen over de opstelling van de webserver. Je kan hier instellen welke informatie de gebruiker mag zien.

Error pagesWanneer er zich een fout voordoet op de server kan de server een aangepaste error pagina terugsturen, aangepast aan de foutcode.

Failed Request Tracing RulesDit wordt gebruikt om mislukte requests aan de webserver te loggen. Ik ga hier later verder op in.

Handler MappingsDeze instellingen vertellen de webserver hoe hij een request moet afhandelen. Dit gebeurt door een extensie te koppelen aan een applicatie. Je kan dus ook bepaalde extensies disablen zodat een client die niet kan uitvoeren. Hier wordt dus ook de PHP extensie geïnstalleerd.

ISAPI and CGI restrictionsHier stel je in welke ISAPI en CGI extensies mogen uitgevoerd worden op de webserver. Dit zijn oude technologiën en maken de webserver onveiliger. Daarom worden deze standaard gedisabled.

ISAPI FiltersEr bestaan twee vormen van ISAPI applicaties: ISAPI extensies en ISAPI filters. Een ISAPI extensies verwerkt requests en een ISAPI filter filtert content.

MIME typesMIME staat voor Multipurpose Internet Mail Extension. Het is een standaard die bepaalt hoe een bepaalde extensie verwerkt wordt door een webserver. De officiële lijsten van MIME types zijn te raadplegen in RFC’s. MIME wordt in verschillende applicaties gebruikt. Zo kan een browser op een client bv. weten met welk programma hij een bestand moet open doen. De voornaamste zijn al ingegeven in IIS en normaal gezien hoef je deze niet te wijzigen.

ModulesIIS maakt gebruik van .NET (managed) en native code. Native code is al gecompileerd, maar managed code moet nog door de CLR ( Common Language Runtime) gecompileerd worden. IIS maakt gebruikt van deze modules om taken uit te voeren.

Server CertificatesBij bijvoorbeeld webwinkels worden dikwijls certificaten gebruikt om aan te tonen dat een de website betrouwbaar is voor de gebruiker. In combinatie met SSL is een website heel betrouwbaar. Zo’n certificaat moet aangevraagd worden bij een CA (Certificate Authority). Het verkegen certificaat heeft een .pfx extensie en deze kan je dan importeren in IIS.

SSL SettingSSL is een methode om de verbinding tussen client en server te beveiligen dmv encryptie. Het maakt gebruik van het HTTPS protocol en werkt meestal met de poort 443. Deze instellingen kan je enkel op het website niveau doen en niet op webserver niveau.

Worker processesHier kan je zien welke processen er draaien op de webserver, hoeveel geheugen deze verbruiken, CPU gebruik. Je kan ook de huidige request zien van de webserver.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.Seguis, Steve, Microsoft Windows Server 2008 administration, Mc Graw Hill, 485blz.

Page 16: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

16

ManagementFeature DelegationHier kan je het gebruik van Features beheren. Bij het teveel toelaten van toegang tot Features kan je webserver onveilig maken.

2.6 Beheren van Websites en virtuele directoriesWebsites zijn toegangkelijk door hun IP of hun fully qualified domain names (FQDNs). FQDNs worden door DNS servers bijgehouden zodat clients geen ip’s hoeven te onthouden om een website te bereiken. Elke client krijgt een IP adres, maar hoe is het nu mogelijk om meerdere websites op een enkele server te hosten.

Dit kan door:het gebruik van meerdere IP adressen• het gebruik van verschillende poort nummers• het gebruik van host header names•

Deze laatste kunnen de websites dezelfde poortnummers gebruiken en hetzelfde IP adres. Dit is de beste manier omdat IP adressen schaars geworden zijn. Daarom ook dat IPv6 geïntroduceert moet worden. Het gebruik van poortnummers kan snel ingewikkeld worden bij het hosten van tientallen websites en moeilijk te beheren omdat de firewall al deze poorten moet openen.

2.6.1 Toevoegen en instellen van een nieuwe websiteKlik rechts op het niveau ‘sites’ en kies add website. Daarna krijg je een dialoogvenster waar je het fysische pad moet opgeven van de bestanden, het protocol (http of https), het IP en de poort die standaard op 80 hoort te staan en als laatste de host name.

Figuur 2.5 - Toevoegen van website

Als je werkt met host header names laat je IP address op ‘all unassigned’ staan en de poort op 80 en vul je de host header naam in. Je kan ook een Application Pool selecteren. Een application pool heeft zijn eigen worker process. Als een applicatie ervoor zorgt dat een application pool crasht zullen enkel de applicaties binnen deze pool niet toegankelijk worden en deze binnen een ander application pool zullen ongemoeid blijven. Er kan per Application pool een specifiek aantal RAM toegewezen worden of een percentage van de CPU.

Als je een secure website wil toevoegen kies je bij type voor HTTPS i.p.v. HTTP. Daarna kun je een certificaat kiezen. Deze moet je vooraf voor handen hebben. De poort zal hier standaard 443 zijn. Al deze instellingen vallen onder Basic settings.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.Seguis, Steve, Microsoft Windows Server 2008 administration, Mc Graw Hill, 485blz.Eric Maiwald, netwerk beveiliging voor professionials, academic service, 2001, 390 blz.

Page 17: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

17

Bij Advanced settings van de gekozen website, die je kan vinden in het action pane kun je het aantal connecties limiteren. Normaal gezien zou je willen dat zoveel mogelijk gebruikers de website kunnen bereiken, maar als er teveel connecties zijn kan het zijn dat niemand de website nog kan bereiken. Je kan dit aantal dus limiteren door het aantal connecties te limiteren, de bandbreedte en de connection time-out die standaard op 120 seconden staat. Dit is de tijd die een gebruiker ‘idle’ mag zijn voor hij niet meer verbonden is met de server. Deze instellingen zijn ook een goeie bewapening tegen de gevreesde SYN-floods waarbij een hacker de server overstelpt met aanvragen voor een connectie te starten met de server, maar daarop geen antwoord meer heeft. Een SYN packet wordt verzonden door een client als deze een TCP connectie wil initiëren. Deze connecties blijven open staan bij een SYN flood. Bij een te groot aantal van deze connecties en het te lang openstaan van die connecties zal de server crashen omdat de server voor iedere connectie resources reserveerd.

Nog een belangrijke instelling die je webserver aanzienlijk kan versnellen is het gebruik van http keep-alive. Zoals ik al had uitgelegd is het bij http 1.1 mogelijk om TCP connecties open te houden voor een bepaalde tijd. Dit neemt een zware belasting van de server, omdat er niet voor iedere aanvraag een nieuwe TCP connectie moet gemaakt worden. Dit kan je instellen bij het onderdeel HTTP response Headers en daar voor Set common headers te kiezen. In hezelfde dialoogvenster kan je ook de content expiration instellen. De meeste browsers slaan documenten die de gebruiker bekijkt op in cache zodat deze de volgende keer niet meer van de web server gehaald moeten worden. Met expire web content kan je instellen wanneer deze vervalt.

Er zijn drie keuzes:onmiddellijk• expire after: hier kan je een tijdslimiet instellen• expire on: hier kan je een datum en tijdstip instellen•

Om een website lokaal te testen zonder gebruik te maken van een DNS moet je de servernaam aan een IP koppelen in het bestand hosts die zich in de map c:/windows/system32/drivers/etc/ bevindt (er vanuit gaande dat c:/ uw opstartschijf is). Dit gebeurd op deze manier:

127.0.0.1 localhost www.website1.intr

Hier wordt de FQDN aan het loopback adres gekoppeld zodat deze lokaal toegankelijk is.

2.6.2 Fysical en virtual directoriesHet verschil tussen fysische en virtuele directories is dat een fysische directory zich in de hoofd directory bevindt en een virtual directory kan zich buiten de hoofd directory bevinden.Bv. Als je een virtuele directory aanmaakt die zich op D:/docs met als alias documenten en de hoofdmap zich bevindt op c:/Inetpub/wwwroot en de URL www.website.com is dan is de virtuele map te bereiken via www.website.com/documenten/. Zo is het ook mogelijk om d.m.v. de UNC, bestanden op een andere server aan te spreken of bv. een externe database die op een database server staat.

Om een virtuele directory aan te maken klik je gewoon rechts op de website en add virtual directory. Dan krijg je een dialoogvenster waar je eerst en vooral een alias moet ingeven en daarna het pad.

Figuur 2.6 - Toevoegen van Virtual Directory

Page 18: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

18

2.7 loggingEen belangrijk onderdeel van webhosting is het loggen. Dit is de activiteit opslaan om later te bekijken waar er fouten zitten en hoe deze opgelost kunnen worden. Door het loggen kan je bv. zien welke bestanden het meest gedownload worden zodat kan bepaald worden welke bestanden best gecached zouden worden. De voornaamste zaken die je kan loggen zijn CPU, RAM en harde schijf gebruik. Verder kan je ook access logs maken om te zien wie allemaal verbonden is met de webserver. Voor je begint met loggen moet je eerst bepalen wat je wil loggen en ook filteren wat overbodige informatie is, zo voorkom je dat je een overvloed aan gegevens hebt waar je toch niet meer wijs uit raakt.

IIS slaat fouten op in 3 locaties: IIS access logs, Windows event logs en de failed request trace logs. Om de windows event logs te bekijken ga in je in administrative tools naar event viewer. Om fouten van IIS te zien expand je custom view en daarna ook server roles. Dan zie je web server met alle fouten en informatie van IIS. Windows event logs worden standaard in de map %root%/Inetpub/Logs/Logfiles opgeslagen als een ASCII of UTF-8 bestand. Deze kan je dus openen in notepad of een andere textverwerker en zo kan je zoeken achter specifieke fouten zoals de meest voorkomende 404 fouten. Deze fout duidt aan dat een bepaald bestand niet gevonden is op een bepaalde locatie. In bijlage 1 vindt u een lijst van alle HTTP status codes. Je kan ook log files remote bekijken van andere servers door rechts te klikken op Event Viewer is het linkse kader en connect to another computer te kiezen en dan de gewenste computer te kiezen.

Om Failed request trace te enablen ga je in IIS naar Failed Request Tracing Rules en kies je daar in het rechtse kader voor Edit Site Tracing. Kies dan in welke folder uw logs bewaard moeten worden en hoeveel trace files er maximum aangemaakt mogen worden. Kies ook voor enable en dan klikt u op OK. Je kan ook Trace rules toevoegen door rechts op Add te klikken. Daar kan je kiezen voor welke content u een Trace rule wilt aanmaken. Dit kan voor alle content, maar ook bv. enkel voor ASP.Net bestanden. Je kan dus ook extensies toevoegen zoals .php. Op het volgende dialoogvenster kan je kiezen welke error codes er voor deze content gebruikt moet worden. Dit schrijf je best ergens op en gebruik best voor iedere website dezelfde error codes. Niet verplichte instellingen zijn Time taken en Event severity. Met time taken wordt de tijd bedoelt die verstrijkt vanaf de aanvraag. Na die tijd wordt dit event gelogt. Met Event severity wordt de ernst van de fout bedoeld. De mogelijkheden zijn Error, Critical Error, Warning.

Figuur 2.7 - Enablen van Failed Requests tracing

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.

Page 19: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

19

Figuur 2.8 - Pad bepalen voor logs.

De derde en laatste vorm van logging is Access logging. Wanneer dit geactiveerd is, wordt telkens een client een bestand opvraagt, een entry in het log weggeschreven. Om Logging te enablen kies je ofwel op server of op site niveau voor logging in IIS en daar kies je in het rechter kader voor enable.

Figuur 2.9 - Access logging

Daar kan je kiezen waar deze opgeslagen worden en in welk formaat. Ook kan je kiezen wanneer er een nieuwe log aangemaakt moet worden. Deze functie is belangrijk als je te maken hebt met zwaar bezochte websites. Dan helpt deze functie om je logs te ordenen. Door middel van Access logging kan je onder andere zien wanneer websites het drukst bezocht worden, door welke browsers en platformen, veel opgevraagde bestanden en welke mensen je website bezoeken. Een Access log ziet er als volgt uit:

#Software: Microsoft Internet Information Services 7.0#Version 1.0#Date: 2008-02-21 21:08:29#Fields: date time s-ip cs-method cs-uri-stem cs-uri-query s-port cs-username c-ip cs(user-Agent) sc-status sc-substatus sc-win32-status time-taken2008-02-21 21:08:29 ::1 GET /index.html – 80 - : : 1 Mozilla/4.0+(compatible;+MSI+7.0;+Windows+NT+6.0;+SLCC2;+.NET+CLR+2.0.50727;+.NET+CLR+3.0.04506) 200 0 0 828

2.8 monitoringMonitoring is een andere vorm van uw systeemperformantie te bekijken. Een reden om een webserver te monitoren is, is het optreden van performatieproblemen. Door middel van monitoring kan je het probleem opsporen en oplossen. In vroegere versies van windows server waren dit allemaal aparte programmatjes, maar die zijn nu allemaal geïntegreerd in de Server Manager en deze is te vinden bij Administrative tools en heet Reliability and Performance Monitor. Op het hoofdscherm van deze tool kan je 4 onderdelen monitoren. Voor ieder onderdeel kan je alles met een grafiek volgen.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.

Page 20: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

20

Figuur 2.10 - Reliability and Performance Monitor

CPU usage:• Als je op de grafiek klikt krijg je daaronder meer info over de processen die momenteel in gebruik zijn en hoeveel percent van de capaciteit van de CPU deze gebruiken.Disk I/O:• Hier kan je volgen hoeveel data er gelezen of geschreven wordt. Ook kan je een lijst zien van de bestanden die op dit moment gelezen worden.Network usage:• Dit geeft weer hoeveel bandbreedte van de netwerkkaart benut wordt, welke bestanden er op het moment verzonden worden, IP adress, de hoeveelheid data die verzonden wordt,...Memory usage:• Hier vind je een lijst van bestanden die op het moment draaien en de hoeveelheid RAM deze gebruiken.

Figuur 2.11 - Reliability and Performance Monitor

De Performance en Reliability monitor bestaat uit twee onderdelen. De performance monitor houdt een grafiek bij en data van de counter die je wenst te volgen. Je kan counters die je wenst te volgen appart toevoegen. De belangrijkste counter die je kan toevoegen voor een webserver zijn:

ASP.NETASP.NET ApplicationsASP.NET state serviceActive Server PagesHTTP Service, HTTP Service Request Queues, HTTP Service URL Groups

Page 21: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

21

Internet Information Services GlobalWeb ServiceWeb Service Cache

Als je een FTP hebt, kun je ook best de FTP services als counter toevoegen.

Figuur 2.12 - Performance Monitor

De reliability monitor houdt veranderingen van de server bij en volgt de stabiliteit van het systeem. De reliability wordt dmv een index weergegeven en deze is te volgen met een grafiek. Bij een plotse daling in de grafiek kan je het tijdstip selecteren en daarna zie je alle fouten die zich voorgedaan hebben op dat moment.

Figuur 2.13 - Reliability Monitor

Page 22: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

22

2.9 Optimaliseren van de webserverAls de CPU te zwaar belast wordt van een webserver is het beter dat je taken die intensieve processor kracht vragen op een aparte server plaatst zoals databases. Het zijn vooral client-side scripting talen die de webserver zwaar belasten zoals ASP.Net en PHP. Je kan ook een kopie maken van websites en die op een andere webserver plaatsen en gebruik maken van load balancing zodat de taken verdeeld worden over twee webservers.

De bandbreedte is de voornaamste vertraging van het webhosten en dus moet de keuze van verbinding goed overwogen worden. Één van de mogelijkheden om die bandbreedte beter te benutten, is het toepassen van compressie op het dataverkeer. Dit vind je in het IIS menu onder Compression. Dit werkt alleen bij HTTP1.1, maar zowat alle browsers ondersteunen dit. Compressie pas je beter niet toe op webservers die al een zware CPU belasting hebben omdat dit extra processorkracht vraagt om de data te comprimeren.

Het optimaliseren van een webserver begint eigenlijk al bij de website developer. Slecht geprogrammeerde websites kunnen de webserver vertragen of zelfs laten vastlopen. Een voorbeeld hiervan is het niet sluiten van een connectie met de databank of het debuggen die niet gedisabled is. Omdat het meestal andere personen zijn die deze websites maken, heb je geen zicht op de geschreven code en moet je dmv loggen controleren of er zich geen problemen voordoen op bepaalde websites.

2.10 BackupEr zijn twee soorten backup voor IIS: Configuratie backupContent backup

IIS maakt automatisch backups met de 10 laatste configuraties. Deze bevinden zich in %root%\Inetpub\History\. Je kan als beheerder ook backups nemen en deze worden standaard onder %root%\System32\Inetsrv\Backup geplaatst.

Je kan een IIS backup nemen dmv de command line. Je kan deze al dan niet een naam geven. Als je geen naam geeft dan krijgt die automatisch één. Dit doe je door volgend commando:

Appcmd add backupAppcmd backup /name:”backup1”

Om backups te verwijderen:

Appcmd delete backup /backup.name:”backup1”

Als je een vorige configuratie terug wil restoren gebeurt dit op een gelijkaardige manier.

Appcmd restore backup “Backup1” /stop:false

Dit zal alle instellingen van websites, application pools, applicaties en virtual directories terugzetten. Als je installatie van IIS corrupt is, zal dit niet verholpen worden door deze restore en zal je IIS moeten verwijderen en opnieuw installeren en daarna pas je instellingen restoren. Het laatste deel van het commando /stop:false is optioneel. Standaard wordt de server even gestopt bij het restoren. Je kan dit verhinderen door dit commando.

Om content te backuppen kopieer je best de websites en web.config bestanden op een aparte harde schijf. Dit moet handmatig gebeuren, tenzij je met Windows Server Backup werkt. Dit is bedoeld voor een algemene backup te maken van je harde schijf. Deze tool is te vinden in de Server Manager onder storage. Het backuppen zelf wijst zichzelf uit. Er is ook de mogelijkheid om incremental backups te maken. Een backup nemen doe je best op off peak uren, omdat dit de harde schijf nodig heeft en dus requests zal vertragen.

Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.

Page 23: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

23

2.11 Installatie pHpPhp is net zoals ASP.Net een server-side scripting taal, wat wil zeggen dat het uitvoeren van bewerkingen gebeurt op de server en niet bij de client. Deze worden dynamische websites genoemd. HTML is client-side en vereist minder sterke servers. PHP staat voor Hypertext Preprocessor. De syntax is gebaseerd op C en deels van Perl. PHP werkt nauw samen met HTML om pagina’s te genereren. Het grote voordeel van PHP is dat het op alle platformen ondersteund wordt tegenover ASP.Net die enkel op windows platformen werkt. Hoewel dit tegenwoordig niet meer volledig juist is omdat er op Linux ondertussen al ASP.Net gehost kan worden dmv van Mono. Naar mijn mening is deze module nog niet stabiel genoeg. Ik heb deze getest en het duurde enige tijd voor ik een ASP.Net applicatie kon draaien zonder fouten. Op het moment van schrijven waren er 20917850 domainnamen en 1223183 IP-adressen waar PHP Applicaties te vinden waren. De laatste statistics kan je volgen op www.php.net/usage.phpKortom PHP kan niet meer ontbreken op een webserver. De installatie voor IIS verloopt als volgt:

Eerst download je de Zip package van http://www.php.net/download.php Je kan ook gewoon de • installer downloaden. Dit vraagt minder tijd, maar je hebt minder controle over de installatie.Daarna unzip je de package en hernoem je de folder tot php.• Selecteer het php.ini-dist bestand en hernoem het naar php.ini. Kopieer dit bestand in c:/windows/• Ga in IIS naar Handler Mappings en kies dan voor Add script Map in het rechter kader.• Bij request path vul je *.php in. Bij Executable vul je het pad in naar je php folder + php5.isapi.dll • en als naam kies je PHP.Klik daarna op yes om deze extensie te enablen.•

Je kan testen of je installatie van PHP gelukt is door een phpinfo document aan te maken en deze in je website folder te plaatsen.

PHP info() document:

<?php phpInfo(); ?>

2.12 Installatie ftp serverEen ftp opzetten is belangrijk als je wil dat clients de mogelijkheid hebben om zelf hun eigen bestanden op de webserver te plaatsen. Standaard wordt geen FTP service meegeleverd met IIS 7.0 en moet je werken met IIS 6.0 hiervoor, wat wel vreemd is omdat de nieuwe FTP server voor IIS 7.0 wel al online gratis te downloaden is. Deze wordt volledig geïntegreerd in IIS 7.0. Om toch te werken met de standaard IIS 6.0 manager moet Internet Information Services 6.0 compatibility geïnstalleerd zijn.

In de IIS 7.0 Manager kan je links kiezen voor FTP sites en dan krijg je de melding om IIS 6.0 • Manager op te starten. Klik op ‘click here to launch’.Dan klik rechts op FTP sites en kies voor new > FTP site.• Geef een naam in voor uw FTP.• Daarna het IP die u wil gebruiken en de poort (standaard 21).• Daarna kan je nog het pad kiezen en welke rechten de gebruikers hebben.•

Als je rechtsklikt op de FTP site en properties kiest, kan je ook nog instellen wie rechten heeft om toegang te krijgen tot de FTP site

Als je met de nieuwe FTP7 wenst te werken, moet je die dus downloaden van de website. Als je de FTP publishing service geïnstalleerd hebt, moet je die eerst verwijderen bij role services. Daarna pas kunt u FTP7 installeren. Na de installatie komt er in IIS een nieuw onderdeel bij, nl. FTP. Om een nieuwe FTP site toe te voegen moet je rechtsklikken op websites en dan add FTP site kiezen. Daarna kiest u een folder en een naam voor uw FTP site en de rest wijst zichzelf uit.

Als je een FTP wilt koppelen aan een website is dit zeer eenvoudig gemaakt in FTP7. Je hoeft enkel te rechtsklikken op website niveau en Add FTP Publishing te kiezen zoals in Figuur 2.14.

Van der Put Ward,Webdesign met PHP 5, Easy Computing, 606blz.

Page 24: Eindwerk Apache vs IIS

Het op

zetten van een web

server - IIS 7 w

ebserver

24

Figuur 2.14 - Toevoegen van FTP

Daarna krijg je een dialoogvenster. Hier wordt de binding ingesteld en instellingen voor SFTP.

Figuur 2.15 - Binding en SSL instellingen voor FTP server

In het volgende dialoogvenster worden Authorisatie en Authentificatie ingesteld.

Figuur 2.16 - Authentificatie en Authorisatie van FTP server

Klik daarna op Finish en de FTP server start onmiddellijk.

Page 25: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

25

HOOfDStUk 3: apacHe3.1 InleidingVoor apache op toneel verscheen bestond er al een webserver die ontwikkeld was door het NSCA (National Center for Super Computing Applications) die de NSCA HTTPd server heette. De belangrijkste ontwikkelaar verliet dan de NSCA en daarna begon de webserver alleen maar achteruit te gaan. Op dat moment begonnen mensen hun pachtes van de webserver uit te wisselen en zo ontstond de Apache Group. Brian Behlendorf begon in 1995 met het verzamelen en samenbrengen van die stukken software (patches) die reeds gebruikt werden door de HTTPd Web Server. Zo ontstond “a Patchy Server”. Zo onstond een Open Source webserver die zijn ontwikkeling volledig te danken had aan ontwikkelaars die hun ontwikkelingen wilden delen onder elkaar.Dit is nog steeds de grootste sterkte en reden van het succes van Apache.

Apache is volledig aanpasbaar. Dit omdat het open source is. Iedereen die kennis heeft van C of Perl programmeren kan modules schrijven om Apache naar zijn hand te zetten. Een bestaan dan ook tientallen modules die je kan toevoegen. Je kan er enkele downloaden op de website van Apache zelf http://httpd.apache.org/modules/.

Ook werkt Apache perfect met scripting talen zoals PHP en Perl. Bovendien kan Apache nu grotendeels overweg met ASP.Net dmv van de mono module.

3.2 Installatie op linuxIk heb dus Apache geïnstalleerd op Linux SUSE 10 Server, maar dit is op alle Linux distributies zo goed als hetzelfde. Op Linux SUSE kan je ook gebruik maken van Yast om Apache te installeren. Standaard wordt een Apache versie meegeleverd in de vorm van een RPM(Red Hat Package Management) bestand. Dit kan dus ook op de Red Hat linux distributie. Deze kan je gemakkelijk installeren d.m.v. de Yast installer. Hier volgt enige uitleg bij de installatie d.m.v. de bronbestanden. Daardoor krijg je ook veel meer controle over de installatie en kan je Apache aanpassen aan je eigen wensen en noden. Deze bronbestanden kan je downloaden via deze link:

http://httpd.apache.org/download.cgi

Hier kan je verschillende versies en vormen kiezen.Het is mogelijk dat er ondertussen een nieuwe versie online is gekomen. Kies voor deze keuze:

Unix Source : httpd-2.2.8.tar.gz

In de terminal navigeer je naar de folder waar deze tar.gz file opgeslagen is en geef je volgende commando in:

Tar xvf http-2.2.8.tar.gz

Apache krijgt standaard een script die configure heet meegeleverd die je toelaat om de installatie van installatie van de binaries te kiezen.

./configure - - prefix=/etc/Apache2/

Dit command zegt aan Apache om de binaries in de folder etc/Apache te installeren.Standaard hoef je geen andere opties mee te geven, maar je kan dit achteraf nog doen door ook weer het ./configure commando te gebruiken. Als je achterna nog aanpassingen wil doen dan doe je dit zo:

./configure.status –optie

Na het configureren van je Apache installatie is het tijd om te compileren. Dit doe je gewoon door het make commando en installeren doe je door het make install commando. Daarna worden alle bestanden aangemaakt in de door u gekozen directory.

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 26: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

26

De mappenstructuur kan je zien in het httpd.conf bestand en zal er ongeveer zo uit zien:

# Filesystem layout:## /etc/apache2/# |-- charset.conv . . . . . . . . . . . . for mod_auth_ldap# |-- conf.d/# | |-- apache2-manual.conf . . . . . . . conf that comes with apache2-doc# | |-- mod_php4.conf . . . . . . . . . . (example) conf that comes with apache2-mod_php4# | `-- ... . . . . . . . . . . . . . . . other configuration added by packages# |-- default-server.conf# |-- errors.conf# |-- httpd.conf . . . . . . . . . . . . . top level configuration file# |-- listen.conf# |-- magic# |-- mime.types -> ../mime.types# |-- mod_autoindex-defaults.conf# |-- mod_info.conf# |-- mod_log_config.conf# |-- mod_mime-defaults.conf# |-- mod_perl-startup.pl# |-- mod_status.conf# |-- mod_userdir.conf# |-- mod_usertrack.conf# |-- server-tuning.conf# |-- ssl-global.conf# |-- ssl.crl/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Revocation Lists (CRL)# |-- ssl.crt/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificates# |-- ssl.csr/ . . . . . . . . . . . . . . PEM-encoded X.509 Certificate Signing Requests# |-- ssl.key/ . . . . . . . . . . . . . . PEM-encoded RSA Private Keys# |-- ssl.prm/ . . . . . . . . . . . . . . public DSA Parameter Files# |-- sysconfig.d/ . . . . . . . . . . . . files that are created from /etc/sysconfig/apache2# | |-- global.conf# | |-- include.conf# | `-- loadmodule.conf# |-- uid.conf# `-- vhosts.d/ . . . . . . . . . . . . . . put your virtual host configuration (*.conf) here# |-- vhost-ssl.template# `-- vhost.template

korte beschrijving van elke directory:

Include Dit bevat alle include bestanden die enkel nodig zijn als je web applicaties gebruikt die samenwerken met Apache of als je software van derden wilt gebruiken samen met Apache

Lib Bevat alle Application Portable Run-time (APR) library bestanden. Deze zijn nodig op Apache te kunnen draaien.

Bin Bevat alle apache programma’s zoals apachectl en httpd.

Conf Bevat de configuratie bestanden van Apache

Htdocs Dit is de default document root van Apache. Dit is eigenlijk de folder waar je websites in komen te staan.

Icons Bevat de Apache icoontjes

Logs Hier komen alle log files in te staan.

Cgi-bin Hier komen alle cgi scripts te staan. Deze bevat standaard 2 bestanden nl. Printenv en test-cgi. Deze kunnen gebruikt worden om te testen of cgi scripts wel werken. Deze verwijder je best als je je webserver gaat gebruiken.

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 27: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

27

3.3 configuratie van apache3.3.1 algemeen3.3.1.2 Manueel Om apache te configureren is er eigenlijk één hoofdbestand waarin alle instellingen gebeuren nl. Httpd.conf. Daarin vind je commentaar en directives. Apache bestaat uit ongeveer 200 verschillende directives. Alles waar een # voor staat is comment en wordt dus niet verwerkt. Directives zijn hoofdlettergevoelig en zijn eigenlijk instructies die de Apache zeggen wat te doen. Een lijst van alle directives in Apache is te vinden op http://httpd.apache.org/docs/1.3/mod/core.html#acceptfilter. Er zijn dus nog andere bestanden die httpd.conf oproept. De voornaamste configuratie gebeurt dan ook in externe bestanden.

Dit is een lijst met de belangrijkste bestanden van Apache:

• default-server.conf : basis web server configuratie.• listen.conf: De IP-adressen en TCP/IP poorten waar apache naar moet luisteren, standaard poort 80 op alle interfaces. Voor SSL kan poort 443 toegevoegd worden.• ssl-global.conf: Om de encrytie van SSL te configureren.• uid.conf: user en group id voor apache, standaard is dit wwwrun met group id www.

Andere bestanden:

• Errors.conf: bevat alle info voor Apache die hem vertelt hoe hij met fouten moet omgaan.• Mod_mime-defaults.conf: MIME staat voor Multipurpose Internet Mail Extensions. Dit wordt gebruikt om bestanden te identificeren. Het vertelt Apache hoe hij met bestanden moet omgaan en hoe hij ze moet interpreteren. • mod_log_config.conf: bevat info over het formaat van de logs• mod_status: laat toe om de server status te zien door deze url http://servernaam/server-status. Dit zet je best af voor de veiligheid van je webserver ofwel laat je het enkel lokaal toe. • Mod_usertrack: dit maakt een log aan van bezoekersactiviteit dmv cookies.• Server-tuning.conf: de naam zegt het zelf. Het dient om de server fijn te stellen.

Het httpd.conf bestand bestaat eigenlijk uit drie delen. De globale environment gedeelte die directives bevat die de configuratie voor de werking van de Apache server bevatten. Het Main server gedeelde die de configuratie van de hoofd website bevat en als laatste het virtual host gedeelte die de configuratie van de virtual hosts bevat.

Hieronder vind u een voorbeeld van een httpd.conf:############################################## /etc/apache2/httpd.conf ############################################

### Global Environment ####################################################### run under this user/group idInclude /etc/apache2/uid.conf

# - how many server processes to start (server pool regulation)# - usage of KeepAliveInclude /etc/apache2/server-tuning.conf

# ErrorLog: The location of the error log file.ErrorLog /var/log/apache2/error_log

# generated from APACHE_MODULES in /etc/sysconfig/apache2Include /etc/apache2/sysconfig.d/loadmodule.conf

# IP addresses / ports to listen onInclude /etc/apache2/listen.conf

# predefined logging formatsInclude /etc/apache2/mod_log_config.conf

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 28: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

28

# generated from global settings in /etc/sysconfig/apache2Include /etc/apache2/sysconfig.d/global.conf

# optional mod_status, mod_infoInclude /etc/apache2/mod_status.confInclude /etc/apache2/mod_info.conf

# optional cookie-based user trackingInclude /etc/apache2/mod_usertrack.conf

# configuration of server-generated directory listingsInclude /etc/apache2/mod_autoindex-defaults.conf

# associate MIME types with filename extensionsTypesConfig /etc/apache2/mime.typesDefaultType text/plainInclude /etc/apache2/mod_mime-defaults.conf

# set up (customizable) error responsesInclude /etc/apache2/errors.conf

# global (server-wide) SSL configuration, that is not specific to any virtual hostInclude /etc/apache2/ssl-global.conf

# forbid access to the entire filesystem by default<Directory /> Options Indexes AllowOverride None Order deny,allow Deny from all</Directory>

# use .htaccess files for overriding,AccessFileName .htaccess# and never show them<Files ~ “^\.ht”> Order allow,deny Deny from all</Files>

# List of resources to look for when the client requests a directoryDirectoryIndex index.html index.html.var

### Main server configuration #############################################

Include /etc/apache2/default-server.conf

Include /etc/apache2/sysconfig.d/include.conf

### Virtual server configuration ############################################

Include /etc/apache2/vhosts.d/*.conf

Omdat de httpd.conf al snel een lijvig document zou worden, wordt er verwezen naar externe config bestanden dmv de Include. Zeker als je veel virtual hosts wil toevoegen, zal het al snel onoverzichtelijk worden. Daarom kunnen we zoals in dit httpd.conf alle virtual hosts in de map vhosts.d plaatsen als een appart .conf bestand. Door middel van deze directive worden alle .conf bestanden in deze folder gelezen door Apache:

Include /etc/apache2/vhosts.d/*.conf

Standaard zitten er twee voorbeelden van virtual hosts in deze folder. Pas wanneer je deze hernoemt naar een bestadsnaam met een .conf extensie op het einde zal deze ingelezen worden.

Page 29: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

29

3.3.1.2 HTTP serverHet configureren van Apache is ook mogelijk in SUSE d.m.v de HTTP server applicatie die op Linux SUSE is geïnstalleerd. Deze kan je vinden in het Yast control center bij Network Sercvices. Deze leest de configuratie uit het httpd.conf bestand uit en laat toe deze te wijzigen d.m.v. een grafische interface. Om Apache starten moet je de http service eerst starten.

Figuur 3.1 - Yast HTTP server - enablen van Apache

Daaronder kun je de instellingen van het listen.conf bestand wijzigen. Daar kun je ingeven op welke poorten Apache moet luisteren voor requests. Op het tweede tabblad kun je de gewenste modules toevoegen en ook verwijderen.

Figuur 3.2 - HTTP server - toevoegen van modules

Het derde tabblad bevat de instellingen van de default server die zich in het default-server.conf bestand bevinden. Het vierde tabblad bevat de virtual hosts.

3.3.1.3 WebminWebmin is een adminstratie tool die een beetje gelijkenissen heeft van de Server Manager van Windows en kan gebruikt worden op zowat alle Linux distributies, maar is ook voor Mac en Windows verkrijgbaar. Het is zeer uitgebreid en je kan er bijna heel je computer mee beheren. Het lijkt ook sterk op de Yast beheerstool van SUSE. Webmin geeft aan Apache een grafische interface en kan u heel wat helpen als

Page 30: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

30

Apache wat ingewikkeld overkomt. Het is een browser gerelateerde beheerstool. Er bestaan nog andere grafische interfaces voor Apache zoals Commanche. Webmin wordt standaard meegeleverd met SUSE en kan geïnstalleerd worden door Yast. Je kan de laatste versie altijd afhalen van de website https://www.webmin.com/.Je kan toegang krijgen tot deze interface van Webmin door in je browser https://localhost:10000 in te geven. Vergeet niet dat de verbinding gebeurt via https ipv http. Het is ook een gemakkelijke tool om Apache te leren. U kan wijzigingen aanbrengen in Webmin en zien welk effect deze hebben op de config bestanden van Apache.

Figuur 3.3 - Webmin administratie tool

Figuur 3.4 - Webmin Apache configuratie

Page 31: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

31

3.3.2 configureren van globale server instellingenHet bestand default-server.conf bevat de basis instellingen voor iedere virtual host tenzij die overschreven worden. Het aanmaken van een virtual host gebeurt op een gelijkaardige manier. Om dan een virutal host te maken moeten deze instellingen tussen de <virtualhost> </virtualhost> containers staan.Na het configureren van dit bestand kunt u al een website hosten. Hier volgt een voorbeeld:

#######################################”# default-server.conf#######################################DocumentRoot “/srv/www/htdocs”

<Directory “/srv/www/htdocs”>Options NoneAllowOverride NoneOrder allow,deny Allow from all</Directory>

Alias /icons/ “/usr/share/apache2/icons/”<Directory “/usr/share/apache2/icons”> Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all</Directory>

ScriptAlias /cgi-bin/ “/srv/www/cgi-bin/”<Directory “/srv/www/cgi-bin”> AllowOverride None Options +ExecCGI -Includes Order allow,deny Allow from all</Directory>

Include /etc/apache2/conf.d/*.conf

Include /etc/apache2/conf.d/apache2-manual?confServerName linux-SUSE

ServerAdmin [email protected]

DirectivesHet include directive laat toe externe configuratie bestanden in te laden.

In dit geval zal de document root /srv/www/htdocs zijn. Dit is het pad naar de folder, waar de website bestanden zullen voorkomen. Door een bug in Apache mag op het einde geen slash toegevoegd worden. De directive ServerAdmin kan het emailadres bevatten van de beheerder. Dit adres wordt dan getoond aan gebruikers als er zich problemen voordoen.

Serverroot vertelt Apache waar de folders conf en logs zich bevinden.

Om een Default document in te geven, maak je gebruik van de DirectoryIndex directive. Het is het beste dat je deze lijst zo kort mogelijk houdt zoals ik al zei bij IIS. Daarom doe je dit best per virtual host en niet enkel een gehele lijst ingeven in default-server.conf.

DirectoryIndex file1.html file2.html

Dus als de homepage van een website index.html is dan zal deze directive er zo uitzien:

DirectoryIndex index.html

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 32: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

32

De <Directory> container bevat directives die van toepassing zijn op deze directory en zijn subdirectories. Dit voorbeeld zal enkel connecties van localhost toelaten.

<Directory /srv/www/htdocs/website1>Allow from Localhost</Directory>

De container <files> bevat directives die op van toepassing zijn op elk bestand met deze naam. Het maakt niet uit in welke directory deze zich bevindt. Dit voorbeeld verbiedt de toegang tot het bestand topsecret.html. Als je bv. De toegang tot een bestand enkel één bepaalde folder wil verbieden moet je deze container in een <Directory> container insluiten.

<Files .htaccess>Order Allow, denyDeny from all</Files>

Deze directive verbiedt de toegang tot .htaccess bestanden. Dit zijn bestanden die de instellingen van het config bestand overschrijven. Dit wordt veel gebruikt door webhosting bedrijven om zo een webmaster meer controle te geven over de instellingen. Het nadeel hiervan is dat zulke bestanden telkens moeten geparsed worden bij iedere toegang tot de server in tegenstelling tot het config bestand en dus websites zullen vertragen. Een voordeel hiervan is dat de je de configuratie kunt aanpassen zonder dat de server herstart moet worden. Door middel van het AllowOverride directive kan je het overschrijven van instellingen limiteren. De mogelijke overrides zijn:AuthConfig, FileInfo, Indexes, Limit, Options, All, None

De errorlog directive vertelt Apache waar de logs opgeslagen moeten worden. Standaard worden logs opgeslagen in de map van +ServerRoot%/logs/error_log.

De scriptAlias directive wordt gebruikt als je CGI scripts wenst te gebruiken. Hier moet je het pad opgeven naar de CGI scripts folder.

Na het instellen van uw Default-server kunt u de website benaderen door in de browser ofwel gewoon http://localhost in te geven ofwel door http://servernaam/. Voor u de website wilt testen, test u best eerst of de configuratie klopt en daarna herstart u Apache.

Om de configuratie te testen op fouten gebruik je volgend commando:

Apache2ctl configtest

Om apache te starten of stoppen of herstarten gebruik je in de terminal:

Apache2ctl start Apache2ctl stop Apache2ctl restart

3.3.3 toevoegen en instellen van websitesHet hosten van meerdere websites heet virtual hosting in Apache. Een virtual host sluiten we in tussen de <virtual host> container. Een virtual host container mag nooit ingesloten worden binnen een andere container. Een virtual host bestand is ongeveer hetzelfde als de main server configuration. De virtual hosts kunnen we dus in het httpd.conf bestand toevoegen, maar zoals ik al zei is het beter om deze in de map vhost.d toe te voegen als .conf bestand.

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 33: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

33

Er zijn vier manieren om meerdere websites aan te maken:

• Name-based: Zo kun je meerder hostnames aan 1 systeem koppelen. Dit is net zoals in IIS de beste manier en dus ook de meest gebruikte. Je hebt slecht 1 IP nodig voor alle websites. Deze methode vereist wel browsers die HTTP 1.1 ondersteunen.• IP-based: hier moet je voor iedere virtual host een ander IP ingeven. Deze methode wordt nog veel gebruikt omdat nog steeds niet alle browsers HTTP 1.1 ondersteunen. Hierbij wordt bij iedere <virtualhost> directive een IP ingesloten.• Port-based: hier wordt voor iedere website een aparte poort toegewezen. Dit laat dus toe meerdere websites op hetzelfde IP te draaien, maar wordt al snel te ingewikkeld bij het hosten van veel websites. Voor iedere website wordt dus een aparte poort toegewezen die apart in het listen.conf bestand moet toegevoegd worden met met Listen directive.• Meerdere Main servers: hiervoor maak je gebruik van meerdere instanties van Apache. Dit is alleen handig als je voor iedere website een apart configuratiebestand wil bv. bij zwaar bezochte websites. Deze methode vraagt veel resources van de webserver en is dus niet aangewezen.

Het volgende voorbeeld is name-based:

########################################## VirtualHost #########################################NameVirtualHost *

<VirtualHost *> ServerAdmin [email protected] ServerName www.website1.be DocumentRoot /website1

ErrorLog /websites/logsLogLevel emerge

Include /etc/apache2/conf.d/mod_php4.conf

ScriptAlias /cgi-bin/ “/srv/www/vhosts/test.be/cgi-bin/”

<Directory “/websites/”> Options Indexes FollowSymLinks AllowOverride None Order allow,deny Allow from all </Directory></VirtualHost>

<VirtualHost *> ServerAdmin [email protected] www.website2.be DocumentRoot /website2</VirtualHost>

Om deze virtual hosts lokaal te kunnen testen moet de Servernaam ook nog gekoppeld worden aan een IP adres. Dit heet binding. Het hosts bestand bevindt zich onder de map /etc/. Ik heb het loopback IP adres 127.0.0.1 gebruikt in dit voorbeeld en ook een intern netwerk adres en een extern IP adres. Deze IP’s worden gekoppeld aan de Fully Qualified Domain Name die dezelfde moet zijn als de Servername in de virtualhost. Daarna kan je ook nog aliassen definiëren.

127.0.0.1 localhost www.website1.intr www.website2.intr 192.168.2.6 www.website1.intr www.website2.intr 134.224.3.58 www.website1.intr www.website2.intr

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 34: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

34

DirectivesBij name-based virtual hosts is het NameVirtualHost directive heel belangrijk. Dit vertelt Apache dat de aanvragen op dit IP opgesplitst worden dmv virtualhost naam.

Binnen de <virtualhost> container kan het IP adres ingeven en een poort van of de naam van de website. Als er geen poort gespecifiëerd is, wordt de standaard poort 80 genomen. De rest is zowat hetzelfde als de main server configuration.

ServerNameDit is de host name van de server. Hier geef je best een Fully Qualified Domain Name in en niet gewoon een naam.

DefaultTypeDaarin kunt u een default MIME type ingeven. Als de webserver een request krijgt van een client en deze een onbekend bestand aanvraagt, gebruikt hij het standaard ingestelde bestandstype bv. DefaultType text/html

ErrorDocumentWanneer een client een request doet en er treedt een fout op, dan krijgt deze een foutmelding. Je kan ervoor zorgen dat de gebruiker een aangepaste foutmelding krijgt die je zelf kan aanmaken. In volgend voorbeeld is error_code de HTTP status code. Dit is het foutnummer van de fout die optreedt zoals een 404: Not found. De filename kan het pad zijn naar een pagina op de server of een url naar een externe pagina.

ErrorDocument error_code filename

OptionsDeze directive zegt welke features er beschikbaar zijn voor deze directoryEen lijst van de voornaamste options:

None geen optiesAll AllemaalExecCGI het uitvoeren van CGI scripts is toegelatenIncludes Server-side includes zijn toegelatenIndexes Als een client navigeert naar een directory maar er is geen DirectoryIndex gespecifiëerd dan kan de gebruiker de inhoud van deze folder zien.

3.4 monitoring apacheDoor de mod_status module kan een beheerder de status van de webserver raadplegen.Deze laat een HTML pagina genereren met volgende info:

Apache versie en aanmaak • De tijd op de webserver• Wanneer de webserver herstart is• De uptime van de webserver• Het aantal request en workers er bezig zijn• Het aantal verzonden bytes• CPU usage•

Standaard is deze module niet mee-gecompileerd. Als je deze nog wenst toe te voegen moet u hercompileren met de --enable-status optie bij het configure script.

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.

Page 35: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

35

Deze module kan je dan op deze manier toevoegen aan de virtual hosts:

<Location /server-status> SetHandler server-status Order deny,allow Deny from all Allow from localhost </Location>

Als je domain name bv. website2.intr is, kan je de server-status bereiken met http://www.website2.intr/server-status. Door voor de <Location> container ExtendedStatus on bij te plaatsen, krijgt u nog meer informatie over de webserver.

Figuur 3.5 - Server-status module

3.5 Installatie van pHpOp deze pagina http://www.php.net/downloads.php kunt u de bronbestanden downloaden voor Linux. De huidige versie is momenteel:

PHP 5.2.5 (tar.gz) [9,739Kb] - 08 November 2007

Het uitpakken gebeurt op dezelfde manier als het uitpakken van Apache.

tar xvzf php-5.2.5.tar.gz

Er zijn twee mogelijkheden om PHP te installeren: als CGI solution of als Apache module. Ik zal hier enkel de methode met als apache module uitleggen. Daarna gebruik je volgende instructies. Ik heb hier het pad /usr/local/php gebruikt en Apache is hier geïnstalleerd in /usr/local/Apache. Navigeer eerst naar de php folder.

cd php-5.2.5

./configure \ --with-apxs2=/usr/local/apache/bin/apxs \ --with-mysql \ --prefix=/usr/local/apache/php \ --with-config-file-path=/usr/local/apache/php

How to install PHP (laffers.net): http://laffers.net/howtos/howto-install-php

Page 36: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache web

server

36makemake install

Kopier het bestand php.ini-recommended naar de map /usr/local/apache/php/ en hernoem het naar php.ini. Voeg hierna volgende regels toe aan httpd.conf:

LoadModule php5_module modules/libphp5.soAddHandler php5-script php

Voeg index.php toe aan de DirectoryIndex

DirectoryIndex index.html index.phpAddType text/html php<Files *.php>SetOutputFilter PHPSetInputFilter PHP</Files>

Dit laatste stuk tussen de Files container zegt aan Apache dat hij alle bestanden met een .php extensie moet behandelen PHP scripts.

3.6 Installatie ftpSUSE heeft standaard geen FTP server geïnstalleerd, maar kan wel toegevoegd worden. Hier kan je kiezen tussen vsftpd en pure-ftpd. Vsftp heb ik getest, maar leek niet te werken. Pure-ftpd werkt grotendeels op dezelfde manier qua instellingen. Om pure-ftpd te installeren op Linux SUSE kun je in de Yast control center naar network services gaan en daar deze service aanzetten. Daarna zal Yast vragen om te installeren.

Instellingen gebeuren net zoals Apache in een .conf bestand. Deze bevind zich in de map etc/pure-ftpd/ onder de naam pure-ftpd.conf. Om de ftp-server te starten geef je dit in in de terminal:

Rcpure-ftpd on

De standaard folder voor de ftp is /srv/ftp/. Om te testen of dit werkt, kan je de ftp lokaal bereiken door:ftp://localhost/ in brower in te geven.• ftp localhost in terminal in te geven.•

Om in de terminal een lijst te krijgen van alle bestanden tik je ls in. Met het get commando kan je dan ook bestanden van de ftp afhalen. Bv get bestand.exe. Als je een bestand met de naam .message in de ftp folder zet zal de gebruiker automatisch een lijst krijgen van alle content in die folder.

Figuur 3.6 - localhost ftp

Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.

Page 37: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

37

HOOfDStUk 4: apacHe vS. IIS4.1 algemeen besluitOp internet circuleren oneindig veel verschillende meningen over welke webserver al dan niet beter is dan de andere. Het is dan ook moeilijk om een objectieve afweging te maken. IIS is al altijd een buitenbeentje geweest, maar met IIS 7.0 zal deze hoogstwaarschijnlijk een grote hap uit het aandeel van Apache nemen. IIS 7.0 maakt het nu nog gemakkelijker om een webserver op te starten. Dit is één van de grote sterktes van IIS. Er is weinig configuratie nodig en IIS maakt gebruik van een grafische interface die het toegankelijk maakt voor een gewone gebruiker. Apache werkt met een config file en hiervoor is enige kennis vereist vooraleer je ermee kan werken. In IIS 7 wordt alle configuratie nu ook opgeslaan in een XML bestand nl. applicationHost.config. Dit wil zeggen dat je net zoals in Apache alle configuratie via 1 configuratie bestand kunt aanpassen. Dit maakt het ook gemakkelijk om configuratie te delen met andere webservers. De nieuwe IIS biedt de mogelijkheid uw volledige webserver te beheren vanuit 1 interface, nl. De server manager. Het is ook mogelijk om alles via command line te doen ipv. vanuit een grafische interface. Dit was één van de tekortkomingen van IIS. Zo kun je enkel de server core installeren die geen grafische interface heeft en dus ook minder resources verbruikt die de snelheid van je webserver alleen maar ten goede komt.

Apache werkt het best samen met Linux, wat op zich al grote stap betekent voor een gewone gebruiker. Apache kan op de courantste operating system draaien ( Windows, Mac, Linux ), waar IIS dan weer een windows versie vereist. Dit schrikt veel webhosting bedrijven af, omdat windows gekend staat voor zijn instabiliteit. Zoals ik al vermeld heb, gebruiken webhosting bedrijven meestal ook Windows uit noodzaak. Dit zorgt ervoor dat IIS nooit helemaal zal kunnen verdwijnen. Vroeger was veiligheid een belangrijk probleem voor IIS, zeker bij de IIS 5.0 waar de Code Red worm en Nimda voor grote paniek zorgden in het IIS development team. Code red en Nimda waren twee wormen die webservers aanvielen en plat legden. Dit zou nu moeten verholpen zijn met de nieuwste versie.

Apache ondersteunt gedistribueerde configuratie dmv een .htaccess bestand. Dit laat toe de configuratie voor een website te overschrijven dmv een tekst file. Het nadeel hiervan is dat het websites vertraagt omdat de webserver per request dit bestand moet lezen. IIS 7 maakt daarentegen gebruik van een web.config bestand. Dit laat toe alle configuratie in 1 bestand te doen. IIS 7 cached de web.config bestanden wat een betere performance levert dan bij het gebruik maken van .htaccess.

Page 38: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

38

4.2 enquêteVoor deze enquête heb ik volgende vragen voorgelegd aan enkele webhosting bedrijven:

Wat is de naam van uw bedrijf?• Welke operating system gebruikt u en waarom? (indien linux, welke distributie) • Welke webserver software gebruikt u? • Waarom heb u voor deze keuze gekozen? • Indien u geen IIS gebruikt, waarom verkiest u Apache of een andere webserver boven IIS? • Indien u geen Apache gebruikt, waarom verkiest u IIS of een andere webserver boven Apache? • Indien u met Apache werkt, of met andere webserver software, heeft u al met de nieuwe IIS 7.0 • gewerkt? Zou u overstappen naar IIS indien u de nieuwe versie reeds getest heeft? Indien u werkt met IIS 7.0, wat vindt u dat er verbeterd is aan IIS sinds de vorige versie?• Hoe beveiligd u uw webservers?• Hoe maakt u uw backups en hoe regelmatig?•

Hieruit is gebleken dat bijna alle webhosting bedrijven opteren voor Apache boven IIS. De voornaamste reden voor deze keuze is de stabiliteit van het Operating system. Linux is stabieler dan Windows en omdat IIS enkel draait op Windows, verkiezen de meeste Apache als webserver. Andere redenen voor deze keuze zijn de voorliefde voor open source, de lagere kost die open source met zich meebrengt en de vele uitbreidingsmogelijkheden van Apache. Een minder voor de hand liggende reden is de minder energie-efficiënte hardware die Windows servers vereisen. Tegenwoordig kiezen meer en meer bedrijven voor energiezuinige servers. In 2005 hebben alle computers samen op de wereld 123 miljard kilowattuur verbruikt. Het uitvoeren van queries, emailverkeer en andere berekeningen vragen veel elektriciteit van webservers. Google maakt reeds gebruik van zonne-energie om een deel van zijn servers van stroom te kunnen voorzien. Het bedrijf maakt gebruik van ongeveer 450,000 servers en verbruikt 2 miljoen dollar aan elektriciteit elke maand. Dus is het gebruik van hernieuwbare energie een goede keuze. Ook fabrikanten doen hun best om energieverbruik van hun apparatuur zo laag mogelijk te houden. Chipfabrikanten zoals Intel en AMD hechten minder en minder belang aan snelheden en houden zich nu vooral bezig met nanoniseren van hun chips. Het kleiner maken van de chips resulteert ook in een lager energieverbruik. Door virtualisatie kan ook veel elektriciteit bespaart worden door verschillende servers samen te voegen. Hiervoor worden zwaardere servers aangeschaft, maar bespaard men op hardware. Door virtualisatie kunnen servers ook een hoger rendement opleveren. Virtualisatie heeft de laatste jaren enorm aan interesse gewonnen. Denk maar aan VMware server en de nieuwe HyperV die in Windows Server 2008 zit.

Blijkbaar is Combell het eerste webhosting bedrijf in België die reeds gebruik maakt van Windows Server 2008. Combell is dan ook een Microsoft Gold Sertified partner die nauw samenwerkt met Microsoft. Het gebruik van IIS7 door Combell is nog in testfase en zowel Combell als Microsoft verwachten heel wat verbeteringen door het evalueren van het gebruik. Buiten dit bedrijf lijkt niemand gewillig om over te schakelen naar Windows Server 2008. Sommigen hebben reeds kennisgemaakt met IIS7 en waren niet echt onder de indruk.

De reden waarom deze webhosting bedrijven dan toch Windows servers hebben, is de grote vraag door klanten naaar ASP.Net mogelijkheden, het gebruik van MS Access databases of MS SQL server.

Bij het gebruik van Linux, gaat de voorkeur van distributie meestal uit naar Linux Debian en verder ook Fedora en Centos. Bij het gebruik van Windows opteert men nog altijd voor de Server 2003 versie omdat de Server 2008 versie nog niet matuur genoeg is. Ik denk dat veel bedrijven nog de kat uit de boom kijken vooraleer ze durven overschakelen. Over hun beveiliging willen de meeste bedrijven niets kwijt omdat dit bedrijfsgeheimen zijn.

Page 39: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

39

4.3 alternatievenEerst en vooral heb Lighttpd (ook “lighty” genoemd) getest. Dit is een snelle en veilige webserver die ongeveer op dezelfde manier werkt als Apache qua instellen. Lighttpd wordt gebruikt voor oa. Youtube, meebo en wikipedia en is dus zeker niet te verwaarlozen als concurrent voor de grote spelers. Lighty staat bekend voor zijn goede samenwerking met Ruby on rails. Lighty werkt ook met een httpd.conf bestand die alle configuratie bevat. Na het werken met Apache was Lighty snel opgezet.

Een andere concurrent is google. Deze gebruiken hun eigen webserver met de weinig originele naam Google Web Server (GWS). Deze wordt enkel gebruikt door Google zelf. Deze webserver heeft reeds een aandeel verworven van 5.16%. Het meeste hiervan komt wel van de blog sites van blogspot.com.

Verder heb ik ook de XSP webserver getest. Deze is minder bekend. Deze biedt de mogelijkheid ASP.Net applicaties te runnen. Deze webserver is volledig geschreven in C#. Na de installatie ervan probeerde ik een ASP.Net applicate te runnen, maar ik kreeg meteen een stack overflow error en crashte de server. Daarna bleek alles wel te werken. Deze webserver lijkt me nog niet volledig stabiel, maar kan in de toekomst zeker een bedreiging vormen voor IIS. Eenmaal Linux ASP.Net applicaties kunnen hosten zullen veel webhosting bedrijven hoogstwaarschijnlijk opteren voor het uitstluitend gebruik van Linux.

Nginx (“EngineX” uitgesproken) is een webserver die ontwikkeld is in Rusland. Deze heeft veel gelijkenissen met Apache en Lighttpd webservers qua gebruik. In plaats van een httpd.conf bestand wordt alles in het nginx.conf bestand geschreven. Net als Apache worden de virtual hosts ook geïnclude dmv aparte .conf bestanden in de map sites-enabled. Samen met Lighttpd is Nginx sneller dan de Apache webserver. Nginx gebruikt slechts enkele megabytes.

Omdat Nginx en Lighttpd nog niet zo aanvaard zijn bij een groot publiek en de meeste blijven hangen bij Apache is er geen grote community rond deze webservers en bestaan er nog niet zoveel modules voor deze webserver. Ook is er hierover nog niet zoveel informatie te vinden. Forums en blogs waren voor mij een grote hulp om deze webservers te installeren en te configureren. Bij deze webservers was dit wat moeilijker. Vooral bij Nginx heb ik veel problemen ondervonden met virtual hosting.Lighttpd heeft wat last met memory leaks, wat wil zeggen dat het RAM gebruik zich opstapelt en de webserver dus geregeld herstart moet worden, zeker bij zwaar belaste servers.

Nginx vs. Lighttpd for a small VPShttp://hostingfu.com/article/nginx-vs-lighttpd-for-a-small-vpsNginx - Small, But Very Powerful and Efficient Web Serverhttp://blog.kovyrin.net/2006/04/04/nginx-small-powerful-web-server/Monohttp://www.mono-project.com/Main_PageNginx virtual host Examplehttp://wiki.codemongers.com/NginxVirtualHostExampleInstalling Lighttpdhttp://trac.lighttpd.net/trac/wiki/TutorialInstallationInstalling and configuring Lighttpdhttp://www.cyberciti.biz/tips/installing-and-configuring-lighttpd-webserver-howto.html

Page 40: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

40

lIjSt vaN IllUStratIeS

Hoofstuk 1pag 6 Figuur 1.1 Linux SUSE Gnomepag 7 Figuur 1.2 Market Share for Top Servers Across All Domains

Hoofdstuk 2pag 10 Figuur 2.1 Selecteren van server rolepag 10 Figuur 2.1 Selecteren van featurespag 11 Figuur 2.3 Powershellpag 12 Figuur 2.4 IIS interfacepag 16 Figuur 2.5 Toevoegen van een websitepag 17 Figuur 2.6 Toevoegen van een Virtual Directorypag 18 Figuur 2.7 Enablen van Failed Request Tracingpag 19 Figuur 2.8 Pad bepalen voor logspag 19 Figuur 2.9 Access loggingpag 20 Figuur 2.10 Reliability and Performance monitor pag 20 Figuur 2.11 Reliability and Performance monitorpag 21 Figuur 2.12 Performance monitorpag 21 Figuur 2.13 Reliability monitorpag 24 Figuur 2.14 Toevoegen van FTPpag 24 Figuur 2.15 Binding en SSL voor FTP serverpag 24 Figuur 2.16 Authentificatie en Authorisatie van FTP server

Hoofdstuk 3pag 29 Figuur 3.1 Yast HTTP server - enablen van Apachepag 29 Figuur 3.2 Yast HTTP server - toevoegen van modulespag 30 Figuur 3.3 Webmin administratie toolpag 30 Figuur 3.4 Webmin Apache configuratiepag 35 Figuur 3.5 Server-status modulepag 36 Figuur 3.6 Localhost FTP

Page 41: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

41

BrONNeNBOEKENvan Vugt, S., Leer jezelf makkelijk een eigen webserver inrichten, van Duuren Media, 2006, 181 blz.Lowe, Doug, Networking for Dummies, Wiley Publishing, 2005, 435 blz.Beaver, Kevin, Hacking for Dummies, Wiley Publishing, 2004, 387 blz.Komar, Brian, Firewalls for Dummies, Wiley Publishing, 2003, 434 blz.Hendriks, John, Bouw je eigen webserver voor insiders, Academic Service, 2005, 208 blz.Murach, Joel, Muach’s ASP.Net 2.0 web programming with C# 2005, Mike Murach & Associates, 841 blz.Tittel, Ed, Windows 2003 for Dummies, Wiley Publishing, 2003, 404 blz.Mallet Fred, TCP/IP for Dummies, ebook, 1996, 37 blz.Kurose, F., James, Computer netwerken, een ‘top-down’ -benadering, Focus to Prepress, 2005, 826 blz.Eric Maiwald, netwerk beveiliging voor professionials, academic service, 2001, 390 blz.Arthur Kooymand, het opzetten van een linux-webserver, Pearson Education, Van Vugt S., Suse Linux 8.2 Sander van Vugt,Van Duuren Media, 179blz.Davies, Whittaker, von Hagen, SUSE Linux 10 bible, Wiley Publishing, 852blz.Van der Put Ward,Webdesign met PHP 5, Easy Computing, 606blz.Stanek R. William,Internet Information Services (IIS) 7.0, Microsoft Press, 516blz.Kurose F. James,Computernetwerken een top-down benadering, Pearson Education, 826blz.Mueller P. John,IIS 7 Implementation and Administration, Wiley Publishing, 387blz.Kabir J. Mohammed,Apache Server 2 Bible, Hungry Minds, 793blz.Stanek R. Willam,Microsoft Windows Server 2003 Het compacte handboek, Microsoft Press, 564blz.Shapiro, Boyce, Policht, Patterson, Leathers, Windows Server 2003 Het complete handboek, Academic ServiceTacket J., Burnett S., Het complete handboek Linux - Academic sercvice, Academic Service, 1041blz.van Vugt S., Leerboek Linux Systeembeheer, Academic Service, 610blz.Ben en Peter Laurie, Apache The definitive guide, O’Reilly Publishing, 568blz.

Seguis, Steve, Microsoft Windows Server 2008 administration, Mc Graw Hill, 485blz.

TIJDSCHRIFTENBiello, David (2008) “Computers op dieet”, Scientific American, nummer 3, blz. 14-15

WEBSITESNetcrafthttp://news.netcraft.com/archives/2007/06/08/june_2007_web_server_survey.htmlMonohttp://www.mono-project.com/Mod_monoLaffers.net (how to install Apache)http://laffers.net/howtos/howto-install-apacheNginx vs. Lighttpd for a small VPShttp://hostingfu.com/article/nginx-vs-lighttpd-for-a-small-vpsNginx - Small, But Very Powerful and Efficient Web Server http://blog.kovyrin.net/2006/04/04/nginx-small-powerful-web-server/ PHPwww.php.net/usage.phpMonohttp://www.mono-project.com/Main_PageHttp status codeshttp://www.helpwithpcs.com/courses/html/html_http_status_codes.htmNginx virtual host Examplehttp://wiki.codemongers.com/NginxVirtualHostExampleInstalling Lighttpdhttp://trac.lighttpd.net/trac/wiki/TutorialInstallationInstalling and configuring Lighttpdhttp://www.cyberciti.biz/tips/installing-and-configuring-lighttpd-webserver-howto.html

Page 42: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

42

MSDN: http://msdn.microsoft.com/en-us/windowsserver/cc196364.aspxmicrosoft: http://www.microsoft.com/windowsserver2008/en/us/pricing.aspxRaidhttp://www.techweb.com/encyclopedia/defineterm.jhtml?term=RaIDWhat is Raid?http://compreviews.about.com/od/storage/l/aaRAIDPage1.htm

Page 43: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

43

BIjlageNBijlage 1: Http Status codesVoor iedere request die een client doet aan een webserver zendt deze webserver op zijn beurt een http

status code. Deze vertelt de status van de webserver aan de client. Bij een fout kan de gebruiker ook zien wat er fout is gegaan. De beheerder van de webserver kan aangepaste foutmelding pagina’s zelf toevoegen per foutcode. De best bekende foutcode is de 404 Not found. Al deze status codes zijn ook na te lezen in de RFC2616.

HTTP CODES 100-101 (informatief)

100 - Continue Dit zegt aan de client dat het eerste gedeelte van de request goed ontvangen is en dat hij mag doorgaan met het volgende request.

101 - Switching Protocols De server zal wisselen van protocol

HTTP CODES 200-206 (Goede status)

200 - OK Het request van de client is goed verlopen.

201 - Created Het request is goed verlopen en er is een nieuwe resource aangemaakt.

202 - Accepted Het request is aanvaard om te verwerken, maar nog niet verwerkt.

203 - Non-Authoritative Information Het request is goed toegekomen en verstaan en de meta informatie die teruggestuurd is komt van een andere server.

204 - No Content Het request is goed toegekomen en verstaan, maar er moet niets teruggestuurd worden.

205 - Reset Content Hier vraagt de server aan de browser om een formulier te resetten.

206 - Partial Content Een gedeeltelijke GET instructie is goed uitgevoerd. Wordt gebruikt voor geavanceerde caching tools, waarbij het mogelijk is om een pagina gedeeltelijk op te vragen.

HTTP CODES 300-307 (redirection)

300 - Multiple Choices De resource is verplaatst en de server heeft een lijst van andere locaties.

301 - Moved Permanently De resource is permanent verplaatst.

302 - Found De resource is gevonden onder een andere tijdelijke URL.

Http status codeshttp://www.helpwithpcs.com/courses/html/html_http_status_codes.htm

Page 44: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

44

303 - See Other The requested response is at a different URI and should be accessed using a GET command at the given URI.

304 - Not Modified Dit wordt gebruikt bij caching. Als een pagina gecached wordt, wordt een tijdstip opgeslagen. Bij een nieuwe request van deze client wordt het tijdstip opgevraagd en gekeken of er een nieuwere versie voor handen is. Bij een 304 is er geen nieuwe versie aanwezig.

305 - Use Proxy De resource moet aangevraagd worden met een proxy.

307 - Temporary Redirect Wordt gebruikt wanneer een resource tijdelijk op een andere URL te bereiken is en verschilt dus weinig van de 302 code.

HTTP CODES 400-417 (request fout)

400 - Bad Request De syntax van de aanvraag is niet verstaan door de server.

401 - Not Authorised Er is authentificatie nodig om deze resource te bereiken.

402 - Payment Required Nog niet in gebruik.

403 - Forbidden De client heeft geen toegang tot deze resource. Ofwel omdat login en paswoord niet correct zijn of omdat hij geen toegang heeft tot deze resource.

404 - Not Found De resource kan niet gevonden worden.

405 - Method Not Allowed De methode van de aanvraag is niet toegelaten. De meest voorkomende zijn GET en POST.

406 - Not Acceptable Hoewel de server de aanvraag verstaan heeft en verwerkt, is de aanvraag in een vorm die de client niet verstaat.

407 - Proxy Authentication Required Deze trekt op de 401 code. Er is authentificatie van de proxy vereist.

408 - Request Timeout De aanvraag duurde te lang voor de server.

409 - Conflict De server kan de aanvraag niet afhandelen. Dikwijls omdat hij een bestand moet aanpassen, verwijderen of aanmaken en dit niet mogelijk is.

410 - Gone Ongeveer hetzelfde als een 404. Deze zegt dat een resource permanent weg is.

Http status codeshttp://www.helpwithpcs.com/courses/html/html_http_status_codes.htmWhat is Raid?http://compreviews.about.com/od/storage/l/aaRAIDPage1.htm

Page 45: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

45

411 - Length Required Deze foutcode krijg je als een server een aanvraag niet wil afhandelen omdat de content lengte niet gespecifieerd was.

412 - Precondition Failed Er is niet voldaan aan een vooraf gestelde voorwaarde.

413 - Request Entity Too Large De aanvraag was groter dan de server kan verwerken. Vaak bij een POST method van een form.

414 - Request URI Too Long De URL was te lang voor de webserver.

415 - Unsupported Media Type Dit wil zeggen dat een deel van de aanvraag in een niet ondersteund formaat was.

416 - Requested Range Not Satisfiable De server kan de aanvraag niet behandelen, omdat bv. Een bestand gevraagd werd met een verkeerde bestandsgrootte.

417 - Expectation Failed De aanvraag kan niet verwerkt worden door de server omdat de expect header een verwachting van de server vroeg die de server niet kan leveren.

HTTP CODES 500-505 (server fout)

500 - Internal Server Error De server iets tegengekomen is die hij niet verwachtte en daardoor de aanvraag niet kan verwerken.

501 - Not Implemented De server ondersteunt niet alles die nodig is om de aanvraag te verwerken.

502 - Bad Gateway Wanneer een server die als proxy dienst doet, een antwoord kreeg van een andere server die niet geldig was.

503 - Service Unavailable Dit komt voor bij overbelaste server.

504 - Gateway Timeout Wanneer een proxy server te lang heeft moeten wachten op een antwoord van een andere server.

505 - HTTP Version Not Supported Dit komt voor wanneer een aanvraag met een niet ondersteunde HTTP versie is gemaakt.

Http status codeshttp://www.helpwithpcs.com/courses/html/html_http_status_codes.htm

Page 46: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

46

Bijlage 2: raIDRedundant Arrays of Independent Disks

RAID niveau 0 Disk stripingbeschrijving hier wordt gebruik gemaakt van twee harde schijven. De gegevens worden opgesplitst in stripes over de twee harde schijven. Bij het oproepen van gegevens wordt de belasting dus verdeeld over de twee harde schijven.voordelenDoor het verdelen van de belasting, kan een hogere snelheid geleverd worden.NadelenBij het uitvallen van een harde schijf zijn alle gegevens verloren op beide schijven.

RAID niveau 1 Disk Mirroringbeschrijving Dit is vooral bedoeld voor de veiligheid van gegevens. De harde schijven identiek. De ene harde schijf bevat alle gegevens van de andere. Bij het opvragen van gegevens wordt de belasting ook verdeeld. voordelenDit is een veilige en snelle oplossing, omdat bij het uitvallen van één harde schijf er nog een kopie bestaat en de belasting verdeeld wordt.NadelenHet halveert uw opslagruimte omdat alles dubbel wordt opgeslagen. Als je bv. 10Gb wegschrijft zult u 20Gb kwijt zijn.

RAID niveau 5 Disk striping met paritybeschrijving Hiervoor maak je gebruik van minimum 3 harde schijven. Dit is de verbeterde versie van RAID 1. RAID 1 ontbrak de veiligheid die RAID 0 heeft en is dus eigenlijk een combinatie van die twee. Dit wordt bereikt dmv pariteits-informatie weg te schrijven. Als één harde schijf het laat afweten, kan deze hersteld worden dmv van die pariteits informatievoordelenVeilig, maar met minder verlies van opslagcapaciteit en betere leesprestaties.NadelenEr is niet echt een nadeel aan verbonden. Het is de beste oplossing als u beschikt over 3 harde schijven of meer.

Raidhttp://www.techweb.com/encyclopedia/defineterm.jhtml?term=RaID

Page 47: Eindwerk Apache vs IIS

Het op

zetten van een web

server - Ap

ache vs. IIS 7.0

47

lOgBOek

20/1 opzoekwerk boeken en bestelling boeken.

21-21/1 lezen van webdesign met PHP.

23-24/1 installatie Linux Ubuntu Desktop en Server versie + installatie van Solaris (niet gelukt, probleem met installatie op

vmware)

24/1 netwerkbeveiliging beginnen lezen.

uittesten MAMP.

25/1 solaris downloaden + lezen netwerkbeveiliging.

verder lezen in Computernetwerken, een top-down benadering.

26/1 installatie Mysql, PHP, Apache op Linux SUSE.

28/1 beginnen lezen IIS 7.0.

installatie Windows Vista Ultimate + IIS 7.0.

Config IIS + FTP + PHP.

29/1 verder lezen IIS 7.0.

30/1-> 6/2 IIS 7.0 uitlezen.

7/2 raad gaan vragen bij externe promoter.

7-8-9/2 uittesten op IIS 7.0 op Vista Ultimate + MAMP op mac.

11/2 mail naar openminds met vraag ivm installatie Apache.

12/2 installatie Windows Server 2008 + testen.

Aankoop boek SUSE Linux Server + beginnen lezen.

13-14/2 verder lezen Linux Bible + testen op SUSE.

15/2 naar externe promoter gegaan + Apache Bible beginnen lezen.

16-22/2 Apache Bible lezen + Linux SUSE bible.

22/2 Seminarie Windows server 2008.

23-24/2 uittesten van enkele zaken uit seminarie van Win2k8.

25-29/2 testen van apache + verder lezen Apache Bible + Linux Suse Bible.

9/3 Selectie maken van te bespreken onderwerpen.

10/3 Begonnen met schrijven van eindwerk + testen Linux Debian.

11-12-13/3 verder schrijven aan eindwerk. + verder lezen Apache Bible

14/3 Boeken in de bibliotheek gaan halen.

14->19/3 informatie zoeken in boeken (Windows Server 2003 het complete handboek en het compacte handboek, het complete

handboek Linux, Leerboek Linux Systeembeheer)

21-22-23/3 verder schrijven + opstellen bronnenlijst.

28-29/3 uitwerken stukken + bijlagen aanmaken.

6/3 mail naar meneer Van Gestel met eindwerk.

8/4 bronnen aanpassen. + onderdeel over IIS lezen uit Microsoft Windows Server 2008 administration.

9/4 voorstellen van vorderingen + Interne promoter gecontacteerd.

10/4 boek Apache, The definitive guide toegekomen + beginnen lezen.

11-12/4 verder lezen Apache, The definitive guide. Email ontvangen van meneer Van Gestel met aangeduide fouten

in eindwerk

13/4 fouten aanpassen die meneer Vangestel heeft aangehaald + verder schrijven.

mail naar externe promoter om afspraak te maken om enkele vragen te kunnen stellen.

14/4 proberen mono 2.0 + laatste versie apache + verder lezen Apache, the definitive guide.

17/4 naar externe promotor gegaan met probleem van virtual hosting in Apache.

19/4 opnieuw opstellen van Windows server 2008 en Apache webserver op Linux SUSE.

20/4 Screenshots genomen voor eindwerk.

25/4 installatie van nieuwste release van Linux Ubuntu 8.04.

+ installatie van Lighttpd. Lezen artikel uit EOS over energieverbruik van servers + verwerking in eindwerk.

26/4 installatie van Nginx, XSP webserver en Lighttpd en de werking ervan onderzoeken. Bespreking

van alternatieve webservers schrijven. + WAMP installatie op windows + installatie van phpMyAdmin op Linux

Ubuntu.

27/4 Nginx server problemen oplossen. + verder schrijven aan gedeelte over alternatieve webservers.

28/4 structuur van eindwerk verbeteren. + mail naar externe promoter met vraag ivm Nginx webserver.

1/5 Layout zoeken voor eindwerk en onderdelen verbeteren.

2/5 Layout verder afwerken + afbeeldingen en tekst in indesign plaatsen .

nogmaal foutcontrole.

3/5 afwerking van layout. + nazicht inhoud + afbeeldingen afwerken.