Après avoir vu l’installation des différents services dans le précédent billet « Linux : Mise en place d’un serveur web (1) » nous allons maintenant nous pencher un peu plus sur la configuration du serveur http Apache2.

La configuration principale
Dans le fichier /etc/apache2/apache2.conf (le répertoire peut changer suivant la distribution installé, le nom du fichier est parfois httpd.conf) nous avons la configuration principale du serveur Apache. La configuration de base peut suffire dans la plupart des cas et le fichier est assez bien documenté pour comprendre a quoi correspond chaque ligne de configuration. Cependant voici quelques points que je modifie sur la plupart de mes installations :
AccessFileName .htaccess
Indique le nom des fichiers de surcharges pouvant être créée par les utilisateurs, par defaut la valeur est .htaccess
ErrorLog /var/log/apache2/error.log
Emplacement du fichier de logs d’Apache.
Include /etc/apache2/sites-enabled/
Emplacement des fichiers de configurations pour vos différents sites.
Les Virtuals Hosts
Apache permet grâce aux virtuals hosts d’utiliser plusieurs noms de domaines sur le même serveur avec la même adresse ip. Apache peut gérer les hôtes virtuels avec les commandes « a2ensite » et « a2dissite » mais personnellement je préfère l’édition manuel des fichiers pour ajuster correctement la configuration de chaque site.
Le répertoire /etc/apache2/sites-enabled/contient le fichier de configuration pour le site par défaut, « 000-default ». Pour permettre le « multi-site » j’utilise la configuration suivante :
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerSignature Off
DocumentRoot /var/www/domaine.tld/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/domaine.tld/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost>
Pour que les modifications soit prises en compte on recharge la configuration du serveur apache avec la commande
/etc/init.d/apache2 reload
A partir de maintenant n’importe quel nom de domaine pointant sur l’ip de votre serveur affichera le site par défaut, c’est à dire celui défini dans le fichier 000-default ci-dessus.
Et pour gérer plusieurs domaines ?
Pour gérer plusieurs domaines la procédure reste identique. Pour chaque nouveau nom de domaine vous devez créer un fichier /etc/apache2/sites-enabled/domaine.tld dans lequel sera défini la configuration du domaine et des éventuels sous domaines.
Par exemple pour mon nom de domaine netha.fr j’utilise la configuration suivante :
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName www.netha.fr
DocumentRoot /var/www/netha.fr/www/
<Directory /var/www/netha.fr/www/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/www.netha.fr.log
</VirtualHost>
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName blog.netha.fr
DocumentRoot /var/www/netha.fr/blog/
<Directory /var/www/netha.fr/blog/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/blog.netha.fr.log
</VirtualHost>
<VirtualHost *>
ServerAdmin webmaster@localhost
ServerName search.netha.fr
DocumentRoot /var/www/netha.fr/search/
<Directory /var/www/netha.fr/search/>
Options -Indexes
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/search.netha.fr.log
</VirtualHost>
Pensez à recharger la configuration du serveur Apache après chaque modification des fichiers de configuration.
Documentation Apache (site officiel, FR)