FreeBSD wordt gebruikt om een paar van de drukste websites ter
wereld te draaien. De meeste webservers op Internet maken
gebruik van de Apache HTTP Server.
Apache softwarepakketten staan op de
FreeBSD installatiemedia. Als Apache
niet bij de oorspronkelijke installatie van FreeBSD is
meegeïnstalleerd, dan kan dat vanuit de port www/apache22
.
Als Apache succesvol is geïnstalleerd, moeten er instellingen gemaakt worden.
In dit onderdeel wordt versie 2.2.X van de Apache HTTP Server behandeld omdat die het meest gebruikt wordt op FreeBSD. Meer gedetailleerde informatie over Apache 2.X dat buiten het bereik van dit document valt is te vinden op http://httpd.apache.org/.
Het belangrijkste bestand met instellingen voor de
Apache HTTP Server op FreeBSD is
/usr/local/etc/apache22/httpd.conf
. Dit
bestand is een typisch UNIX® tekstgebaseerd
instellingenbestand waarin regels met commentaar beginnen met
het karakter #
. Het uitputtend beschrijven
van alle mogelijke instellingen valt buiten het bereik van dit
boek, dus worden alleen de meest gebruikte directieven
beschreven.
ServerRoot "/usr/local"
Hierin wordt de standaard mappenhiërarchie voor
de Apache installatie
aangegeven. Binaire bestanden staan in de submappen
bin
en sbin
van de serverroot en
bestanden met instellingen staan in etc/apache
.
ServerAdmin beheerder@beheer.adres
Het adres waaraan problemen met de server gemaild kunnen worden. Dit adres verschijnt op een aantal door de server gegenereerde pagina's, zoals documenten met foutmeldingen.
ServerName www.example.com
Met ServerName
kan een hostnaam
ingesteld worden die wordt teruggezonden aan de
cliënten als de naam van de server anders is dan diegene
is ingesteld (gebruik bijvoorbeeld www
in
plaats van de echte hostnaam).
DocumentRoot
"/usr/local/www/apache22/data"
DocumentRoot
: de map waaruit de
documenten worden geserveerd. Standaard worden alle
verzoeken uit deze map gehaald, maar er kunnen symbolische
links en aliassen gebruikt worden om naar andere locaties
te wijzen.
Het is altijd een goed idee om reservekopieën te maken van het instellingenbestand voor Apache vóór het maken van wijzigingen. Als de juiste instellingen gemaakt zijn, kan Apache gestart worden.
De port www/apache2
installeert
een rc(8)-script dat helpt met het starten, stoppen en herstarten
van Apache en is te vinden in
/usr/local/etc/rc.d/
.
Om Apache met het systeem mee te
starten kan de volgende regel aan
/etc/rc.conf
worden toegevoegd:
Als het nodig is Apache met afwijkende
opties op te starten, kan de volgende regel aan
/etc/rc.conf
worden toegevoegd:
De configuratie van Apache kan worden
getest op fouten voordat het daemon httpd
voor de
eerste keer wordt gestart, of na het maken van wijzigingen aan de
instellingen terwijl httpd
draait. Dit kan direct
door het rc(8)-script worden gedaan, of door het gereedschap
service(8) door één van de volgende commando's op te
geven:
#
service apache22 configtest
Het is belangrijk om op te merken dat
configtest
geen rc(8)-standaard is, verwacht
niet dat het met alle rc(8)-opstartscripts werkt.
Als Apache geen instellingsfouten meldt,
kan Apache httpd
gestart worden met service(8):
#
service apache22 start
De dienst httpd
kan getest worden door
http://
in een webbrowser te typen, waarbij localhost
localhost
door de volledig gekwalificeerde domeinnaam wordt vervangen van de
machine die httpd
draait, als het niet de lokale
machine is. De standaard webpagina die afgebeeld wordt is
/usr/local/www/apache22/data/index.html
.
Apache ondersteunt twee verschillende manieren van Virtuele Hosting. De eerste methode is Naamgebaseerde Virtuele Hosting. Naamgebaseerde Virtuele Hosting gebruikt de HTTP/1.1 headers van de cliënten om de hostnaam uit te zoeken. Hierdoor kunnen meerdere domeinen hetzelfde IP-adres delen.
Om Apache gebruik te laten maken
van Naamgebaseerde Virtuele Hosting kan een regel als de
volgende in httpd.conf
worden opgenomen:
Als een webserver www.domein.tld
heet en er moet een
virtueel domein voor www.anderdomein.tld
gaan draaien, dan
kunnen de volgende regels aan httpd.conf
worden toegevoegd:
De adressen en de paden uit dit voorbeeld kunnen in echte implementaties uiteraard gewijzigd worden.
Meer informatie over het opzetten van virtuele hosts staat in de officiële documentatie voor Apache op http://httpd.apache.org/docs/vhosts/
Er zijn veel verschillende Apache modules die functionaliteit toevoegen aan de basisdienst. De FreeBSD Portscollectie biedt op een eenvoudige manier de mogelijkheid om Apache samen met de meeste populaire add-on modules te installeren.
De module mod_ssl gebruikt de bibliotheek OpenSSL om sterke cryptografie te leveren via de protocollen Secure Sockets Layer (SSL v2/v3) en Transport Layer Security (TLS v1). Deze module levert alles wat nodig is om een getekend certificaat aan te vragen bij een vertrouwde certificaatautoriteit om een veilige webserver onder FreeBSD te kunnen draaien.
De module mod_ssl wordt standaard
gebouwd, maar kan worden aangezet door tijdens het compileren
-DWITH_SSL
op te geven.
Er zijn Apache-modules beschikbare voor de meeste grote scriptingtalen. Deze modules maken het typisch mogelijk om Apache-modules geheel in een scriptingtaal te schrijven. Ze worden ook vaak gebruikt als een persistente interpreter die in de server zit en die de rompslomp van het starten van een externe interpreter en de opstartvertraging voor dynamische websites vermijdt, zoals beschreven in de volgende sectie.
In het afgelopen decennium hebben steeds meer bedrijven zich op Internet gericht om hun omzet te verhogen en hun zichtbaarheid te vergroten. Hiermee is ook de behoefte aan interactieve webinhoud toegenomen. Hoewel sommige bedrijven zoals Microsoft® oplossingen hebben geïntroduceerd voor hun eigen (propriëtaire) producten, heeft ook de open source gemeenschap een antwoord op de vraag gegeven. Moderne opties voor dynamische webinhoud zijn onder andere Django, Ruby on Rails, mod_perl2, en mod_php.
Django is een BSD-gelicenseerd raamwerk ontworpen om ontwikkelaars in staat te stellen om snel hoog presterende, elegante webapplicaties te schrijven. Het biedt een vertaling van objecten naar relaties zodat datatypes ontwikkeld kunnen worden als Python-objecten, en er een rijke dynamische databasetoegang voor die objecten kan worden geboden zonder dat de ontwikkelaar ooit SQL hoeft te schrijven. Het biedt ook een uitbreidbaar sjabloonsysteem zodat de applicatielogica is gescheiden van de HTML-presentatie.
Django is afhankelijk van mod_python, Apache, en een SQL-database-engine naar keuze. De FreeBSD-port zal al deze vereisten met de juiste vlaggen voor u installeren.
#
cd /usr/ports/www/py-django; make all install clean -DWITH_MOD_PYTHON3 -DWITH_POSTGRESQL
Als Django en deze vereisten eenmaal zijn geïnstalleerd, dient u een Django-projectmap te maken en vervolgens Apache te configureren om de ingebakken Python-interpreter te gebruiken om uw applicatie voor specifieke URL's op uw site aan te roepen.
U moet een regel aan het Apache-bestand
httpd.conf
toevoegen om Apache in te
stellen om verzoeken voor bepaalde URL's aan uw
webapplicatie door te geven:
Ruby on Rails is een ader opensource webraamwerk dat een volledige ontwikkelstack biedt en geoptimaliseerd is om webontwikkelaars productiever te maken en snel krachtige applicaties te laten ontwikkelen. Het kan eenvoudig vanuit het portssysteem geïnstalleerd worden.
#
cd /usr/ports/www/rubygem-rails; make all install clean
Het Apache/Perl integratieproject brengt de volledige kracht van de programmeertaal Perl en de Apache HTTP Server samen. Met de module mod_perl2 is het mogelijk om Apache-modules volledig in Perl te schrijven. Daarnaast voorkomt een ingebouwde persistente interpreter in de server de rompslomp van het starten van een externe interpreter en de nadelen van de opstarttijd van Perl.
mod_perl2 is beschikbaar in de port
www/mod_perl2
.
PHP, ook bekend als “PHP: Hypertext Preprocessor”, is een algemene scripttaal die bijzonder geschikt is voor webontwikkeling. Het is mogelijk de taal in te bedden in HTML en de syntaxis is afgeleid van C, Java™ en Perl met de bedoeling webontwikkelaars in staat te stellen om snel dynamisch samengestelde pagina's te schrijven.
Om ondersteuning voor PHP5 toe te
voegen aan de Apache webserver kan
eerst de port lang/php5
geïnstalleerd worden.
Als de port lang/php5
voor het eerst geïnstalleerd wordt, worden automatisch de
beschikbare OPTIONS
weergegeven. Als er
geen menu wordt weergegeven, omdat de port lang/php5
reeds in het verleden is
geïnstalleerd, is het altijd mogelijk om het optiedialoog
weer te laten verschijnen door
#
make config
uit te voeren in de map van de port.
Controleer in het optiedialoog dat de optie
APACHE
mod_php5
als een laadbare module voor de webserver
Apache bouwt.
Een heleboel sites draaien nog steeds
PHP4 om verschillende redenen
(compatibiliteitszaken of reeds in gebruik genomen
webapplicaties). Als mod_php4
nodig is in plaats van mod_php5,
gebruik dan de port lang/php4
. De port lang/php4
ondersteunt een groot
deel van de configuratie- en bouwopties van de port
lang/php5
.
Hiermee worden de modules die nodig zijn voor de
ondersteuning van dynamische
PHP-applicaties geïnstalleerd en
ingesteld. Controleer dat de volgende secties aan
/usr/local/etc/apache22/httpd.conf
zijn
toegevoegd:
Na voltooiing is een eenvoudige aanroep van het commando
apachectl
voor een nette herstart nodig om
de module PHP te laden:
#
apachectl graceful
Voor toekomstig bijwerken van PHP zal
het commando make config
niet nodig zijn;
de geselecteerde OPTIONS
worden automatisch
bewaard door het FreeBSD Ports raamwerk.
De ondersteuning voor PHP in FreeBSD is
extreem modulair waardoor de basisinstallatie zeer beperkt is.
Het is heel gemakkelijk om ondersteuning toe te voegen door de
port lang/php5-extensions
te gebruiken. Deze port biedt een menugestuurde interface voor
de installatie van PHP-uitbreidingen. Als
alternatief kunnen individuele uitbreidingen worden
geïnstalleerd door de juiste port te gebruiken.
Om bijvoorbeeld ondersteuning voor de
MySQL databaseserver aan
PHP5 toe te voegen kan gewoonweg de port
databases/php5-mysql
geïnstalleerd worden:
Na de installatie van een uitbreiding moet de Apache-server herladen worden om de nieuwe veranderingen in de configuratie op te pikken:
#
apachectl graceful