Skip to content

Sample Apache Setup for Windows

Derek Jones edited this page Jul 5, 2012 · 14 revisions

Category:Help Category:Help::ApacheConfig

My development setup

This is how I've setup up my testing suite of Apache, MySQL and PHP (and yes, I don't like prefabricated bundles with a lot of third party scripts/plugins/apps included). I must stress that this is not something that you would put on a production server! You should also consider this as a stub, not a full blow fool-proof setup walk through - but you should get some hints here.

This document assumes a couple of things, like paths etc. Installation directories: d:\dev\apache d:\dev\mysql d:\dev\php

Development directories: (Since I use more than PHP I have it sorted this way) d:\www\php* <- this is where you'd store your CI apps d:\www...

Download and Install

First I downloaded Apache, MySQL (you want the lighter Essentials package) and PHP.

There's alot of options that you can make to lower the resources used by the install, but I won't venture into that - there's book about it, thick books...

The nice trick with my setup is that by using vhosts (virtual hosts) I have an easily accessible setup for my different projects (not necessarily related to CI), right now I have these cool urls;

http://blog.stardust http://forum.stardust http://gallery.stardust

These are made by the usage of Apache's vhosts and the windows hosts (C:\WINDOWS\system32\drivers\etc\hosts) file you can make nice URL's, but that's not the point - really, it makes it alot easier to separate projects and expand/incorporate them.

To make a new "host", you first add it to the hosts file like this

127.0.0.1 mynew.site

then you add it to the Apache vhost configuration file (httpd-vhosts.conf), like this.

<VirtualHost *:80> ServerName mynew.site DocumentRoot d:/www/php/mynew.site ErrorLog logs/mynew-error_log </VirtualHost>

another then... reload apache and you're set to use http://mynew.host Code Igniter projects.

This may not make alot of sense on why to use a setup like this, but when you have 10-15 projects/forks/tests running on your can it makes life easier...

Below are my configuration settings... I hope this is of use :-)

My httpd.conf

#----- Base Setup ----------------------------------------------------------- ServerRoot "d:/dev/apache" Listen *:80 ThreadsPerChild 50 MaxRequestsPerChild 0 ServerAdmin admin@stardust ServerName stardust DocumentRoot "D:/www/php" EnableSendfile Off EnableMMAP Off Win32DisableAcceptEx #----- Module Loading ------------------------------------------------------- LoadModule authn_default_module modules/mod_authn_default.so LoadModule authz_host_module modules/mod_authz_host.so LoadModule dir_module modules/mod_dir.so LoadModule mime_module modules/mod_mime.so LoadModule rewrite_module modules/mod_rewrite.so LoadModule setenvif_module modules/mod_setenvif.so LoadModule php5_module d:/dev/php/php5apache2.dll #----- Root Directory ------------------------------------------------------- <Directory /> Options Indexes FollowSymLinks AllowOverride ALL Order allow,deny Allow from all </Directory> <IfModule dir_module> DirectoryIndex index.php dispatch.fcgi index.html </IfModule> <FilesMatch "^\.ht"> Order allow,deny Deny from all </FilesMatch> #----- Logging Configuration ------------------------------------------------ ErrorLog logs/error.log LogLevel warn <IfModule log_config_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined LogFormat "%h %l %u %t \"%r\" %>s %b" common <IfModule logio_module> LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio </IfModule> CustomLog logs/access.log common </IfModule> #----- Module Configurations ------------------------------------------------ DefaultType text/plain <IfModule mime_module> TypesConfig conf/mime.types AddType application/x-compress .Z AddType application/x-gzip .gz .tgz AddType application/x-httpd-php .php AddType application/x-httpd-phps .phps </IfModule> <IfModule php5> PHPIniDir "d:/dev/php" </IfModule> <IfModule cgid> AddHandler fastcgi-script .fcgi </IfModule> <IfModule alias_module> ScriptAlias /cgi-bin/ "D:/dev/Apache/cgi-bin/" </IfModule> #----- Extra Configurations ------------------------------------------------- Include conf/extra/httpd-vhosts.conf 

My httpd-vhosts.conf

NameVirtualHost *:80 <VirtualHost *:80> nServerName stardust DocumentRoot d:/www/php ErrorLog logs/stardust-error_log </VirtualHost> <VirtualHost *:80> ServerName blog.stardust DocumentRoot d:/www/php/blog ErrorLog logs/blog.stardust-error_log </VirtualHost>

My hosts file

127.0.0.1 stardust 127.0.0.1 blog.stardust 127.0.0.1 localhost

My php.ini

This is the two things I've altered.

doc_root = "c:\dev\www" extension_dir = "d:\dev\php\ext"
Clone this wiki locally