Serveur Debian - apache
Par Seza le mercredi 13 juin 2007, 09:01 - Serveur Debian - Lien permanent
CHAPITRE 5 : APACHE
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:~$
Commentaires
Pour activer des modules apache t'a la commande a2enmod.
Pour activer un site tu a a2ensite, a2dissite pour le désactiver.
Oui j'ai découvert ces commandes il y a quelques jour justement. Elles sont bien utiles.
Merci pour tes éclairages !
Cher monsieur,
j'ai ete seduit par votre capacite a presenter au plus clair un sujet aussi complique. en effet, je fais la mes premiers pas debian a partir de vos articles et je remarque que c'est plus simple que je ne le pensais.
J'ai cependant eu un problème dans la configuration de apache2. En effet, après avoir suivi vos instructions, voici le message qu'il lance lorsque je le redémarre : ednaserv:/etc/apache2# /etc/init.d/apache2 start Starting web server (apache2)...Syntax error on line 72 of /etc/apache2/apache2.conf: Invalid command 'MaxKeepAlieRequests', perhaps misspelled or defined by a module not included in the server configuration failed!
j'ai ouvert le fichier apache2.conf. effectivement, "MaxKeepAlieRequests 75" a ete ecrit tel que vous l'avez demande. Je n'arrive pas a savoir ou se trouve le probleme ! Que faire ? Encore une fois merci pour la qualité du travail abattu
Bonjour à tous, Je poste juste au dessus un email reçu dernièrement car je ne peut y répondre l'email fourni est invalide. Donc je répond ici là ou c'est le plus probable que l'auteur voit la réponse.
Angelo : Je suis sincèrement désolé il s'agit d'une faute de frappe dans mon article.
La commande est MaxKeepAliveRequest. il manque un V dans le troisième mot.
Je pense que ceci corrigera tout tes problèmes.