<?xml version="1.0" encoding="ISO-8859-15"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:content="http://purl.org/rss/1.0/modules/content/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
	<channel>
		<copyright>All rights reserved</copyright>
		<pubDate>Sat, 11 Oct 2008 22:05:56 GMT</pubDate>
		<lastBuildDate>Sat, 11 Oct 2008 22:05:56 GMT</lastBuildDate>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		<description>GoT - list_messages</description>
		<image>
			<link>http://gathering.tweakers.net</link>
			<title>Gathering of Tweakers</title>
			<url>http://tweakimg.net/g/if/logo.gif</url>
		</image>
		<language>nl-nl</language>
		<link>http://gathering.tweakers.net/rss/list_messages/849355</link>
		<atom:link href="http://gathering.tweakers.net/rss/list_messages/849355" rel="self" type="application/rss+xml" />
		<title>[Howto] Apache, PHP, MySQL, .htaccess &#38; Virtual Hosts - Windows Servers en Server-software - GoT</title>
		<webMaster>gathering@tweakers.net (Administrator)</webMaster>
		<item>
			<title>G33rt</title>
			<link>http://gathering.tweakers.net/forum/list_message/19509908?data%5Bsource%5D=rss#19509908</link>
			<author>dummy@example.com (G33rt)</author>
			<description>dinsdag 16 december 2003 21:58
HOWTO: Apache, PHP, MySQL, .htaccess &#38; Virtual HostsInleidingIk denk dat deze howto weinig uitleg nodig geeft, aangezien de titel bijna alles dekt. We gaan Apache 1.3.29, PHP 4.3.4 en MySQL 4.0.16 installeren, op een Windows machine. Nu hoor ik je al denken - waarom alleen windows? Simpel, omdat ik van mening ben dat als je al een linux server hebt dat je dan je weg naar de documentatie hebt kunnen vinden en je zelf voldoende geduld en doorzettingsvermogen hebt om het uit te zoeken. Overigens is dit niet bedoeld om alle windows-gebruikers over een kam te scheren. Er wordt uitgegaan van een Windows die op NT gebaseerd is (dwz XP of 2k).Een groot deel van het configuratiestuk is uiteraard wel van toepassing voor Linux of Unix gebruikers, aangezien dat over Apache configuratie in het algemeen gaat.&#8249; &#183;^VereistenEen computer. Dit zou je niet verwachten, maar het is echt waar Apache, in dit geval 1.3.29, hier te halenPHP, in ons geval 4.3.4, hier te vindenMySQL, in deze howto 4.0.16, hier te downloadenUiteraard verdient het aanbeveling te laatste stable versies te nemen. Tevens kan je ook nieuwere versies nemen, alleen zijn die op dit moment niet beschikbaar. De 1.3 serie van Apache word gebruikt omdat die mijn persoonlijke voorkeur heeft. De systeemeisen voor een dergelijk systeem zijn erg laagdrempeling, ik draai al tijden Apache op een Pentium-90.Deze howto gaat uit van de installer van Apache 1.3.29 (apache_1.3.29-win32-x86-no_src.exe; 5.29 MB), de installer van PHP 4.3.4 (php-4.3.4-installer.exe; 1.01MB) en de zip file van MySQL 4.0.16 (mysql-4.0.16-win.zip; 22.7 MB)&#8249; &#183;^InstallerenGoed, we gaan installeren, te beginnen met Apache. Start de installer:Fig. 1:en druk uiteraard op next, waarna je de EULA accepteert. Klik nog een keer op next bij de informatie over apache, en nu komen we pas ergens. Als het goed is zie je nu het volgende scherm:Fig. 2:Vul de waarden die voor jou van toepassing zijn in. Let wel dat een domein invoeren als je geen domein hebt absoluut geen nut heeft, evenals de servername. Je bent echter wel verplicht dit in te vullen, dus doe er wat leuks mee. Een gratis domein kan je altijd halen bij no-ip.com. Een emailadres is wel weer nuttig, aangezien dit ook zal verschijnen op error documents. De waarden zijn later te wijzigen, daar hoef je je geen zorgen over te maken. Vink aan dat Apache als een service start, dit heeft als voordeel dat Apache ook doordraait als je uitlogt, en start als je nog niet ingelogt bent (wat wel zo praktisch is op een server). Klik nu op next, en kies voor een custom installatie. Je zult nu het volgende scherm zien:Fig. 3:Je bent uiteraard vrij om te installeren waar je wilt. In deze howto gebruik ik echter C:\apache. Let daar dus op als je later gaat configureren. Kies ook dat alles geinstalleerd word op de harde schijf. Druk nu op install. Je hebt Apache nu geinstalleerd.Het volgende dat we zullen gaan installeren is PHP. Start de installer, en klik door tot je je eerste keuze moet maken:Fig. 4:Kies voor een advanced installatie, en installeer PHP in C:\PHP. Let ook hier op als je dit veranderd, in de rest van de howto zal ik C:\PHP blijven gebruiken. Vervolgens is het wel handig om een backup aan te vinken, aangezien je dan kan roll-backen. In de directory ben je uiteraard vrij, ik laat hem echter op de standaard staan (C:\PHP\BACKUP). Wat nu je moet gaan kiezen is een map voor tijdelijke upload bestanden. PHP kan attachments uploaden met forms, en zal dus ergens tijdelijk files moeten storen. Ook deze setting laat ik op de standaard staan. evenals de setting voor de sessiondata. Fig. 5:PHP kent ook een mail functie (iedereen die ooit zijn password heeft laten mailen op GoT of de FrontPage is er wel eens mee in aanraking gekomen). Wat je hier moet instellen is de SMTP server en het mailadres. Je kunt ze gewoon op localhost en je eigen emailadres laten staan, het zal prima functioneren. Vul uiteraard wel een mailadres in als je enigzins netjes wil overkomen.In het volgende scherm moet je de befaamde error reporting aanzetten. Laat hem op de standaard optie staan (all errors, warnings and notices - E_ALL in php.ini), voor meer informatie hierover is het verstandig de P&#38;W FAQ te lezen. Hierna moet je de server kiezen - dit lijkt me ietwat triviaal. Kies voor Apache. De extensions kun je zelf kiezen, phtml en php3 zul je in de praktijk echter heel weinig tegekomen. Je bent nu klaar met instellen, kies next. Je zult een waarschuwing krijgen dat Apache niet auto-configured wordt. Dit is normaal, we zullen straks handmatig Apache instellen voor PHP.Nu zijn we klaar om MySQL te installeren. Pak de zip ergens uit, en start setup.exe. Lees vooral even de releasenotes waarin o.a. dit staat:NOTE: If you install MySQL in a folder other thanC:\MYSQL or you intend to start MySQL on NT/Win2000as a service, you must create a file named C:\MY.CNFor \Windows\my.ini or \winnt\my.ini with the followinginformation::[mysqld]basedir=E:/installation-path/datadir=E:/data-path/Houd hier dus rekening mee indien je dit veranderd. Wij zullen dat echter niet doen. Kies in het volgende scherm dus ook next, en start ook hier weer een custom install:Fig. 6:Het verdient aanbeveling alles te installeren, dan heb je de documentatie bij de hand, en zoveel ruimte neemt het niet in beslag. Klik op next en daarna op finish. Je hebt nu MySQL geinstalleerd.&#8249; &#183;^ConfigurerenWe gaan nu alles configureren. Draai eerst even:Start &#62; Uitvoeren &#62; Services.msckijk nu of de Apache service ertussen staat, en of deze gestart is. Indien hij er niet tussen staat raad ik aan om Apache overnieuw te installeren, en aan te vinken dat het als een service moet draaien.Open nu je browser en ga naar localhost. Je zou nu de volgende pagina moeten zien:Fig. 7:Krijg je deze pagina niet raad ik je aan om even goed te kijken of je alle installatiestappen netjes hebt doorlopen. We gaan er echter vanuit dat het wel werkt.Ga in je filemanager naar C:\Apache\Apache\conf, en open httpd.conf. We gaan ouderwets configuratiepagina's bewerken, een GUI is er hier niet bij (afgezien van die van je editor natuurlijk). Open httpd.conf - je hoeft hier geen backup van te maken als hij nog nieuw is, er is ook een httpd.conf.defaultLet vooral even op dit stuk bovenaan in de comments: # Configuration and logfile names: If the filenames you specify for many# of the server's control files begin with "/" (or "drive:/" for Win32), the# server will use that explicit path.  If the filenames do *not* begin# with "/", the value of ServerRoot is prepended -- so "logs/foo.log"# with ServerRoot set to "/usr/local/apache" will be interpreted by the# server as "/usr/local/apache/logs/foo.log".en houd er rekening mee als je aliases gaat maken.We zullen nu httpd.conf even relevantie optie voor relevantie optie doorlopen om apache in te stellen aan je wensen. Indien ik ineens een optie oversla, is hij dus niet relevant (bijvoorbeeld het ServerType, lees de comment erbij maar eens) voor een werkende installatie.Stel## Timeout: The number of seconds before receives and sends time out.#Timeout 300in op een enigszins reele waarde. Als je veel bezoekers krijgt is het niet slim om een hoge timeout in te stellen, aangezien er dan vanalles bij apache blijft hangen. Een timeout van 30 seconden kan prima. Voor je eigen server kan je hem gerust op 300 laten staan.We gaan nu Section 2 - Main Server Configuration in. De eerste optie die je tegen zult komen isPort 80en meteen een belangrijke. Dit is de poort waarop de webserver gaat draaien. Weet je niet wat een poort is, raad ik je aan even de NT FAQ door te kijken en google te gebruiken. Poort 80 is standaard voor webservers, dus als je geen :1337 achter je url wil plakken (als je je port op 1337 zet), is dit wel de verstandigste optie. Let er wel op dat sommige providers het niet lief vinden als je webservers gaat lopen draaien (voor meer informatie verwijs ik je uiteraard naar de algemene voorwaarden), kan het wenselijk zijn de port naar een ander getal te veranderen. Aangezien port 80 de standaard webserver port is is er een reele kans dat er op deze port gelet wordt.Nu komen we aan bij een optie, waar al een waarde staat die je zelf hebt ingevuld:ServerAdmin g33rt@mytweakers.netDit is het e-mail adres van de administrator die je tijdens de installatie hebt ingevoerd. Stel hem wel enigzins netjes in, aangezien hij op alle error documents verschijnt.De eerst volgende belangrijke optie is ServerName:ServerName 127.0.0.1Lees de comment, en je snapt waar het over gaat. Als je dus geen domeinnaam hebt moet je je IP invullen, daar komt het op neer. Uiteraard heb ik mijn servername even weggehaald. Vul niet voor de grap een hostname in, dat wordt erg irritant later. Als je wilt gaan devven is 127.0.0.1 een handige optie.De belangrijke opties zijn niet van de lucht:DocumentRoot "C:/Apache/Apache/htdocs"Dit is de map van waaruit de documenten geserveerd worden. Als je hier een index.html plaatst zal die dus op http://localhost te zien zijn, aangezien dit ook de root is.Twee opties later zie je## This should be changed to whatever you set DocumentRoot to.#Het moge duidelijk zijn wat je met deze optie dient te doen.Indien je met .htaccess bestanden opties per directory wilt gaan instellen is het slim om bij# This controls which options the .htaccess files in directories can# override. Can also be "All", or any combination of "Options", "FileInfo", # "AuthConfig", and "Limit"#    AllowOverride NoneAll in te stellen. Deze optie staat in de Directory tag van je documentroot (die optie die ingesteld moest worden op de waarde van je DocumentRoot).Als we nu een stuk verderop kijken zien we de volgende optie staan:UseCanonicalName OnDeze is precies waarom je absoluut niet grappig moet gaan doen met je hostname als deze op 'yes' staat. Bekijk de comment maar, en trek je conclusies. Iets als ../index.html zal door Apache de ServerName en de relevante map worden voorgeplakt als deze op Yes staat. En dat werkt dus niet als je ServerName niet bestaat.Mocht je meer opties voor je server willen aanpassen, raad ik je aan httpd.conf goed door te kijken. Later zullen .htaccess en virtual hosts nog besproken worden.Sla je httpd.conf op, maar sluit hem nog niet. We gaan nu relevante dingen voor PHP erin zetten.Er zijn twee manieren om PHP te laten samenwerken met Apache. Een is php.exe, de ander is een dll. Ik kies zelf ervoor om php.exe te gebruiken. Er zijn voor php.exe enkele exploits. Deze exploits zijn echter te voorkomen door in C:\windows\php.ini het volgende aan te passen:; cgi.force_redirect is necessary to provide security running PHP as a CGI under; most web servers.  Left undefined, PHP turns this on by default.  You can; turn it off here AT YOUR OWN RISK; **You CAN safely turn this off for IIS, in fact, you MUST.** cgi.force_redirect = 1Het idee is dus om de ; voor de laatste regel weg te halen. Nu ben je tegen de exploits beveiligd. We gaan nu weer terug naar httpd.conf. Plak, liefst onderaan - voor het overzicht, met een commentje erboven zodat je weet wat voor setting het is, de volgende regels: ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php  Action application/x-httpd-php "/php/php.exe"En nu weet Apache wat er met .php documenten gedaan dient te worden. Echter, het is ook wenselijk om bijvoorbeeld een index.php pagina te laten functioneren als een html pagina. Zoek daarvoor in httpd.conf op 'DirectoryIndex', en maak er het volgende van:    DirectoryIndex index.html index.phpWaarna Apache index.php als DirectoryIndex beschouwt, en /hoi/index.php automagisch geladen word als /hoi opgevraagt wordt. Let er wel op dat bij Dynamic Shared Object (DSO) Support er een module geladen moet zijn, te weten mod_dir.c&#8249; &#183;^MySQL configuratieWe gaan nu verder met het configureren van MySQL. Open een notepad en tik het volgende:[mysqld]# set basedir to your installation pathbasedir=C:/mysql# set datadir to the location of your data directorydatadir=C:/mysql/dataUiteraard moet je je eigen waarden meegeven als deze anders zijn. Sla het document op als C:\windows\my.ini (waarbij windows je windows map is). Open nu C:\mysql\bin\winmysqladmin.exe, je zult als het goed is het volgende scherm zien:Fig. 8:Voer hier een username en een wachtwoord in, dit zijn de waarden voor de mysql root gebruiker. Als het goed is verschijnt er na het drukken op OK een groen stoplichtje in je systemtray. Je zult nu ook als je erop rechtsklikt en 'show me' doet waarna je naar de my.ini tab gaat je my.ini instellingen zien, inclusief de user en wachtwoord dat je net invoerde. Open nu een prompt en tik:cd C:\mysql\binTik nu het volgende om MySQL als service te installeren:C:\mysql\bin&#62;mysqld --installAls dit verschijnt:The service already exists!The current server installed: C:/mysql/bin/mysqld-nt.exedan is er al een MySQL service. Kijk ter controle weer in services.msc. Mocht je de service willen verwijderen dan kan dat met de --remove switch.&#8249; &#183;^ControleControleer nu beide installaties met:Als het goed is zie je ook MySQL informatie. Indien het niet werkt: loop weer netjes alle stappen na.Zijn na een reboot ineens Apache en/of MySQL uitgevallen? Kijk in services.msc of ze wel automatisch gestart worden&#8249; &#183;^.htaccessWat is een .htaccess bestand nou weer? Je kunt er gewoon allerlei handige dingen mee doen - dat is .htaccess vind ik. Zie het als een handige aanvullen op httpd.conf. Overigens heet het bestand altijd .htaccess, htaccess is de extensie. Aangepaste error documentsJe kunt aangepaste error messages (404: page not found bijvoorbeeld) maken met .htaccess. In het algemeen werken ze als: ErrorDocument codenummer /bestandje Een overzicht van de errorcodes die Apache kent:Successful Client Requests200OK201Created202Accepted203Non-Authorative Information204No Content205Reset Content206Partial ContentClient Request Redirected300Multiple Choices301Moved Permanently302Moved Temporarily303See Other304Not Modified305Use ProxyClient Request Errors400Bad Request401Authorization Required402Payment Required (not used yet)403Forbidden404Not Found405Method Not Allowed406Not Acceptable (encoding)407Proxy Authentication Required408Request Timed Out409Conflicting Request410Gone411Content Length Required412Precondition Failed413Request Entity Too Long414Request URI Too Long415Unsupported Media TypeServer Errors500Internal Server Error501Not Implemented502Bad Gateway  503Service Unavailable 504Gateway Timeout  505HTTP Version Not SupportedJe kunt dus per error je eigen message opgeven, bijvoorbeeld door een van de onderstaande regels te gebruiken, je kan er zelfs html in nestelen:ErrorDocument 404 /foutje/foetsie.htmlErrorDocument 404 "Is er niet!"ErrorDocument 404 "Weg"WachtwoordenJe kunt met .htaccess hele handige wachtwoord veldjes maken, en wel op de volgende manier:AuthUserFile c:/niet/bereikbaar/via/web/.htpasswdAuthName Voer je wachtwoord inAuthType Basicrequire valid-userHiermee wordt aangegeven dat de user en wachtwoord informatie uit een niet via de webserver te lezen .htpasswd bestand komt. Met AuthName geef je de naam van het wachtwoordvenster aan, en AuthType basic stelt in dat we het hebben over HTTP authenticatie. In het .htpasswd bestandje worden users en passwords opgeslagen met user:password. Je kunt dit handige tooltje gebruiken om de wachtwoorden op de juiste manier te encrypten.Users weigeren op IPOok kan je met .htaccess users weigeren op hun IP, net zoals je dat in het algemeen kan doen in httpd.conf. Nu kan je het echter per directory doen, wat handig is als je een of andere pagina hebt die mensen niet mogen lezen. Je kunt dan bijvoorbeeld alle externe IP's weigeren en .htpasswd gebruiken. Het werkt als volgt:order deny,allowdeny from allallow from 192.168.1.In dit geval wordt er dus eerst geblokkeerd - alles dus - waarna je er wel in mag. Wat hier dus toegstaan is zijn alle IP's zijn die beginnen met 192.168.1Aangepaste indicesHerinner je je de optie DirectoryIndex uit httpd.conf nog? Wel, exact dezelfde optie kan je dus ook per directory gebruiken door het in een .htaccess te zetten:DirectoryIndex hoi.htmlNu wordt hoi.html dus een index voor deze ene map, wat erg handig is, aangezien je het per map kan doen. Zoals je nu ongetwijfeld al doorhebt geeft .htaccess je heel veel handige mogelijkheden.Automatisch redirectenWat ook al met .htaccess kan (zoals ik al zei - je kan er heel veel mee) is het automatisch redirecten naar een pagina als een andere pagina wordt opgevraagd. Dit werkt simpelweg met:Redirect oudepagina nieuwepaginaDit is ook toepasbaar op hele mappen door oudemap en nieuwemap te gebruiken..htaccess blokkerenJe wilt natuurlijk niet dat mensen even vrolijk je .htaccess gaan uitlezen om te zien wat jij allemaal wel niet hebt ingesteld. Daarom blokkeren we hem:order allow,denydeny from allNu levert .htaccess een 403 op. Wat ook kan op Linux systemen is een chmod 644.Directory lists blokkerenOok kan je met .htaccess het listen van mappen blokkeren met IndexIgnore:IndexIgnore *Met bovenstaande instelling mag er geen enkel type bestand gelist worden. Je kan hetzelfde doen met bijvoorbeeld *.jpg.MIME typesWeet je nog dat we een regel met AddType toevoegden aan httpd.conf? Zoiets kan ook met .htaccess, bijvoorbeeld zo:AddType application/x-shockwave-flash swfLet er uiteraard wel op dat je het goed doet, anders heb je er niets aan&#8249; &#183;^Virtual HostsJe hebt je vast wel eens afgevraagd hoe je nou meerdere sites kan hosten met een instantie van Apache. Welnu, dat is relatief eenvoudig - de oplossing zijn zogenaamde Virtual Hosts. Een virtual host is niets anders dan een instelling voor Apache dat hij op meerdere hosts gaat luisteren. Onderaan je httpd.conf staat bijvoorbeeld dit voorbeeld:# VirtualHost example:# Almost any Apache directive may go into a VirtualHost container.# The first VirtualHost section is used for requests without a known# server name.###    ServerAdmin webmaster@dummy-host.example.com#    DocumentRoot /www/docs/dummy-host.example.com#    ServerName dummy-host.example.com#    ErrorLog logs/dummy-host.example.com-error_log#    CustomLog logs/dummy-host.example.com-access_log common#Je kan met een Virtual Host dus ServerAdmin, ServerName, DocumentRoot, ErrorLog en TransferLog of CustomLog instellen voor elke host. Als je bijvoorbeeld dit zou doen:     ServerAdmin g33rt@maffehost    DocumentRoot c:/apache/apache/maffehost    ServerName 123.45.156.98    ErrorLog logs/maffehost_error    CustomLog logs/maffehost_access commondan ben je aan het serveren voor de host 123.45.156.98 met poort 1200. De overige dingen spreken natuurlijk voor zich. Zo word bijvoorbeeld GoT geserveert met &#62;VirtualHost gathering.tweakers.net:80&#62; en een aangepaste documentroot. Het kan ook gecompliceerder. Stel, je hebt een IP w.x.y.z, en 2 domeinen: www.sub.domein.org en www.domein.org, en je wilt twee verschillende sites op het domein en het subdomein. Dat zou je nu als volgt oplossen:    Port 80    ServerName server.domain.org    NameVirtualHost w.x.y.z         DocumentRoot /www/domein    ServerName www.domein.org    ...                DocumentRoot /www/subdomain    ServerName www.sub.domein.org    ...    Het moge nu duidelijk zijn hoe je creatief met vhosts kan gaan &#8249; &#183;^Thanks to Deze howto is geschreven door Geert-Jan, beter bekend als G33rtOp- of aanmerkingen, en suggesties kunnen worden doorgegeven aan de SA moderators &#8249; &#183;^Lijst met figuren Figuur 1: start de installer Figuur 2: de eerste instellingen Figuur 3: wat te installeren, en waar Figuur 4: het installatietype van PHP kiezen Figuur 5: de SMTP server instellen voor PHP Figuur 6: onderdelen van MySQL kiezen Figuur 7: een apache test pagina Figuur 8: WinMySQLAdmin voor de eerste keer &#8249; &#183;^Inhoudsopgave 1: Inleiding 2: Vereisten 3: Installeren 4: Configureren 5: MySQL configuratie 6: Controle 7: .htaccess 8: Virtual Hosts 9: Thanks to 10: Lijst met figuren 11: Inhoudsopgave 



</description>
			<content:encoded><![CDATA[dinsdag 16 december 2003 21:58<br />
<a name="top"></a><div class="nav"></div><link rel="stylesheet" href="http://faq.tweakers.net/faq.css" /><div class="faq"><h1><a name="title"></a>HOWTO: Apache, PHP, MySQL, .htaccess & Virtual Hosts</h1><br /><a name="inleiding"></a><h2>Inleiding</h2><p>Ik denk dat deze howto weinig uitleg nodig geeft, aangezien de titel bijna alles dekt. We gaan Apache 1.3.29, PHP 4.3.4 en MySQL 4.0.16 installeren, op een Windows machine. Nu hoor ik je al denken - waarom alleen windows? Simpel, omdat ik van mening ben dat als je al een linux server hebt dat je dan je weg naar de documentatie hebt kunnen vinden en je zelf voldoende geduld en doorzettingsvermogen hebt om het uit te zoeken. Overigens is dit niet bedoeld om alle windows-gebruikers over een kam te scheren. Er wordt uitgegaan van een Windows die op NT gebaseerd is (dwz XP of 2k).<br /><br />Een groot deel van het configuratiestuk is uiteraard wel van toepassing voor Linux of Unix gebruikers, aangezien dat over Apache configuratie in het algemeen gaat.</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#vereist" title="Dit kopje" name="vereist">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Vereisten</h2><ul><li>Een computer. Dit zou je niet verwachten, maar het is echt waar <img src="http://gathering.tweakers.net/global/smileys/clown.gif" width="15"  height="15" alt=":+" class="smiley" ></li><li>Apache, in dit geval 1.3.29, <a href="http://httpd.apache.org/download.cgi">hier</a> te halen<br /></li><li>PHP, in ons geval 4.3.4, <a href="http://www.php.net/downloads.php">hier</a> te vinden<br /></li><li>MySQL, in deze howto 4.0.16, <a href="http://www.mysql.com/downloads">hier</a> te downloaden</li></ul><p>Uiteraard verdient het aanbeveling te laatste stable versies te nemen. Tevens kan je ook nieuwere versies nemen, alleen zijn die op dit moment niet beschikbaar. De 1.3 serie van Apache word gebruikt omdat die mijn persoonlijke voorkeur heeft. De systeemeisen voor een dergelijk systeem zijn erg laagdrempeling, ik draai al tijden Apache op een Pentium-90.<br /><br />Deze howto gaat uit van de installer van Apache 1.3.29 (apache_1.3.29-win32-x86-no_src.exe; 5.29 MB), de installer van PHP 4.3.4 (php-4.3.4-installer.exe; 1.01MB) en de zip file van MySQL 4.0.16 (mysql-4.0.16-win.zip; 22.7 MB)</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#install" title="Dit kopje" name="install">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Installeren</h2><p>Goed, we gaan installeren, te beginnen met Apache. Start de installer:</p><p class="img" id="fig1">Fig. 1:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/startinstall.JPG" alt="start de installer" /></p><p>en druk uiteraard op next, waarna je de EULA accepteert. Klik nog een keer op next bij de informatie over apache, en nu komen we pas ergens. Als het goed is zie je nu het volgende scherm:</p><p class="img" id="fig2">Fig. 2:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/install.JPG" alt="de eerste instellingen" /></p><p>Vul de waarden die voor jou van toepassing zijn in. Let wel dat een domein invoeren als je geen domein hebt absoluut geen nut heeft, evenals de servername. Je bent echter wel verplicht dit in te vullen, dus doe er wat leuks mee. Een gratis domein kan je altijd halen bij no-ip.com. Een emailadres is wel weer nuttig, aangezien dit ook zal verschijnen op error documents. De waarden zijn later te wijzigen, daar hoef je je geen zorgen over te maken. <br /><br />Vink aan dat Apache als een service start, dit heeft als voordeel dat Apache ook doordraait als je uitlogt, en start als je nog niet ingelogt bent (wat wel zo praktisch is op een server). Klik nu op next, en kies voor een custom installatie. Je zult nu het volgende scherm zien:</p><p class="img" id="fig3">Fig. 3:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/apache_whatwhere.JPG" alt="wat te installeren, en waar" /></p><p>Je bent uiteraard vrij om te installeren waar je wilt. In deze howto gebruik ik echter C:\apache. Let daar dus op als je later gaat configureren. Kies ook dat alles geinstalleerd word op de harde schijf. Druk nu op install. Je hebt Apache nu geinstalleerd.<br /><br />Het volgende dat we zullen gaan installeren is PHP. Start de installer, en klik door tot je je eerste keuze moet maken:</p><p class="img" id="fig4">Fig. 4:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/php_keuze.JPG" alt="het installatietype van PHP kiezen" /></p><p>Kies voor een advanced installatie, en installeer PHP in C:\PHP. Let ook hier op als je dit veranderd, in de rest van de howto zal ik C:\PHP blijven gebruiken. Vervolgens is het wel handig om een backup aan te vinken, aangezien je dan kan roll-backen. In de directory ben je uiteraard vrij, ik laat hem echter op de standaard staan (C:\PHP\BACKUP). <br /><br />Wat nu je moet gaan kiezen is een map voor tijdelijke upload bestanden. PHP kan attachments uploaden met forms, en zal dus ergens tijdelijk files moeten storen. Ook deze setting laat ik op de standaard staan. evenals de setting voor de sessiondata. </p><p class="img" id="fig5">Fig. 5:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/php_smtp.JPG" alt="de SMTP server instellen voor PHP" /></p><p>PHP kent ook een mail functie (iedereen die ooit zijn password heeft laten mailen op GoT of de FrontPage is er wel eens mee in aanraking gekomen). Wat je hier moet instellen is de SMTP server en het mailadres. Je kunt ze gewoon op localhost en je eigen emailadres laten staan, het zal prima functioneren. Vul uiteraard wel een mailadres in als je enigzins netjes wil overkomen.<br /><br />In het volgende scherm moet je de befaamde error reporting aanzetten. Laat hem op de standaard optie staan (all errors, warnings and notices - E_ALL in php.ini), voor meer informatie hierover is het verstandig <a href="http://gathering.tweakers.net/forum/list_messages/741007#faq2">de P&W FAQ</a> te lezen. <br /><br />Hierna moet je de server kiezen - dit lijkt me ietwat triviaal. Kies voor Apache. De extensions kun je zelf kiezen, phtml en php3 zul je in de praktijk echter heel weinig tegekomen. Je bent nu klaar met instellen, kies next. Je zult een waarschuwing krijgen dat Apache niet auto-configured wordt. Dit is normaal, we zullen straks handmatig Apache instellen voor PHP.<br /><br />Nu zijn we klaar om MySQL te installeren. Pak de zip ergens uit, en start setup.exe. Lees vooral even de releasenotes waarin o.a. dit staat:</p><blockquote><pre>NOTE: If you install MySQL in a folder other than<br />C:\MYSQL or you intend to start MySQL on NT/Win2000<br />as a service, you must create a file named C:\MY.CNF<br />or \Windows\my.ini or \winnt\my.ini with the following<br />information::<br /><br />[mysqld]basedir=E:/installation-path/<br />datadir=E:/data-path/</pre></blockquote><p>Houd hier dus rekening mee indien je dit veranderd. Wij zullen dat echter niet doen. Kies in het volgende scherm dus ook next, en start ook hier weer een custom install:</p><p class="img" id="fig6">Fig. 6:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/mysql_onderdeel.JPG" alt="onderdelen van MySQL kiezen" /></p><p>Het verdient aanbeveling alles te installeren, dan heb je de documentatie bij de hand, en zoveel ruimte neemt het niet in beslag. Klik op next en daarna op finish. Je hebt nu MySQL geinstalleerd.</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#config" title="Dit kopje" name="config">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Configureren</h2><p>We gaan nu alles configureren. Draai eerst even:</p><blockquote><pre>Start > Uitvoeren > Services.msc</pre></blockquote><p>kijk nu of de Apache service ertussen staat, en of deze gestart is. Indien hij er niet tussen staat raad ik aan om Apache overnieuw te installeren, en aan te vinken dat het als een service moet draaien.<br /><br />Open nu je browser en ga naar <a href="http://localhost">localhost</a>. Je zou nu de volgende pagina moeten zien:</p><p class="img" id="fig7">Fig. 7:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/apachewerkt.JPG" alt="een apache test pagina" /></p><p>Krijg je deze pagina niet raad ik je aan om even goed te kijken of je alle installatiestappen netjes hebt doorlopen. We gaan er echter vanuit dat het wel werkt.<br /><br />Ga in je filemanager naar C:\Apache\Apache\conf, en open httpd.conf. We gaan ouderwets configuratiepagina's bewerken, een GUI is er hier niet bij (afgezien van die van je editor natuurlijk). Open httpd.conf - je hoeft hier geen backup van te maken als hij nog nieuw is, er is ook een httpd.conf.default<br /><br />Let vooral even op dit stuk bovenaan in de comments:</p> <blockquote><pre># Configuration and logfile names: If the filenames you specify for many<br /># of the server's control files begin with "/" (or "drive:/" for Win32), the<br /># server will use that explicit path.  If the filenames do *not* begin<br /># with "/", the value of ServerRoot is prepended -- so "logs/foo.log"<br /># with ServerRoot set to "/usr/local/apache" will be interpreted by the<br /># server as "/usr/local/apache/logs/foo.log".</pre></blockquote><p>en houd er rekening mee als je aliases gaat maken.<br /><br />We zullen nu httpd.conf even relevantie optie voor relevantie optie doorlopen om apache in te stellen aan je wensen. Indien ik ineens een optie oversla, is hij dus niet relevant (bijvoorbeeld het ServerType, lees de comment erbij maar eens) voor een werkende installatie.<br /><br />Stel</p><blockquote><pre>#<br /># Timeout: The number of seconds before receives and sends time out.<br />#<br />Timeout 300</pre></blockquote><p>in op een enigszins reele waarde. Als je veel bezoekers krijgt is het niet slim om een hoge timeout in te stellen, aangezien er dan vanalles bij apache blijft hangen. Een timeout van 30 seconden kan prima. Voor je eigen server kan je hem gerust op 300 laten staan.<br /><br />We gaan nu Section 2 - Main Server Configuration in. De eerste optie die je tegen zult komen is</p><blockquote><pre>Port 80</pre></blockquote><p>en meteen een belangrijke. Dit is de poort waarop de webserver gaat draaien. Weet je niet wat een poort is, raad ik je aan even de NT FAQ door te kijken en google te gebruiken. Poort 80 is standaard voor webservers, dus als je geen :1337 achter je url wil plakken (als je je port op 1337 zet), is dit wel de verstandigste optie. Let er wel op dat sommige providers het niet lief vinden als je webservers gaat lopen draaien (voor meer informatie verwijs ik je uiteraard naar de algemene voorwaarden), kan het wenselijk zijn de port naar een ander getal te veranderen. Aangezien port 80 de standaard webserver port is is er een reele kans dat er op deze port gelet wordt.<br /><br />Nu komen we aan bij een optie, waar al een waarde staat die je zelf hebt ingevuld:</p><blockquote><pre>ServerAdmin g33rt@mytweakers.net</pre></blockquote><p>Dit is het e-mail adres van de administrator die je tijdens de installatie hebt ingevoerd. Stel hem wel enigzins netjes in, aangezien hij op alle error documents verschijnt.<br /><br />De eerst volgende belangrijke optie is ServerName:</p><blockquote><pre>ServerName 127.0.0.1</pre></blockquote><p>Lees de comment, en je snapt waar het over gaat. Als je dus geen domeinnaam hebt moet je je IP invullen, daar komt het op neer. Uiteraard heb ik mijn servername even weggehaald. Vul niet voor de grap een hostname in, dat wordt erg irritant later. Als je wilt gaan devven is 127.0.0.1 een handige optie.<br /><br />De belangrijke opties zijn niet van de lucht:</p><blockquote><pre>DocumentRoot "C:/Apache/Apache/htdocs"</pre></blockquote><p>Dit is de map van waaruit de documenten geserveerd worden. Als je hier een index.html plaatst zal die dus op http://localhost te zien zijn, aangezien dit ook de root is.<br /><br />Twee opties later zie je</p><blockquote><pre>#<br /># This should be changed to whatever you set DocumentRoot to.<br />#<br /><Directory "C:/Apache/Apache/htdocs"></pre></blockquote><p>Het moge duidelijk zijn wat je met deze optie dient te doen.<br /><br />Indien je met .htaccess bestanden opties per directory wilt gaan instellen is het slim om bij</p><blockquote><pre># This controls which options the .htaccess files in directories can<br /># override. Can also be "All", or any combination of "Options", "FileInfo", <br /># "AuthConfig", and "Limit"<br />#<br />    AllowOverride None</pre></blockquote><p>All in te stellen. Deze optie staat in de Directory tag van je documentroot (die optie die ingesteld moest worden op de waarde van je DocumentRoot).<br /><br />Als we nu een stuk verderop kijken zien we de volgende optie staan:</p><blockquote><pre>UseCanonicalName On</pre></blockquote><p>Deze is precies waarom je absoluut niet grappig moet gaan doen met je hostname als deze op 'yes' staat. Bekijk de comment maar, en trek je conclusies. Iets als ../index.html zal door Apache de ServerName en de relevante map worden voorgeplakt als deze op Yes staat. En dat werkt dus niet als je ServerName niet bestaat.<br /><br />Mocht je meer opties voor je server willen aanpassen, raad ik je aan httpd.conf goed door te kijken. Later zullen .htaccess en virtual hosts nog besproken worden.<br /><br />Sla je httpd.conf op, maar sluit hem nog niet. We gaan nu relevante dingen voor PHP erin zetten.<br /><br />Er zijn twee manieren om PHP te laten samenwerken met Apache. Een is php.exe, de ander is een dll. Ik kies zelf ervoor om php.exe te gebruiken. Er zijn voor php.exe enkele <a href="http://www.php.net/manual/en/security.cgi-bin.php">exploits</a>. Deze exploits zijn echter te voorkomen door in C:\windows\php.ini het volgende aan te passen:</p><blockquote><pre>; cgi.force_redirect is necessary to provide security running PHP as a CGI under<br />; most web servers.  Left undefined, PHP turns this on by default.  You can<br />; turn it off here AT YOUR OWN RISK<br />; **You CAN safely turn this off for IIS, in fact, you MUST.**<br /> cgi.force_redirect = 1</pre></blockquote><p>Het idee is dus om de ; voor de laatste regel weg te halen. Nu ben je tegen de exploits beveiligd. We gaan nu weer terug naar httpd.conf. Plak, liefst onderaan - voor het overzicht, met een commentje erboven zodat je weet wat voor setting het is, de volgende regels:</p><blockquote><pre> ScriptAlias /php/ "c:/php/"<br /> AddType application/x-httpd-php .php <br /> Action application/x-httpd-php "/php/php.exe"</pre></blockquote><p>En nu weet Apache wat er met .php documenten gedaan dient te worden. Echter, het is ook wenselijk om bijvoorbeeld een index.php pagina te laten functioneren als een html pagina. Zoek daarvoor in httpd.conf op 'DirectoryIndex', en maak er het volgende van:</p><blockquote><pre><IfModule mod_dir.c><br />    DirectoryIndex index.html index.php<br /></IfModule></pre></blockquote><p>Waarna Apache index.php als DirectoryIndex beschouwt, en /hoi/index.php automagisch geladen word als /hoi opgevraagt wordt. Let er wel op dat bij Dynamic Shared Object (DSO) Support er een module geladen moet zijn, te weten mod_dir.c</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#mysql" title="Dit kopje" name="mysql">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>MySQL configuratie</h2><p>We gaan nu verder met het configureren van MySQL. Open een notepad en tik het volgende:</p><blockquote><pre>[mysqld]# set basedir to your installation path<br />basedir=C:/mysql<br /># set datadir to the location of your data directory<br />datadir=C:/mysql/data</pre></blockquote><p>Uiteraard moet je je eigen waarden meegeven als deze anders zijn. Sla het document op als C:\windows\my.ini (waarbij windows je windows map is). <br /><br />Open nu C:\mysql\bin\winmysqladmin.exe, je zult als het goed is het volgende scherm zien:</p><p class="img" id="fig8">Fig. 8:<br /><img border="0" src="http://faq.tweakers.net/sa/howto/apache/myadmin.JPG" alt="WinMySQLAdmin voor de eerste keer" /></p><p>Voer hier een username en een wachtwoord in, dit zijn de waarden voor de mysql root gebruiker. Als het goed is verschijnt er na het drukken op OK een groen stoplichtje in je systemtray. Je zult nu ook als je erop rechtsklikt en 'show me' doet waarna je naar de my.ini tab gaat je my.ini instellingen zien, inclusief de user en wachtwoord dat je net invoerde. <br /><br />Open nu een prompt en tik:</p><blockquote><pre>cd C:\mysql\bin</pre></blockquote><p>Tik nu het volgende om MySQL als service te installeren:</p><blockquote><pre>C:\mysql\bin>mysqld --install</pre></blockquote><p>Als dit verschijnt:</p><blockquote><pre>The service already exists!<br />The current server installed: C:/mysql/bin/mysqld-nt.exe</pre></blockquote><p>dan is er al een MySQL service. Kijk ter controle weer in services.msc. Mocht je de service willen verwijderen dan kan dat met de --remove switch.</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#control" title="Dit kopje" name="control">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Controle</h2><p>Controleer nu beide installaties met:</p><blockquote><pre><?<br />phpinfo();<br />?></pre></blockquote><p>Als het goed is zie je ook MySQL informatie. Indien het niet werkt: loop weer netjes alle stappen na.<br /><br />Zijn na een reboot ineens Apache en/of MySQL uitgevallen? Kijk in services.msc of ze wel automatisch gestart worden</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#htaccess" title="Dit kopje" name="htaccess">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>.htaccess</h2><p>Wat is een .htaccess bestand nou weer? Je kunt er gewoon allerlei handige dingen mee doen - dat is .htaccess vind ik. Zie het als een handige aanvullen op httpd.conf. Overigens heet het bestand altijd .htaccess, htaccess <i>is</i> de extensie. </p><ul><li><b>Aangepaste error documents</b></li></ul><p>Je kunt aangepaste error messages (404: page not found bijvoorbeeld) maken met .htaccess. In het algemeen werken ze als: </p><blockquote><pre>ErrorDocument codenummer /bestandje </pre></blockquote><p>Een overzicht van de errorcodes die Apache kent:</p><table ><tr><td colspan=""2"">Successful Client Requests</td></tr><tr><td >200</td><td >OK</td></tr><tr><td >201</td><td >Created</td></tr><tr><td >202</td><td >Accepted</td></tr><tr><td >203</td><td >Non-Authorative Information</td></tr><tr><td >204</td><td >No Content</td></tr><tr><td >205</td><td >Reset Content</td></tr><tr><td >206</td><td >Partial Content</td></tr><tr><td colspan=""2"">Client Request Redirected</td></tr><tr><td >300</td><td >Multiple Choices</td></tr><tr><td >301</td><td >Moved Permanently</td></tr><tr><td >302</td><td >Moved Temporarily</td></tr><tr><td >303</td><td >See Other</td></tr><tr><td >304</td><td >Not Modified</td></tr><tr><td >305</td><td >Use Proxy</td></tr><tr><td colspan=""2"">Client Request Errors</td></tr><tr><td >400</td><td >Bad Request</td></tr><tr><td >401</td><td >Authorization Required</td></tr><tr><td >402</td><td >Payment Required (not used yet)</td></tr><tr><td >403</td><td >Forbidden</td></tr><tr><td >404</td><td >Not Found</td></tr><tr><td >405</td><td >Method Not Allowed</td></tr><tr><td >406</td><td >Not Acceptable (encoding)</td></tr><tr><td >407</td><td >Proxy Authentication Required</td></tr><tr><td >408</td><td >Request Timed Out</td></tr><tr><td >409</td><td >Conflicting Request</td></tr><tr><td >410</td><td >Gone</td></tr><tr><td >411</td><td >Content Length Required</td></tr><tr><td >412</td><td >Precondition Failed</td></tr><tr><td >413</td><td >Request Entity Too Long</td></tr><tr><td >414</td><td >Request URI Too Long</td></tr><tr><td >415</td><td >Unsupported Media Type</td></tr><tr><td colspan=""2"">Server Errors</td></tr><tr><td >500</td><td >Internal Server Error</td></tr><tr><td >501</td><td >Not Implemented</td></tr><tr><td >502</td><td >Bad Gateway </td> </tr><tr><td >503</td><td >Service Unavailable </td></tr><tr><td >504</td><td >Gateway Timeout </td> </tr><tr><td >505</td><td >HTTP Version Not Supported</td></tr></table><p>Je kunt dus per error je eigen message opgeven, bijvoorbeeld door een van de onderstaande regels te gebruiken, je kan er zelfs html in nestelen:</p><blockquote><pre>ErrorDocument 404 /foutje/foetsie.html<br />ErrorDocument 404 "Is er niet!"<br />ErrorDocument 404 "<font color=red>Weg</font>"</pre></blockquote><ul><li><b>Wachtwoorden</b></li></ul><p>Je kunt met .htaccess hele handige wachtwoord veldjes maken, en wel op de volgende manier:</p><blockquote><pre>AuthUserFile c:/niet/bereikbaar/via/web/.htpasswd<br />AuthName Voer je wachtwoord in<br />AuthType Basic<br />require valid-user</pre></blockquote><p>Hiermee wordt aangegeven dat de user en wachtwoord informatie uit een niet via de webserver te lezen .htpasswd bestand komt. Met AuthName geef je de naam van het wachtwoordvenster aan, en AuthType basic stelt in dat we het hebben over HTTP authenticatie. In het .htpasswd bestandje worden users en passwords opgeslagen met user:password. Je kunt <a href="http://www.euronet.nl/~arnow/htpasswd/">dit handige tooltje</a> gebruiken om de wachtwoorden op de juiste manier te encrypten.</p><ul><li><b>Users weigeren op IP</b></li></ul><p>Ook kan je met .htaccess users weigeren op hun IP, net zoals je dat in het algemeen kan doen in httpd.conf. Nu kan je het echter per directory doen, wat handig is als je een of andere pagina hebt die mensen niet mogen lezen. Je kunt dan bijvoorbeeld alle externe IP's weigeren en .htpasswd gebruiken. <br /><br />Het werkt als volgt:</p><blockquote><pre>order deny,allow<br />deny from all<br />allow from 192.168.1.</pre></blockquote><p>In dit geval wordt er dus eerst geblokkeerd - alles dus - waarna je er wel in mag. Wat hier dus toegstaan is zijn alle IP's zijn die beginnen met 192.168.1</p><ul><li><b>Aangepaste indices</b></li></ul><p>Herinner je je de optie DirectoryIndex uit httpd.conf nog? Wel, exact dezelfde optie kan je dus ook per directory gebruiken door het in een .htaccess te zetten:</p><blockquote><pre>DirectoryIndex hoi.html</pre></blockquote><p>Nu wordt hoi.html dus een index voor deze ene map, wat erg handig is, aangezien je het per map kan doen. Zoals je nu ongetwijfeld al doorhebt geeft .htaccess je heel veel handige mogelijkheden.</p><ul><li><b>Automatisch redirecten</b></li></ul><p>Wat ook al met .htaccess kan (zoals ik al zei - je kan er heel veel mee) is het automatisch redirecten naar een pagina als een andere pagina wordt opgevraagd. Dit werkt simpelweg met:</p><blockquote><pre>Redirect oudepagina nieuwepagina</pre></blockquote><p>Dit is ook toepasbaar op hele mappen door oudemap en nieuwemap te gebruiken.</p><ul><li><b>.htaccess blokkeren</b></li></ul><p>Je wilt natuurlijk niet dat mensen even vrolijk je .htaccess gaan uitlezen om te zien wat jij allemaal wel niet hebt ingesteld. Daarom blokkeren we hem:</p><blockquote><pre><Files .htaccess><br />order allow,deny<br />deny from all<br /></Files></pre></blockquote><p>Nu levert .htaccess een 403 op. Wat ook kan op Linux systemen is een chmod 644.</p><ul><li><b>Directory lists blokkeren</b></li></ul><p>Ook kan je met .htaccess het listen van mappen blokkeren met IndexIgnore:</p><blockquote><pre>IndexIgnore *</pre></blockquote><p>Met bovenstaande instelling mag er geen enkel type bestand gelist worden. Je kan hetzelfde doen met bijvoorbeeld *.jpg.</p><ul><li><b>MIME types</b></li></ul><p>Weet je nog dat we een regel met AddType toevoegden aan httpd.conf? Zoiets kan ook met .htaccess, bijvoorbeeld zo:</p><blockquote><pre>AddType application/x-shockwave-flash swf</pre></blockquote><p>Let er uiteraard wel op dat je het goed doet, anders heb je er niets aan</p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#vhost" title="Dit kopje" name="vhost">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Virtual Hosts</h2><p>Je hebt je vast wel eens afgevraagd hoe je nou meerdere sites kan hosten met een instantie van Apache. Welnu, dat is relatief eenvoudig - de oplossing zijn zogenaamde Virtual Hosts. Een virtual host is niets anders dan een instelling voor Apache dat hij op meerdere hosts gaat luisteren. Onderaan je httpd.conf staat bijvoorbeeld dit voorbeeld:</p><blockquote><pre># VirtualHost example:<br /># Almost any Apache directive may go into a VirtualHost container.<br /># The first VirtualHost section is used for requests without a known<br /># server name.<br />#<br />#<VirtualHost *:80><br />#    ServerAdmin webmaster@dummy-host.example.com<br />#    DocumentRoot /www/docs/dummy-host.example.com<br />#    ServerName dummy-host.example.com<br />#    ErrorLog logs/dummy-host.example.com-error_log<br />#    CustomLog logs/dummy-host.example.com-access_log common<br />#</VirtualHost></pre></blockquote><p>Je kan met een Virtual Host dus ServerAdmin, ServerName, DocumentRoot, ErrorLog en TransferLog of CustomLog instellen voor elke host. Als je bijvoorbeeld dit zou doen:</p><blockquote><pre> <br /><VirtualHost 123.45.156.98:1200><br />    ServerAdmin g33rt@maffehost<br />    DocumentRoot c:/apache/apache/maffehost<br />    ServerName 123.45.156.98<br />    ErrorLog logs/maffehost_error<br />    CustomLog logs/maffehost_access common<br /></VirtualHost></pre></blockquote><p>dan ben je aan het serveren voor de host 123.45.156.98 met poort 1200. De overige dingen spreken natuurlijk voor zich. Zo word bijvoorbeeld GoT geserveert met >VirtualHost gathering.tweakers.net:80> en een aangepaste documentroot. <br /><br />Het kan ook gecompliceerder. Stel, je hebt een IP w.x.y.z, en 2 domeinen: www.sub.domein.org en www.domein.org, en je wilt twee verschillende sites op het domein en het subdomein. Dat zou je nu als volgt oplossen:</p><blockquote><pre>    Port 80<br />    ServerName server.domain.org<br /><br />    NameVirtualHost w.x.y.z <br /><br />    <VirtualHost w.x.y.z><br />    DocumentRoot /www/domein<br />    ServerName www.domein.org<br />    ...<br />    </VirtualHost><br />    <br />    <VirtualHost w.x.y.z><br />    DocumentRoot /www/subdomain<br />    ServerName www.sub.domein.org<br />    ...<br />    </VirtualHost></pre></blockquote><p>Het moge nu duidelijk zijn hoe je creatief met vhosts kan gaan <img src="http://gathering.tweakers.net/global/smileys/smile.gif" width="15"  height="15" alt=":)" class="smiley" ></p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#thanksto" title="Dit kopje" name="thanksto">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Thanks to</h2><p> Deze howto is geschreven door Geert-Jan, beter bekend als <a href="http://gathering.tweakers.net/forum/myreact/49335">G33rt</a><br />Op- of aanmerkingen, en suggesties kunnen worden doorgegeven aan de <a href="http://gathering.tweakers.net/forum/list_messages/783266#moderators">SA moderators</a> </p><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#imagelist" title="Dit kopje" name="imagelist">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Lijst met figuren</h2><ul><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig1">Figuur 1</a>: start de installer</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig2">Figuur 2</a>: de eerste instellingen</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig3">Figuur 3</a>: wat te installeren, en waar</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig4">Figuur 4</a>: het installatietype van PHP kiezen</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig5">Figuur 5</a>: de SMTP server instellen voor PHP</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig6">Figuur 6</a>: onderdelen van MySQL kiezen</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig7">Figuur 7</a>: een apache test pagina</li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#fig8">Figuur 8</a>: WinMySQLAdmin voor de eerste keer</li></ul> <br /><div class="i-am-here"><a href="http://gathering.tweakers.net/forum/list_messages/849355#sectionlist" title="Dit kopje" name="sectionlist">&#8249;</a> &#183;<a title="Terug naar boven" href="http://gathering.tweakers.net/forum/list_messages/849355#top">^</a></div><h2>Inhoudsopgave</h2><ul><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#inleiding">1</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#inleiding">Inleiding</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#vereist">2</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#vereist">Vereisten</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#install">3</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#install">Installeren</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#config">4</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#config">Configureren</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#mysql">5</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#mysql">MySQL configuratie</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#control">6</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#control">Controle</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#htaccess">7</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#htaccess">.htaccess</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#vhost">8</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#vhost">Virtual Hosts</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#thanksto">9</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#thanksto">Thanks to</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#imagelist">10</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#imagelist">Lijst met figuren</a></li><li> <a href="http://gathering.tweakers.net/forum/list_messages/849355#sectionlist">11</a>: <a href="http://gathering.tweakers.net/forum/list_messages/849355#sectionlist">Inhoudsopgave</a></li></ul> </div><br>
<br>
<br>
<br>
]]></content:encoded>
			<guid isPermaLink="false">http://gathering.tweakers.net/forum/list_message/19509908#19509908</guid>
			<pubDate>Tue, 16 Dec 2003 20:58:47 GMT</pubDate>
		</item>
	</channel>
</rss>