Maintenant que nous disposons d'un serveur FTP et d'un serveur de base de données, il est grand temps que nous installions notre serveur web.

Commençons par installer « Apache » :

ALBAN@bebeserv:~$ sudo -i
Password:
bebeserv:~# apt-get update
[...]
bebeserv:~# apt-get install apache2 apache2-doc apache2-utils apache2.2-common
[...]

Maintenant comme à l'habitude coupons le serveur fraîchement installé.

bebeserv:~# /etc/init.d/apache2 stop

Allons directement éditer la configuration de notre serveur :

bebeserv:~# cd /etc/apache2
bebeserv:/etc/apache2# nano apache2.conf

Changez les lignes suivantes :

Timeout 60
MaxKeepAliveRequests 75
KeepAliveTimeout 10

Par défaut aujourd'hui « apache2 » est installé avec le module worker MPM. Commentez donc les lignes :

#<IfModule mpm_prefork_module>
#    StartServers          5
#    MinSpareServers       5
#    MaxSpareServers      10
#    MaxClients          150
#    MaxRequestsPerChild   0
#</IfModule>

Pour le module worker je garde les réglages par défaut qui sont bien pour une configuration moyenne. Je change uniquement la valeur du « MaxRequetsPerChild » sur une valeur assez courte. Pourquoi ? Etant donné que nous allons plus tard installer et travailler avec PHP, PHP requiert (surtout dans sa version 5) beaucoup de mémoire. Les fils apache augmenterons leur mémoire alloué de manière conséquente. Ainsi pour servir une image un fils s'allouera disons 30 Ko de mémoire, ensuite s'il reçoit une requête pour un script PHP il agrandira sa mémoire disons à 4 Mo. S'il ressert la même image que précédemment il gardera les 4 Mo de mémoire allouée. C'est pourquoi il est fort intéressant (même si c'est consommateur en CPU) de renouveler les fils apache assez régulière de manière à ne pas surconsommer de RAM.

MaxRequestsPerChild 500

Maintenant en relation directe avec le chapitre sur l'installation du serveur FTP, configurez l'utilisateur et le groupe apache :

User nobody
Group nogroup

Utilisez ces utilisateurs permet de mettre en relation FTP, Apache, (et plus tard PHP) en limitant les problèmes d'utilisateur et de droits d'exécution. Tout le monde aura pour UID et GID « nobody » et « nogroup » ce qui évitera les problèmes du genre (je ne peux pas supprimé les fichier créer par PHP dans mon FTP... ou d'installer des plugins supplémentaire comme « suphp » pour apache). Pour une question de sécurité et de commodité par rapport au fichier UNIX caché, j'empêche aux utilisateurs d'accéder à tous les fichier commençant par un « . » et pas uniquement les fichiers commençant par « .ht »

<Files ~ "^\.">
	Order allow,deny
	Deny from all
</Files>

Toujours pour la sécurité, donnons un minimum d'information :

ServerTokens Prod
ServerSignature Off

Ensuite la configuration des différents modules :

DefaultLanguage fr
LanguagePriority fr en ca ...
AddDefaultCharset ISO-8859-15

Enregistrez et quittez. Supprimez le fichier de configuration du charset dans « conf.d » puisque nous venons de le préciser dans la configuration générale.

bebeserv:/etc/apache2# rm conf.d/charset

Pour moi le fichier « ports.conf » est correctement configuré puisque notre serveur sera ouvert sur l'extérieur. Maintenant supprimons les modules qui ne nous servirons pas.

bebeserv:/etc/apache2# cd mods-enabled/
bebeserv:/etc/apache2/mods-enabled# rm autoindex* cgi* env* negociation* setenvif* status*

Voici les seuls modules que j'ai a présent « alias », « auth_* », « dir », « mime ». Maintenant ajoutons les modules que nous souhaitons et qui n'étaient pas présent :

bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.conf deflate.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.load deflate.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/expires.load expires.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/headers.load headers.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load rewrite.load
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf ssl.conf
bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.load ssl.load

Voilà nous en avons terminé avec les modules. Maintenant pour éviter de divulguer notre configuration à tout le monde. Configurons notre virtualhost et créons une petite page d'accueil en attendant que notre site soit installé.

bebeserv:/etc/apache2/mods-enabled# cd ../site-available
bebeserv:/etc/apache2/site-available# cp default mydefault
bebeserv:/etc/apache2/site-available# nano mydefault

Entrez les modifications comme suit :

NameVirtualHost *

<VirtualHost *>
	ServerAdmin webmaster@localhost

	DocumentRoot /home/nobody/default_apache/

	<Directory />
		AllowOverride None
	</Directory>
	<Directory /home/nobody/default_apache/>
		AllowOverride None
		Order allow,deny
		allow from all
	</Directory>

	CustomLog /var/log/apache2/access.log combined
</VirtualHost>

Enregistrez et quittez. Activons ce site par défaut plutôt que celui proposé par apache :

bebeserv:/etc/apache2/site-available# cd ../site-enabled
bebeserv:/etc/apache2/site-enabled# rm 000-default
bebeserv:/etc/apache2/site-enabled# ln -s ../site-available/mydefault 000-default

Maintenant créons le dossier hébergeant ce virtuelhost et une petite page d'accueil :

bebeserv:/etc/apache2/site-enabled# cd /home/nobody
bebeserv:/home/nobody# mkdir default_apache
bebeserv:/home/nobody# chown nobody default_apache/
bebeserv:/home/nobody# cd default_apache/
bebeserv:/home/nobody/default_apache# nano index.html

Voici un petit html horrible mais qui suffira :

<html>
		<head>
				<title>Bienvenue sur bebeserv.bebenet.local</title>
		</head>
		<body>
				<h1>Bienvenue sur bebeserv.bebenet.local</h1>
		</body>
</html>

Enregistrez et quittez.

bebeserv:/home/nobody/default_apache# chown nobody index.html

Voilà c'est terminé. Nous allons pouvoir redémarrer apache et regarder si notre page d'accueil s'affiche bien.

bebeserv:/home/nobody/default_apache# /etc/init.d/apache2 start

Essayez cette adresse depuis votre navigateur sur un pc connecter au réseau local : « http://10.0.0.151/ » et observez le résultat !

Un dernier petit rappel nous n'avons pas configurer « iptables » dans cette section car nous avions déjà ouvert le port 80 pour « apt ».

Le chapitre est maintenant terminé.

bebeserv:/home/nobody/default_apache# exit
logout
ALBAN@bebeserv:~$