Le principal but de notre serveur est d'héberger des sites web. Pour cela on a besoin d'installer un serveur HTTP qui va être capable de comprendre les requêtes faites par le navigateur et de renvoyer les bonnes informations en fonction. Dans ce chapitre nous allons voir l'installation d'Apache.
Pourquoi Apache ?
Avant d'installer une nouvelle technologie, il est important de comprendre ses points forts
- Apache est relativement ancien (1995) et dispose du coup d'une communauté assez importante. Du coup il sera facile de trouver des réponses en cas de problème.
- Il utilise un système de module qui permet de rajouter des fonctionnalités après coup (on ne sera pas obligé de recompiler depuis les sources pour rajouter une fonction particulière)
- La configuration peut être modifiée en utilisant des
'.htaccess
ce qui va permettre d'adapter la configuration suivant les sites
Installation
L'installation se fait très simplement et se fait via le gestionnaire de paquet
sudo apt-get install apache2
Si vous essayez de vous rendre sur votre serveur après avoir installé Apache vous devriez déjà voir une page s'afficher. Cette page se trouve dans le dossier /var/www/html
.
Configuration
La configuration d'Apache est morcelée en plusieurs fichiers pour s'y retrouver plus facilement et se trouve dans le dossier /etc/apache2
.
- apache2.conf, contient la configuration générale
- ports.conf, indique les ports utilisés par Apache
- mods-enabled/*.conf, contient les configurations pour les différents modules
- sites-enabled/*.conf, contient les configurations pour les virtualhosts
Les virtual hosts
Les hôtes virtuels permettent à Apache de gérer plusieurs arborescences Web en simultanées. Si vous regardez dans le dossier sites-enabled vous remarquerez que vous n'avez pour le moment qu'une configuration qui est un lien symbolique vers le dossier sites-available
. De manière générale, pour pouvoir activer et désactiver rapidement des configurations, on placera nos configurations dans le dossier sites-available
et on fera un lien symbolique depuis le dossier sites-enabled
pour activer la configuration.
# /etc/apache2/sites-available/monsupersite.conf
<VirtualHost *:80>
ServerAdmin contact@grafikart.fr
# Domaines gérés par ce virtualhost
ServerName monsupersite.fr
ServerAlias *.monsupersite.fr
# Racine Web
DocumentRoot /var/www/monsupersite.fr
# Règles spécifiques s'appliquant à ce dossier
<Directory /var/www/monsupersite.fr>
Options -Indexes +FollowSymLinks
AllowOverride All
</Directory>
# Où placer les logs pour cette hôte
ErrorLog /home/dev/logs/error.log
CustomLog /home/dev/logs/access.log combined
</VirtualHost>
Par défaut on rendra nos sites accessibles depuis le dossier /var/www
qui est un dossier qu'Apache peut consulter. Inutile de tout déplacer dans ce dossier-là, car l'option FollowSymLinks est active et il nous suffit de faire un lien symbolique.
ln -s /home/dev/www /var/www/monsupersite.fr
Enfin, il faut placer notre configuration dans le dossier sites-enabled. On peut faire le lien symbolique manuellement ou utiliser la commande
sudo a2ensite monsupersite
Une fois ces modifications effectuées il ne faut pas oublier de recharger la configuration d'Apache.
# Pour tester la configuration
sudo apache2ctl configtest
# Pour recharger la configuration
sudo service apache2 reload
Rajouter des modules
Si vous essayez d'utiliser un .htaccess
sur votre site avec des règles d'écritures, vous devriez tomber sur une erreur. Pour en comprendre l'origine, n'hésitez pas à vous rendre sur les logs (c'est une habitude à prendre pour comprendre ce qui ne se passe pas correctement et être indépendant).
Dans notre cas, Apache n'a pas activé le module rewrite
qui permet de gérer la redirection, mais il est tout de même installé. Il suffit d'analyser le dossier /etc/apache2/mods-available
pour s'en rendre compte. Pour l'activer, il nous faut donc placer le fichier de configuration du module dans le dossier mods-enabled
. Il existe une petite commande pour faire ça sans avoir à utiliser le ln -s
sudo a2enmod rewrite
Cette commande va simplement créer les liens symboliques à votre place. Il vous faut ensuite redémarrer Apache pour prendre en compte ce nouveau module
sudo apache2 restart
Et voilà, votre installation supporte maintenant la réécriture d'URL !