Hoewel Apache en Microsoft de afgelopen jaren dichter naar elkaar toe zijn gekropen, is Apache nog steeds de meest gebruikte webserver ter wereld. Volgens Netcraft heeft het open source pakket op dit moment iets meer dan de helft van de markt in handen. Tel je de Google webserver mee, die ook op Apache is gebaseerd, dan kom je op ongeveer 60 procent uit. Microsoft blijft met zijn Internet Information Services (IIS, voorheen Internet Information Server) ruim onder de veertig procent zitten.

Afgezien van de kwaliteit van Apache, is het feit dat de http-server standaard met Linux en andere Unix-besturingssystemen wordt meegeleverd, natuurlijk een belangrijke factor in dit succes. De opkomst van Linux heeft immers plaatsgevonden vanuit de infrastructuurtoepassingen. Daarnaast is het LAMP ontwikkelplatform voor webportals gebaseerd op Linux met Apache, MySQL en Perl/PHP/Python de laatste jaren een begrip geworden. In tegenstelling tot IIS dat alleen voor het Windows-platform beschikbaar is, loopt Apache naast Unix ook op Windows, NetWare en Mac OS X (BSD Unix). Bovendien is Apache een onderdeel van de Oracle en IBM WebSphere applicatieservers.

Modulair

De installatie van Apache die met de laatste versie van Red Hat Enterprise Linux (RHEL) wordt meegeleverd, bestaat uit de basisserver met daarbij enige tientallen losse componenten. De http-server is namelijk volledig modulair opgebouwd. Bovendien zijn al die onderdelen nog eens op allerlei mogelijke manieren te configureren.

Naast de componenten die je standaard gebruikt en de modulen die specifiek door je webapplicatie worden gevraagd, zijn mod_deflate en mod_rewrite nog de moeite waard om apart te noemen. De eerste kun je gebruiken om je webverkeer te comprimeren. De configuratie ervan is een fluitje van een cent, en de opbrengsten enorm. Want hoewel plaatjes niet goed comprimeren, geldt dat wel voor files met HTML, XML, CSS-code en JavaScript. Op die manier kun je je verkeer vaak meer dan halveren. Heb je een applicatie die niet netwerk- maar processor-intensief is, dan kun je deze module natuurlijk beter niet gebruiken.

Mod-rewrite is interessant omdat je met behulp van reguliere expressies heel ingewikkelde herschrijvingen van je URL's kunt doen. Zo kun je complexe URL’s met veel parameters voor de bezoekers terugvertalen naar veel eenvoudigere adressen. Bovendien kun je op die manier je URL's beter toesnijden op formaten die door zoekmachines hoger worden gewaardeerd. Klein minpuntje daarbij is dat het aantal backreferences beperkt is tot tien. Dat maakt het lastig om URL's met veel parameters te vervangen door URL's met diepe paden.

Prestaties

Behalve de standaard componenten die door de Apache Foundation zelf bij de http-server worden meegeleverd, voorziet de Linux-distributie onder andere in de PHP-module. We hebben daar zelf nog eAccelerator (voorheen Turck MMCache) bij geïnstalleerd. Deze versneller zorgt dat de al gecompileerde PHP-bestanden in het geheugen bewaard blijven, zodat dynamische pagina's veel sneller beschikbaar zijn en minder processorkracht vragen. Door ook de MySQL queries op een slimme manier te cachen (on-demand caching) kunnen de prestaties nog verder worden verbeterd. Andere handige modulen die we gebruiken, zijn mod_guard, mod_evasive20 en GeoIP.

Overigens laten de prestaties van Apache niets te wensen over. De kern van de http-server kan met verschillende multi-threading modellen overweg, afhankelijk van toepassing en platform. Tegenwoordig spreekt men in dit verband van horizontaal schaalbare applicaties. Door een cluster van Apache-systemen te combineren met meerdere DNS-adressen, een load balancing-configuratie met session affinity, en meerdere gerepliceerde databaseservers in het back-end, kunnen nog veel zwaardere websites worden gebouwd.

Virtualisatie

In dit verband is het ook goed om de ondersteuning voor virtuele webservers te noemen. Op een handvol brede instellingen na kunnen alle configuraties apart worden ingesteld voor verschillende websites die op dezelfde http-server draaien. Nu servervirtualisatie zo in de belangstelling staat, zou je haast vergeten dat voor sommige toepassingen al goede oplossingen bestaan. Afhankelijk van de belasting kun je tientallen websites laten draaien op één enkele server. Dat is veel efficiënter dan een gevirtualiseerde oplossing waarbij het hele besturingssysteem steeds weer opnieuw wordt gekopieerd en in het geheugen moet worden geladen. Overigens lukt dit niet met beveiligde webservers. SSL-servers (https) hebben elk een eigen IP-adres nodig.

Voor het opzetten van virtuele webservers is het wel eerst nodig om de suexec-module die met Red Hat-distributies (RHEL, CentOS en Fedora) wordt meegeleverd opnieuw te compileren. Deze is nu zo geconfigureerd dat CGI-folders alleen onder de directory /var/www/cgi-bin/ kunnen bestaan. Wil je meerdere virtuele servers naast elkaar draaien of CGI-toepassingen in de /usr/local/ hiërarchie kunnen installeren, dan zul je op zijn minst deze module opnieuw moeten compileren. Wij hebben dat gedaan door de source RPM van Apache binnen te halen en de .spec file aan te passen (--suexec-docroot=/). Na de rpmbuild-opdracht hoeven we alleen de module uit de binaire RPM te vissen (cpio) en op de juiste plaats te zetten.

Bron: Techworld