Ecran noir

Aller au contenu | Aller au menu | Aller à la recherche

Installation d'Apache sur Debian

Dans ce tutoriel nous allons voir comment installer et configurer Apache afin d'héberger sur son serveur plusieurs sites web.

En plus d'Apache, on installera la base de données MySQL et le moteur de page PHP afin d'avoir une vraie plateforme LAMP (Linux, Apache, PHP, MySQL) qui nous permettra de faire tourner des applications web toutes prêtes telles qu'un blog ou un webmail, mais aussi de créer ses propres applications web.

Installation des composants

L'installation des composants est très simple sous Debian. Avec l'utilisateur root on exécute :

apt-get install apache2 apache2-doc mysql-server php5 libapache2-mod-php5 php5-mysql

Un mot de passe root vous sera demandé pour la base MySQL. Attention il s'agit du root de MySQL qui est différent du root Linux.

Une fois l'installation terminée vous pouvez vérifier que les nouveaux services apache et mysql tournent bien :

netstat -nltp

Par défaut Apache écoute sur le port 80 et MySQL sur le port 3306.

Connectez-vous à MySQL (avec le root MySQL) pour vérifier que cela fonctionne :

mysql -u root -p
mysql> show databases;
mysql> exit

Configuration d'Apache

Tous les fichiers de configuration d'Apache se trouvent dans le répertoire /etc/apache2. On y trouve notamment :

  • Le fichier apache2.conf : fichier de configuration principal d'Apache
  • Le fichier ports.conf : configuration des ports d'écoute
  • Le répertoire conf.d : répertoire contenant divers fichiers de configuration
  • Le répertoire mods-availables : répertoire des modules disponibles (mais pas nécessairement activés)
  • Le répertoire mods-enabled : répertoire des modules activés (liens symboliques vers mods-availables)
  • Le répertoire sites-availables : répertoire des sites disponibles (mais pas nécessairement activés)
  • Le répertoire sites-enabled : répertoire des sites activés (liens symboliques vers sites-availables)

Pour activer un module (c'est-à-dire une fonctionnalité supplémentaire pour Apache) on utilise la commande a2enmod. Celle-ci va créer un lien symbolique dans le répertoire mods-enabled vers le fichier du module dans mods-available. Pour désactiver un module on utilise la commande a2dismod.

Pour créer un nouveau site, on crée la configuration associée dans le répertoire sites-availables et on l'active avec la commande a2ensite. Par défaut un seul site est disponible (fichier default), ce qui est suffisant si vous ne voulez gérer qu'un seul site. Sinon il faudra créer d'autres sites grâce aux hôtes virtuels.

A chaque fois que l'on modifie la configuration d'Apache, il faut le redémarrer :

/etc/init.d/apache2 restart

Activation de PHP

Normalement le module php pour Apache doit être activé par défaut suite à l'installation. Les fichiers php5.load et php5.conf doivent être présents dans mods-enabled. Si ce n'est pas le cas on utilise a2enmod :

a2enmod php5
/etc/init.d/apache2 restart

Les hôtes virtuels

Apache vous permet de gérer plusieurs sites sur un même serveur grâce au système d'hôtes virtuels. Supposons que vous ayez acheté un nom de domaine (mondomaine.com par exemple) et que vous vouliez héberger un blog à l'adresse blog.mondomaine.com, un site personnel à l'adresse user.mondomaine.com ainsi que le classique www.mondomaine.com. Avant de configurer Apache, vous devez configurer votre DNS pour que les noms des sites soient résolus en l'adresse IP de votre serveur.

Dans Apache, il est nécessaire d'activer la résolution des hôtes virtuels par nom dans le fichier /etc/apache/ports.conf. Normalement cela est déjà le cas par défaut :

NameVirtualHost *:80

Cette directive indique à Apache de résoudre les hôtes virtuels par nom pour les requêtes arrivant sur le port 80. Le caractère * signifie que cette résolution ne tient pas compte de l'adresse IP d'écoute.

Nous allons maintenant configurer les 3 sites. Pour chaque site il faut créer un fichier de configuration dans le répertoire site-availables. Il existe déjà un fichier default que nous allons utiliser pour www.mondomaine.com. Dans ce fichier le répertoire racine est paramétré comme étant /var/www. Nous allons le modifier pour mettre /var/www/default et préciser que ce site a pour nom www.mondomaine.com grâce à la directive ServerName. Au final le fichier default ressemble à cela :

<VirtualHost *:80>
	ServerName www.mondomaine.com
	DocumentRoot /var/www/default

	<Directory /var/www/default>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
...
</VirtualHost>

Dans la directive VirtualHost il est indispensable de préciser *:80 pour qu'Apache fasse le lien avec la directive NameVirtualHost.

Pour les 2 autres sites on crée 2 nouveaux fichiers blog et user (remplacez user par le nom de l'utilisateur) dans site-availables. Ces sites auront pour racine /var/www/blog et /home/user/public_html.
Le fichier blog contient :

<VirtualHost *:80>
	ServerName blog.mondomaine.com
	DocumentRoot /var/www/blog
	<Directory /var/www/blog>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

Le fichier user contient :

<VirtualHost *:80>
	ServerName user.mondomaine.com
	DocumentRoot /home/user/public_html
	<Directory /home/user/public_html>
		Options Indexes FollowSymLinks MultiViews
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>
</VirtualHost>

Il faut maintenant créer les répertoires racines des sites :

mkdir /var/www/default /var/www/blog /home/user/public_html

Dans chacun des répertoires on peut mettre, pour commencer, un fichier index.html contenant simplement le nom du site.

Il faut ensuite activer les nouveaux sites :

a2ensite blog user

Puis redémarrer Apache :

/etc/init.d/apache2 restart

Avec Firefox accédez à vos 3 sites et vérifier que cela fonctionne. Vous pouvez maintenant compléter les répertoires des sites avec du vrai contenu.

SSL

Nous allons maintenant activer le SSL dans Apache pour pouvoir y accéder par https. Il n'est pas possible d'utiliser simplement les hôtes virtuels par nom en SSL. Nous aurons donc un seul site accessible en https (www.mondomaine.com).

Le module ssl doit être activé :

a2enmod ssl

Vérifiez dans ports.conf qu'Apache écoute bien sur le port 443 :

<IfModule mod_ssl.c>
	Listen 443
</IfModule>

Pour fonctionner, le protocole https nécessite un certificat serveur. Nous allons utiliser openssl pour générer un certificat auto-signé :

openssl req -x509 -nodes -days 365 -newkey rsa:1024 -out /etc/apache2/server.crt -keyout /etc/apache2/server.key

Répondez aux questions posées en faisant attention au "Common Name". Sa valeur doit être l'adresse de votre site (www.mondomaine.com).

Le fichier de configuration du site SSL existe déjà. Il s'agit du fichier default-ssl dans site-availables. Modifiez-le comme le fichier default pour changer la racine du site en /var/www/default puis remplacer la référence au certificat avec celui que nous avons créé :

SSLCertificateFile /etc/apache2/server.crt
SSLCertificateKeyFile /etc/apache2/server.key

Activez alors le site SSL :

a2ensite default-ssl
/etc/init.d/apache2 restart

Vous pouvez maintenant tester que votre site est accessible en SSL. Attention : Le certificat que nous avons généré est auto-signé. Firefox devrait donc afficher une page d'alerte de sécurité et vous devrez ajouter une exception pour accéder à votre site. Pour avoir un "vrai" certificat, il faut passer par un organisme de certification qui vous le fournira moyennant paiement.

Sécurité

Voici quelques petits trucs qui permettent de cacher des informations qui pourraient aider une personne malveillante.

Les informations sur la version du serveur ne doivent pas être visibles. Dans le fichier /etc/apache/conf.d/security recherchez et modifiez les directives ServerTokens et ServerSignature pour avoir :

ServerTokens Prod

ServerSignature Off

Dans tous les fichiers de configuration des hôtes virtuels, pensez à utiliser l'option -Indexes qui empêche de voir la liste des fichiers d'un répertoire :

<Directory ...>
	Options -Indexes
</Direction>

Installation de Dotclear

Pour terminer ce tutoriel voici comment j'ai procédé à l'installation de Dotclear pour héberger mon blog.

Téléchargez la dernière version de Dotclear 2 sur http://fr.dotclear.org/ et décompressez l'archive dans le répertoire /var/www/blog. Vous obtiendrez un répertoire /var/www/blog/dotclear. Suivez les instructions pour une installation multiblogs dans la documentation. A côté du répertoire dotclear vous devriez donc avoir un répertoire pour votre blog (par exemple monblog).

D'après moi, il vaut mieux isoler l'application d'administration des blogs pour qu'elle ne soit accessible qu'en https. C'est plus sûr car cette application nécessite un mot de passe. Au final on accèdera au blog via l'url http://blog.mondomaine.com/monblog et pour l'administration on utilisera https://www.mondomaine.com/dotclear/admin.

Dans le fichier de configuration de l'hôte virtuel blog.mondomaine.com on ajoute :

<Location /dotclear>
	Order allow,deny
	deny from all
</Location>

Ceci permet d'interdire l'accès à l'administration de Dotclear par blog.mondomaine.com.

Pour rendre l'application d'administration accessible en https par www.mondomaine.com, on modifie la configuration du site SSL en ajoutant :

Alias /dotclear /var/www/blog/dotclear
<Directory /var/www/blog/dotclear>
	Options -Indexes FollowSymLinks MultiViews
	AllowOverride None
	Order allow,deny
	allow from all
</Directory>