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 » :

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

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

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

Allons directement éditer la configuration de notre serveur :

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

Changez les lignes suivantes :

  1. Timeout 60
  2. MaxKeepAliveRequests 75
  3. KeepAliveTimeout 10

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

  1. #<IfModule mpm_prefork_module>
  2. # StartServers 5
  3. # MinSpareServers 5
  4. # MaxSpareServers 10
  5. # MaxClients 150
  6. # MaxRequestsPerChild 0
  7. #</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.

  1. MaxRequestsPerChild 500

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

  1. User nobody
  2. 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 »

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

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

  1. ServerTokens Prod
  2. ServerSignature Off

Ensuite la configuration des différents modules :

  1. DefaultLanguage fr
  2. LanguagePriority fr en ca ...
  3. 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.

  1. 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.

  1. bebeserv:/etc/apache2# cd mods-enabled/
  2. 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 :

  1. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.conf deflate.conf
  2. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/deflate.load deflate.load
  3. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/expires.load expires.load
  4. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/headers.load headers.load
  5. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/rewrite.load rewrite.load
  6. bebeserv:/etc/apache2/mods-enabled# ln -s ../mods-available/ssl.conf ssl.conf
  7. 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é.

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

Entrez les modifications comme suit :

  1. NameVirtualHost *
  2.  
  3. <VirtualHost *>
  4. ServerAdmin webmaster@localhost
  5.  
  6. DocumentRoot /home/nobody/default_apache/
  7.  
  8. <Directory />
  9. AllowOverride None
  10. </Directory>
  11. <Directory /home/nobody/default_apache/>
  12. AllowOverride None
  13. Order allow,deny
  14. allow from all
  15. </Directory>
  16.  
  17. CustomLog /var/log/apache2/access.log combined
  18. </VirtualHost>

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

  1. bebeserv:/etc/apache2/site-available# cd ../site-enabled
  2. bebeserv:/etc/apache2/site-enabled# rm 000-default
  3. 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 :

  1. bebeserv:/etc/apache2/site-enabled# cd /home/nobody
  2. bebeserv:/home/nobody# mkdir default_apache
  3. bebeserv:/home/nobody# chown nobody default_apache/
  4. bebeserv:/home/nobody# cd default_apache/
  5. bebeserv:/home/nobody/default_apache# nano index.html

Voici un petit html horrible mais qui suffira :

  1. <html>
  2. <head>
  3. <title>Bienvenue sur bebeserv.bebenet.local</title>
  4. </head>
  5. <body>
  6. <h1>Bienvenue sur bebeserv.bebenet.local</h1>
  7. </body>
  8. </html>

Enregistrez et quittez.

  1. 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.

  1. 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é.

  1. bebeserv:/home/nobody/default_apache# exit
  2. logout
  3. ALBAN@bebeserv:~$