Configuration Apache

1) Introduction.

Ce didacticiel propose de configurer le fichier httpd.conf d’Apache. Cette configuration n’est pas spécifique à WampServer mais à tous les serveurs web fonctionnant sous windows.

Ce didacticiel fonctionne actuellement sous Windows 7 Pro et ses particularités sont ceux de la version 2.4 d’apache. En aucune façon, vous ne pouvez utiliser ce didacticel pour configurer une version antérieur à la 2.4 d’Apache, ou de le faire tourner sous windows XP qui est devenu obsolète depuis Avril 2014.

Nous ne détaillerons pas ici l’installation de WampServer, ni celle d’une nouvelle version d’Apache. On suppose que ces deux points sont déjà opérationnels.

Nous avons volontairement fait un découpage du fichier httpd.conf afin de détailler chaque partie pour comprendre l’usage que nous faisons.

2) Le fichier des paramètres.

Tout au début du fichier httpd.conf, j’ai introduit un fichier paramètre, qui se trouve dans le sous-répertoire « /conf » du répertoire racine d’Apache, que voici.

# ******************************************************* #
#                                                         #
#     Fichier de Configuration du Serveur HTTP Apache     #
#                                                         #
# ******************************************************* #

include conf/param.conf

Le but est de rendre paramétrable le numéro de la version d’Apache, ainsi que le numéro de la version de PhpMyAdmin. Dans ma version modifiée de WampServer, ce sont deux nouvelles fonctionnalités que j’ai mis en place. Les valeurs réelles seront placées dans le fichier param.conf comme ci-après :

Define Version_Apache      f:/Wamp/bin/apache/apache2.4.10
Define Version_PhpMyAdmin  f:/Wamp/apps/phpmyadmin4.2.10

Une des nouvelles fonctionnalités misent en place à partir de la version 2.4 d’Apache est de pouvoir substituer les chaines de caractères que voici « ${Version_Apache} » et « ${Version_PhpMyAdmin} », par la valeur qui est stockée dans le fichier paramètre.

Si vous n’avez aucun usage de ces paramètres, vous pouvez supprimer cette partie.

3) Les fonctionnalités de Base d’Apache.

Ce sont les paramétres généraux que nous appliquons au service « WampApache afin d’obtenir la meilleure réactivitée en fonction du nombre d’utilisateurs.

Vous trouverez plus d’explications dans la documentation d’apache dans le chapitre consacré aux « fonctionnalités de Base d’Apache« .

# ====================== #
#                        #
#     Serveur Apache     #
#                        #
# ====================== #

ServerRoot "${Version_Apache}"

PidFile Logs/httpd.pid

LogLevel warn

ServerSignature On
ServerTokens Full

AcceptFilter http none
AcceptFilter https none

HostnameLookups Off
UseCanonicalName Off

Timeout 60
KeepAlive On
MaxKeepAliveRequests 150
KeepAliveTimeout 2

MaxRequestsPerChild 0
ThreadsPerChild 250

4) Liste des Modules.

Nous mettons dans le fichier httpd.conf la liste de tous les modules qui sont présents dans le sous-répertoire « /modules » du répertoire racine d’Apache.

Si un module est présent dans le sous-répertoire « /modules » d’Apache mais absent dans le fichier httpd.conf, l’image suivante logo danger apparait dans l’onglet « Modules d’Apache » de l’icône WampServer et signifie que la déclarative de ce module est absente dans le fichier Httpd.conf. Pour remédier à cela, vous devez mettre le nom de ce module dans le fichier Httpd.conf.

Nous plaçons un « # » au début de la ligne si nous ne faisons aucun usage de ce module. Même si le module est en commentaire, le fait qu’il soit présent dans le fichier httpd.conf vous évite d’avoir un avertissement sous la forme de l’image logo danger.

Ci-après, la liste des modules n’ayant aucun paramétrage associé.

# ========================== #
#                            #
#     Les Modules Apache     #
#                            #
# ========================== #

  LoadModule access_compat_module        modules/mod_access_compat.so
  LoadModule actions_module              modules/mod_actions.so
  LoadModule allowmethods_module         modules/mod_allowmethods.so
  LoadModule asis_module                 modules/mod_asis.so
  LoadModule auth_basic_module           modules/mod_auth_basic.so
# LoadModule auth_digest_module          modules/mod_auth_digest.so
# LoadModule auth_form_module            modules/mod_auth_form.so
# LoadModule authn_anon_module           modules/mod_authn_anon.so
  LoadModule authn_core_module           modules/mod_authn_core.so
# LoadModule authn_dbd_module            modules/mod_authn_dbd.so
# LoadModule authn_dbm_module            modules/mod_authn_dbm.so
  LoadModule authn_file_module           modules/mod_authn_file.so
# LoadModule authn_socache_module        modules/mod_authn_socache.so
# LoadModule authnz_fcgi_module          modules/mod_authnz_fcgi.so
# LoadModule authnz_ldap_module          modules/mod_authnz_ldap.so
  LoadModule authz_core_module           modules/mod_authz_core.so
# LoadModule authz_dbd_module            modules/mod_authz_dbd.so
# LoadModule authz_dbm_module            modules/mod_authz_dbm.so
  LoadModule authz_groupfile_module      modules/mod_authz_groupfile.so
  LoadModule authz_host_module           modules/mod_authz_host.so
# LoadModule authz_owner_module          modules/mod_authz_owner.so
  LoadModule authz_user_module           modules/mod_authz_user.so
  LoadModule autoindex_module            modules/mod_autoindex.so
# LoadModule buffer_module               modules/mod_buffer.so
# LoadModule cache_disk_module           modules/mod_cache_disk.so
# LoadModule cache_module                modules/mod_cache.so
# LoadModule cache_socache_module        modules/mod_cache_socache.so
# LoadModule cern_meta_module            modules/mod_cern_meta.so
# LoadModule charset_lite_module         modules/mod_charset_lite.so
# LoadModule data_module                 modules/mod_data.so
# LoadModule dav_module                  modules/mod_dav.so
# LoadModule dav_fs_module               modules/mod_dav_fs.so
# LoadModule dav_lock_module             modules/mod_dav_lock.so
# LoadModule dbd_module                  modules/mod_dbd.so
# LoadModule dumpio_module               modules/mod_dumpio.so
  LoadModule env_module                  modules/mod_env.so
# LoadModule expires_module              modules/mod_expires.so
# LoadModule ext_filter_module           modules/mod_ext_filter.so
# LoadModule file_cache_module           modules/mod_file_cache.so
# LoadModule heartbeat_module            modules/mod_heartbeat.so
# LoadModule heartmonitor_module         modules/mod_heartmonitor.so
# LoadModule ident_module                modules/mod_ident.so
# LoadModule imagemap_module             modules/mod_imagemap.so
  LoadModule isapi_module                modules/mod_isapi.so
# LoadModule lbmethod_bybusyness_module  modules/mod_lbmethod_bybusyness.so
# LoadModule lbmethod_byrequests_module  modules/mod_lbmethod_byrequests.so
# LoadModule lbmethod_bytraffic_module   modules/mod_lbmethod_bytraffic.so
# LoadModule lbmethod_heartbeat_module   modules/mod_lbmethod_heartbeat.so
# LoadModule ldap_module                 modules/mod_ldap.so
# LoadModule log_debug_module            modules/mod_log_debug.so
# LoadModule log_forensic_module         modules/mod_log_forensic.so
# LoadModule lua_module                  modules/mod_lua.so
# LoadModule macro_module                modules/mod_macro.so
# LoadModule mime_magic_module           modules/mod_mime_magic.so
# LoadModule proxy_module                modules/mod_proxy.so
# LoadModule proxy_ajp_module            modules/mod_proxy_ajp.so
# LoadModule proxy_balancer_module       modules/mod_proxy_balancer.so
# LoadModule proxy_connect_module        modules/mod_proxy_connect.so
# LoadModule proxy_express_module        modules/mod_proxy_express.so
# LoadModule proxy_fcgi_module           modules/mod_proxy_fcgi.so
# LoadModule proxy_ftp_module            modules/mod_proxy_ftp.so
# LoadModule proxy_http_module           modules/mod_proxy_http.so
# LoadModule proxy_scgi_module           modules/mod_proxy_scgi.so
# LoadModule proxy_wstunnel_module       modules/mod_proxy_wstunnel.so
# LoadModule ratelimit_module            modules/mod_ratelimit.so
# LoadModule reflector_module            modules/mod_reflector.so
# LoadModule remoteip_module             modules/mod_remoteip.so
# LoadModule reqtimeout_module           modules/mod_reqtimeout.so
# LoadModule request_module              modules/mod_request.so
# LoadModule sed_module                  modules/mod_sed.so
# LoadModule session_module              modules/mod_session.so
# LoadModule session_cookie_module       modules/mod_session_cookie.so
# LoadModule session_crypto_module       modules/mod_session_crypto.so
# LoadModule session_dbd_module          modules/mod_session_dbd.so
# LoadModule slotmem_plain_module        modules/mod_slotmem_plain.so
# LoadModule slotmem_shm_module          modules/mod_slotmem_shm.so
# LoadModule socache_dbm_module          modules/mod_socache_dbm.so
# LoadModule socache_memcache_module     modules/mod_socache_memcache.so
# LoadModule speling_module              modules/mod_speling.so
# LoadModule unique_id_module            modules/mod_unique_id.so
# LoadModule userdir_module              modules/mod_userdir.so
# LoadModule usertrack_module            modules/mod_usertrack.so
# LoadModule version_module              modules/mod_version.so
# LoadModule watchdog_module             modules/mod_watchdog.so

5) Les Modules avec paramétrage.

Nous regroupons les modules qui fonctionnent en synergie. Dans l’exemple ci-après, le module alias et le module vhost_alias vont de pairs.

Le « <IfModule> » … « </IfModule> » permet d’activier le paramétrage si le module est actif.

# -------------------------------------- #
#     Module Alias                       #
# -------------------------------------- #

LoadModule alias_module                modules/mod_alias.so
LoadModule vhost_alias_module          modules/mod_vhost_alias.so

<IfModule alias_module>
	ScriptAlias /cgi-bin/ "f:/site-01/Ex_03/  f:/site-04/"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Alias.

# -------------------------------------- #
#     Module CGI                         #
# -------------------------------------- #

LoadModule cgi_module                  modules/mod_cgi.so

<IfModule cgi_module>
	ScriptLog "f:Wamp/Logs/apache_cgi.log"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Cgi.

# -------------------------------------- #
#     Module Deflate                     #
# -------------------------------------- #

LoadModule deflate_module              modules/mod_deflate.so
LoadModule filter_module               modules/mod_filter.so

<IfModule deflate_module>
	SetOutputFilter DEFLATE
	DeflateCompressionLevel 9

	<Location />
		AddOutputFilterByType DEFLATE application/atom_xml
		AddOutputFilterByType DEFLATE application/rss+xml
		AddOutputFilterByType DEFLATE application/xhtml+xml
		AddOutputFilterByType DEFLATE application/xml
		AddOutputFilterByType DEFLATE application/x-javascript
		AddOutputFilterByType DEFLATE image/svg+xml
		AddOutputFilterByType DEFLATE text/css
		AddOutputFilterByType DEFLATE text/html
		AddOutputFilterByType DEFLATE text/plain
		AddOutputFilterByType DEFLATE text/xml

# Pour les proxies
		Header append Vary User-Agent env=!dont-vary
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Deflate.

# -------------------------------------- #
#     Module Directory                   #
# -------------------------------------- #

LoadModule dir_module                  modules/mod_dir.so

<IfModule dir_module>
	DirectoryIndex index.php index.html index.shtml /Erreurs/404.php
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Directory.

# -------------------------------------- #
#     Module Headers                     #
# -------------------------------------- #

LoadModule headers_module              modules/mod_headers.so

<IfModule headers_module>
	<FilesMatch "\.(php|php3|html|htm|shtml|js|css|cgi|pl)$">
		Header set Cache-Control "no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0"
		Header set Pragma "no-cache"
		Header set Expires "0"
	</FilesMatch>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Headers.

# -------------------------------------- #
#     Module Include                     #
# -------------------------------------- #

LoadModule include_module              modules/mod_include.so

<IfModule include_module>
	SSITimeFormat "%A %d %B %Y - %T"
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Include.

# -------------------------------------- #
#     Module Info_module                 #
# -------------------------------------- #

LoadModule info_module                 modules/mod_info.so

<IfModule info_module>
	<Location /server-info>
		SetHandler server-info
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Info.

Pour utiliser le module Info, il suffit de taper « /server-info » après l’url du site. Exemple : « http://mon-site-un/server-info ».

# -------------------------------------- #
#     Module log_config                  #
# -------------------------------------- #

LoadModule log_config_module           modules/mod_log_config.so
LoadModule logio_module                modules/mod_logio.so

<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>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Log.

# -------------------------------------- #
#     Module Mime                        #
# -------------------------------------- #

LoadModule mime_module                 modules/mod_mime.so

<IfModule mime_module>
	TypesConfig conf/mime.types
#
	AddType application/json .json
	AddType application/xml  .xml
#
	AddType application/x-tar            .tgz
	AddType application/x-rar-compressed .rar
#
	AddType application/x-compress .Z
	AddType application/x-gzip     .gz .tgz
#
	AddType application/x-httpd-php        .php .phtml .htm .html
	AddType application/x-httpd-php-source .phps
#
	AddType image/x-icon .ico
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Mime.

# -------------------------------------- #
#     Module Php5                        #
# -------------------------------------- #

LoadModule php5_module "f:/Wamp/bin/php/courant/php5apache2_4.dll"

phpIniDir "f:/Wamp/bin/php/courant"

Dans la documentation de Php, voici comment installer Php5 en tant que gestionnaire.

La directive « phpIniDir » permet de préciser le chemin où se trouve le répertoire php de la version courante. Il est aussi nécessaire de préciser dans la commande « Path » de windows où se trouve ce chemin.

# -------------------------------------- #
#     Module Proxy_Html                  #
# -------------------------------------- #

LoadModule proxy_html_module           modules/mod_proxy_html.so
LoadModule xml2enc_module              modules/mod_xml2enc.so

<IfModule proxy_html_module>
	Include conf/extra/proxy-html.conf
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Proxy_Html.

# -------------------------------------- #
#     Module Rewrite                     #
# -------------------------------------- #

LoadModule rewrite_module              modules/mod_rewrite.so
LoadModule substitute_module           modules/mod_substitute.so
LoadModule negotiation_module          modules/mod_negotiation.so

#<IfModule rewrite_module>
#	RewriteEngine On
#</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Rewrite.

# -------------------------------------- #
#     Module Setenvif                    #
# -------------------------------------- #

LoadModule setenvif_module             modules/mod_setenvif.so

Dans la documentation d’apache 2.4, voici le détail du module Setenvif.

# -------------------------------------- #
#     Module SSL                         #
# -------------------------------------- #

LoadModule ssl_module                  modules/mod_ssl.so
LoadModule socache_shmcb_module        modules/mod_socache_shmcb.so

<IfModule ssl_module>
	SSLProtocol -ALL +SSLv3 +TLSv1
#
	SSLRandomSeed startup builtin
	SSLRandomSeed connect builtin

#	SSLCipherSuite HIGH:MEDIUM:!aNULL:!MD5
	SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
#
	SSLPassPhraseDialog		builtin
#	SSLPassPhraseDialog		"exec:${Version_Apache}/conf/Certificat/passphrase.txt"
#	
	SSLSessionCache         "shmcb:f:/Wamp/tmp/ssl_scache(512000)"
	SSLSessionCacheTimeout  300
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module SSL.

# -------------------------------------- #
#     Module Status                      #
# -------------------------------------- #

LoadModule status_module               modules/mod_status.so

<IfModule status_module>
	ExtendedStatus On
#
	<Location /server-status>
		SetHandler server-status
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Location>
</IfModule>

Dans la documentation d’apache 2.4, voici le détail du module Status.

Pour utiliser le module status, il suffit de taper « /server-status » après l’url du site. Exemple : « http://mon-site-un/server-status ».

6) Les accès aux répertoires.

Nous définissons l’usage que nous voulons faire des sous-répertoires du répertoire racine du site. Voici trois exemples de redéfinitions.

# ======================= #
#                         #
#     Les Répertoires     #
#                         #
# ======================= #

# -------------------------------- #
#     Répertoire "f:/Erreurs/"     #
# -------------------------------- #

<Directory "f:/Erreurs/">
	Options +Includes
#
	<RequireAny>
		Require local
		Require ip 192.168.1.20
	</RequireAny>
</Directory>
#
Alias /Erreurs/ "f:/Erreurs/"
#
ErrorDocument 400 /Erreurs/400.php
ErrorDocument 401 /Erreurs/401.php
ErrorDocument 403 /Erreurs/403.php
ErrorDocument 404 /Erreurs/404.php
ErrorDocument 500 /Erreurs/500.php

Lorsque nous rencontrons une erreur de type 400, 401, 403, 404 et 500, le serveur web affiche la page HTML qui est associée. Nous précisions que toutes les pages HTML sont regroupées dans le répertoire « f:/Erreurs » et que les accès en mode local ou via internet sont autorisés.

# ----------------------------------------------------------------- #
#     Répertoires utilisant les commandes "Server Side Include"     #
# ----------------------------------------------------------------- #

<Directory "f:/site-01/Ex_05/">
	Options +Includes
#
	AddType text/html        .shtml
	AddOutputFilter INCLUDES .shtml
</Directory>

Nous définissons le sous-répertoire « /Ex_05 » du répertoire racine du site « httpd://mon-site-un » comme pouvant exécuter des commandes SSI (Server Side Include).

# ---------------------------------------- #
#     Répertoires exécutant du cgi-bin     #
# ---------------------------------------- #

<DirectoryMatch "f:/site-01/Ex_05/">
	Options +ExecCGI
#
	AddHandler cgi-script .pl
</DirectoryMatch>

Nous définissons le sous-répertoire « /Ex_05 » du répertoire racine du site « httpd://mon-site-un » comme pouvant exécuter des scripts CGI (Common Gateway Interface).

7) Les accès aux fichiers.

Nous définissons les autorisations d’accès aux fichiers.

# ==================== #
#                      #
#     Les Fichiers     #
#                      #
# ==================== #

# -------------------------------------- #
#     Liste des Fichiers à Protéger      #
# -------------------------------------- #

<FilesMatch "\.(?i)(bat|c|htaccess|htpasswd|ini|log|sql|txt)$">
	Require all denied
</FilesMatch>

Les fichiers dont le suffixe se termine par « .bat », « .htaccess », « .htpasswd », « .ini », « .log », « .sql », « .txt » ne sont pas accessible à partir de l’url.

Le « (?i) » signifie que le suffixe est insensible à la casse. Autrement dit, « .Ini » ou « .inI » avec des majuscules ou « .ini » sans majuscule sera traité de la même façon.

# ------------------------------------------------- #
#     Fichiers paramètres des bases de données      #
# ------------------------------------------------- #

<FilesMatch "(?i)(MySql_In|MySql_Out)">
	Require all denied
</FilesMatch>

De même, j’ai interdit les accès à des fichiers dont le préfixe commence par « MySql_In » ou par « MySql_Out ». Ce sont les fichiers de paramétrages aux accès des bases de données.

8) Les ports en écoutes et les adresses IP autorisées.

Nous définissons le port 80, ainsi que le port 443 comme des ports autorisés à l’écoute par Apache. le port 443 est autorisé que si le module SSL est activé.

# =============================== #
#                                 #
#     Les Adresses IP & Ports     #
#                                 #
# =============================== #

Listen 80 http
#
<IfModule ssl_module>
	listen [::1]:443 https
</IfModule>

9) La police des caractères et le langage par défaut.

J’ai désactivé l’usage par défaut de la police de caractères pour mon serveur Web. Elle est définie dans les documents HTML par la balise HTML5 <meta charset= »utf-8″ />.

J’ai laissé en commentaire deux exemples. Le premier est la valeur « ISO-8859-1′ par défaut des documents HTML et Php. Le deuxième concerne les fichiers dont le suffice est « .php », « .htm », « .html », « .css », « .js », « .xml », « .json », « .rss ».

Comme je suis français, j’ai indiqué que le langage par défaut est le « fr ».

# ============================ #
#                              #
#     Police de Caractères     #
#                              #
# ============================ #

AddDefaultCharset Off

#AddDefaultCharset "ISO-8859-1"
#AddCharset "ISO-8859-1" .php .htm .html .css .js .xml .json .rss
#
DefaultLanguage "fr"

10) Le serveur principal.

J’utilise le serveur principal comme un site de redirection du genre poubelle dans le cas où l’url est mal écrit. Le port et l’adresse IP ne sont pas précisés.

Il est conseillé dans la documentation d’Apache, de définir le premier VirtualHost comme étant celui du serveur principale, ce que j’ai fait.

# ========================= #
#                           #
#     Serveur Principal     #
#                           #
# ========================= #

ServerName _default_
DocumentRoot "f:/Default/"
#
ErrorLog  "${Version_Apache}/Logs/apache_error.log"
CustomLog "${Version_Apache}/Logs/apache_custom.log" common
#
<Directory />
	Options none
	AllowOverride none
	<RequireAny>
		Require local
	</RequireAny>
</Directory>

# --------------- #
#     default     #
# --------------- #

<VirtualHost *:*>
	ServerName _default_
	ServerAdmin [email protected]
	DocumentRoot "f:/Default/"
#
	ErrorLog  "f:/Default/Logs/error.log"
	CustomLog "f:/Default/Logs/custom.log" common
#
	<Directory />
		Options none
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

11) Les autres sites.

Voici plusieurs exemples de déclaratives des VirtualHosts pour des usages différents.

# ===================== #
#                       #
#     Virtual Hosts     #
#                       #
# ===================== #

# -------------------------- #
#     Localhost avec SSL     #
# -------------------------- #

<VirtualHost [::1]:443>
	ServerName localhost
	ServerAdmin [email protected]
	DocumentRoot "f:/Wamp/www/"
#
	ErrorLog "f:/Wamp/www/Logs/error.log"
#
	SSLEngine on
	SSLCertificateFile    "${Version_Apache}/conf/Certificat/localhost.crt"
	SSLCertificateKeyFile "${Version_Apache}/conf/Certificat/localhost.key"
#
	<FilesMatch "\.(cgi|shtml|phtml|php)$">
		SSLOptions +StdEnvVars
	</FilesMatch>
#
	<Directory />
		SSLOptions +StdEnvVars
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Directory>
#
	BrowserMatch "MSIE [2-5]" nokeepalive ssl-unclean-shutdown downgrade-1.0 force-response-1.0
	CustomLog "f:/wamp/www/Logs/custom.log" "%t %h %{SSL_PROTOCOL}x %{SSL_CIPHER}x \"%r\" %b"
</VirtualHost>

J’ai défini l’accès au site localhost en tapant « https://localhost », c’est-à-dire par le protocole https qui est sécurisé. Cela nécessite d’avoir une certification de type SSL.

# -------------------------- #
#     Localhost sans SSL     #
# -------------------------- #

<VirtualHost [::1]:80>
	ServerName localhost
	ServerAdmin [email protected]
	DocumentRoot "f:/Wamp/www/"
#
	ErrorLog  "f:/Wamp/www/Logs/error.log"
	CustomLog "f:/Wamp/www/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
			Require ip 192.168.1.20
		</RequireAny>
	</Directory>
</VirtualHost>

Ici, l’accès au site localhost se fait en tapant « http://localhosy », c’est-à-dire sans le protocole sécurité.

# ------------------ #
#     PhpMyAdmin     #
# ------------------ #

<VirtualHost [::1]:80>
	ServerName phpmyadmin
	ServerAdmin [email protected]
	DocumentRoot "${Version_PhpMyAdmin}/"
#
	ErrorLog  "f:/Wamp/Logs/phpmyadmin_error.log"
	CustomLog "f:/Wamp/Logs/phpmyadmin_custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

L’accès à l’utilitaire PhpMyAdmin est défini en tant que site et non en tant qu’alias. On retrouve la variable « ${Version_PhpMyAdmin}/ » qui indique le numéro de la version de PhpMyAdmin courante.

# ------------------- #
#     mon-site-un     #
# ------------------- #

<VirtualHost 127.0.0.1:80>
	ServerName mon-site-un
	ServerAdmin [email protected]
	DocumentRoot "f:/Site-01/"
#
	ErrorLog  "f:/Site-01/Logs/error.log"
	CustomLog "f:/Site-01/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride all
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

Pour mon environnement de développement, j’utilise size sites dont les noms vont de « mon-site-un » à mon-site-seize ». Ils sont tous construits sur le même modèle ci-dessus.

# ----------------- #
#     mon-forum     #
# ----------------- #

<VirtualHost 127.0.0.17:80>
	ServerName mon-forum
	ServerAdmin [email protected]
	DocumentRoot "f:/Site-forum/"
#
	ErrorLog  "f:/Site-forum/Logs/error.log"
	CustomLog "f:/Site-forum/Logs/custom.log" common
#
	<Directory />
		Options -Indexes +FollowSymLinks +MultiViews
		AllowOverride none
		<RequireAny>
			Require local
		</RequireAny>
	</Directory>
</VirtualHost>

J’ai aussi un forum en test sur mon ordinateur. Il est définit en tant que site.

# ----------------- #
#     mon-forum     #
# ----------------- #

Alias /forum "f:/site-forum/"
#
<Directory "f:/site-forum/">
	Options -Indexes +FollowSymLinks +MultiViews
	AllowOverride none
	<RequireAny>
		Require local
		Require ip 192.168.1.20
	</RequireAny>
</Directory>
#

Et ce même forum est aussi définit en tant qu’Alias.

12) Les includes.

A la fin du fichier httpd.conf, j’ai placé les deux includes dont j’ai l’usage, à savoir celui des alias qui est présent dans le sous-répertoire « /alias » de WampServer et celui de « httpd-autoindex.conf ».

# =========== #
#             #
#    Alias    #
#             #
# =========== #

Include "f:/Wamp/alias/*"

# ================================ #
#                                  #
#     Fancy directory listings     #
#                                  #
# ================================ #

Include conf/extra/httpd-autoindex.conf

13) Conclusion.

Ceci est le Httpd.conf que j’utilise pour la version d’Apache 2.4, en usage avec la version php 5 & 6. Il y a sûrement des améliorations à faire, mais pour débuter avec WampServer, c’est largement suffisant.

Vous pouvez télécharger le fichier zipper httpd.conf que j’utilise sous WampServer !

civitch