Configurer un serveur dédié OVH/Kimsufi/Debian 5 pour LAMP
(NB : cette page consacrée à une installation Debian 5 est obsolète, la version pour Debian 6 Squeeze remise à jour en mai 2011 est ici)
6. Installation d’Apache2
apt-get install apache2 php5 libapache2-mod-php5 php5-gd apache2-dev
vi /etc/apache2/conf.d/security -> ServerTokens Prod ; ServerSignature Off
a2enmod rewrite
a2enmod expires
a2enmod headers
/etc/init.d/apache2 restart
7. Installation de Mysql et mtop
apt-get install mysql-server-5.0 php5-mysql
(ne pas spécifier de mdp root mysql à ce stade, sinon l’installation de mtop échouera. On le fera juste après !)
apt-get install mtop
mysql -u root -> exit
mysqladmin -u root password <votre mot de passe>
mysql -u root
-> ne doit plus fonctionner sans mdp
vi /etc/mysql/my.cnf
-> log_slow_queries = /var/log/mysql/mysql-slow.log
/etc/init.d/mysql restart
8. Installation de Munin et phpsysinfo
apt-get install munin
http://ksXXX.ovh.net/munin/
apt-get install phpsysinfo
-> il faut créer le <VirtualDirectory> et l’Alias pour phpsysinfo et sécuriser l’accès à ces deux répertoires en mettant par exemple un mot de passe .htaccess dans la config apache2 du virtualhost default.
9. Installation de PHP et eAccelerator
apt-get install libapache2-mod-php5 php5 \ php5-common php5-dev php5-curl php5-gd \ php-pear php5-imagick php5-mcrypt php5-memcache \ php5-mhash php5-mysql php5-cli
apt-get install re2c
wget http://bart.eaccelerator.net/source/0.9.6/eaccelerator-0.9.6-rc1.tar.bz2
(ou plus récent…)
tar -jxvf eaccelerator-0.9.6-rc1.tar.bz2
cd eaccelerator-0.9.6-rc1
phpize
./configure -enable-eaccelerator=shared
make
make install
vi /etc/php5/apache2/conf.d/eaccelerator.ini
-> créer le fichier contenant ceci :
extension="eaccelerator.so" eaccelerator.shm_size="16" eaccelerator.cache_dir="/var/cache/eaccelerator" eaccelerator.enable="1" eaccelerator.optimizer="1" eaccelerator.check_mtime="1" eaccelerator.debug="0" eaccelerator.filter="" eaccelerator.shm_max="0" eaccelerator.shm_ttl="0" eaccelerator.shm_prune_period="0" eaccelerator.shm_only="0" eaccelerator.compress="1" eaccelerator.compress_level="9"
mkdir /var/cache/eaccelerator chmod 0777 /var/cache/eaccelerator /etc/init.d/apache2 restart
10. Installation de PhpMyadmin, Logwatch et AWStats
apt-get install phpmyadmin
vi /etc/phpmyadmin/apache.conf
-> changer l’Alias par ‘/mon_admin_de_mysql_en_php’ par exemple (beaucoup d’attaques sur ce répertoire sinon)
/etc/init.d/apache2 restart
http://ksXXX.ovh.net/mon_admin_de_mysql_en_php/index.php?lang=fr-utf-8 -> favoris
apt-get install logwatch
apt-get install awstats
Paramétrer /etc/awstats/awstats.conf
LogFormat=1 ... SiteDomain="default" ... DNSLookup=2
/etc/init.d/apache2 restart
crontab -e
-> ajouter : 15,45 * * * * /usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log
/usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log
vi /etc/logrotate.d/apache2
-> ajouter :
prerotate /usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log endscript
11. Configurer vos sites et vos sauvegardes
Je recommande de sauvegarder toutes les bases mysql en utilisant l’utilisateur mysqldump,
de faire chaque jour un tar -xvf de tous les répertoires de publications web (en principe dans /var/www)
et de faire également un tar -xvf des répertoires suivants importants à sauvegarder et archiver régulièrement :
/etc
(contient les configs d’Apache, Phpmyadmin, Awstats, …)
/root
/home/<votre login>
/var/lib/awstats
La suite (exim,…) en page 3…





le 8 October 2009 à 16:33 h
Excellent tuto ! Tout a marché très bien pour moi. Il faut également ajouter que sur un serveur Kimsufi, le répertoire /var/www est sur une “petite” partition de 5Go. Mieux vaut créer un répertoire dans /home (partition de 500Go) et faire un lien symbolique de /var/www vers ce répertoire.
J’ai également un problème qui commence à m’énerver sérieusement : apache2 tourne avec le user www-data et j’upload les fichiers de mon site sous mon user (créé selon le tuto en faisant adduser ). J’ai donc des problèmes de droits en permanence : je suis obligé de faire des sudo chown www-data et des chown monuser sans arrêt. N’y a-t-il pas une meilleure solution ? Merci.
le 8 October 2009 à 17:00 h
@Steph
Tout à fait exact en ce qui concerne l’emplacement de /var/www sur la petite partition -> on peut au choix partitioner le serveur autrement avec l’outil OVH avant de procéder à l’installation ou réinstallation automatique du système. J’ai testé et cela fonctionne très bien; ou bien comme tu le suggères avoir recours à un lien symbolique (attention toutefois certaines configurations de sécurité “poussée” d’Apache n’acceptent pas les liens symboliques).
Pour les droits : dans les liens en bas de l’article, on trouve des tutos d’autres admin système qui installent apache en mode “suexec” pour le faire tourner sous un autre utilisateur. C’est une option. Personnellement, je règle le problème en utilisant les groupes : je place mon user perso ainsi que les autres webmasters éventuels dans le groupe www-data et j’autorise les modifs de fichier par les membres du groupe (chmod g+w). Apache quant à lui accède à tous les fichiers en lecture sans se poser de questions.
le 8 October 2009 à 21:17 h
@Yann
Je vois 1 problème à cette solution (chmod g+w) :
Certaines “appli” web (wordpress, drupal par exemple) ont besoin des droits d’écriture sur quelques répertoires : c’est à dire que le user www-data devra être capable d’écrire dans ces répertoires. Et malheureusement, les fichiers créés par ton user perso ne seront pas accessibles par le user www-data.
On peut toujours mettre le user www-data dans le groupe de ton user perso et faire un chmod g+w sur ces fichiers nouvellement créés, mais ça devient un peu tordu quand même… Je me demandais s’il n’y avait pas plus simple.
Quant à suexec, il me semble que les performances sont moins bonnes.
Je ne suis pas un pro en sécurité, mais est-ce qu’une solution qui consisterait à mettre un mot de passe au user www-data ne serait pas plus simple. Je pourrais me loguer sous ce user en utilisant le mot de passe (ou même avec une clé).
le 25 November 2009 à 1:38 h
Impressionnant ! je crois que c’est le premier tuto qui fonctionne du premier coup, je suis bluffé !
Félicitation pour ce tuto qui fonctionne a merveille, c’est du beau boulot. Il permet de partir sur des bases solides et à le merite d’être clair en plus.
Pour mon cas, j’ai adapté la sécurisation des dossiers munin et phpsysinfo à partir du tuto concernant le RPS d’OVH.
Un grand merci en tout cas…
le 3 April 2010 à 18:54 h
Bravo !!!
Je crois que c’est le premier tuto complet sur le sujet.
Franchement je suis bluffé !!
le 20 August 2010 à 17:29 h
Pas mal,
mais il manque sans doute la config iptables et l’install d’exim4
le 20 August 2010 à 17:41 h
@Teenage:
Concernant iptables, c’est un choix : il y a tellement peu de ports ouverts sur cette machine qui est un serveur web isolé (en fait seuls les ports http, le ssh étant déplacé à une adresse non triviale), et tellement peu de services actifs à l’écoute, qu’on peut se demander si c’est utile. Personnellement, je considère que non. Il y a beaucoup plus de chances d’être attaqué en http sur les applications php, et c’est donc plutôt l’installation de mod-secure pour Apache qui manque.
Bien entendu si on veut ajouter des services sur son Kimsufi, faire du routage, ou faire communiquer des serveurs entre eux par des services privilégiés, iptables peut devenir intéressant. Ce n’est pas l’objet de cette config.
Concernant Exim4, son installation est mentionnée dans le tuto, et la configuration est triviale et se fait en mode interactif pour l’usage qu’on en fait (uniquement relayer en smtp des mails envoyés par les applis web).
Mais n’hésites pas à compléter si tu as des suggestions, ou des liens intéressants pour ces deux aspects : je ne prétends pas être exhaustif, car à la base c’est juste un aide-mémoire à usage personnel
le 20 August 2010 à 18:49 h
Oui, mais ca peut pas faire de mal surtout si l’on ne maitrise pas tout les services (inetd).
Pour exim il n’était pas installé sur ma machine, donc :
sudo /etc/init.d/sendmail stop
sudo apt-get purge sendmail
sudo aptitude install exim4
dpkg-reconfigure exim4-config
Pour ma part je rajouterais bien quel info sur la sécurisation d’apache : droits, mod_secure, analyse de log,…
Apparemment chrooter semble contre-productif, surtout pour un serveur qui ne fait que du http.
Coté performance et sécurité le mod FastCGI PHP parait pas mal…
Sinon je proposerais bien de faire tourner les page web non public : awstats, phpsysinfo, munin, phpmyadmin sur une ip non routable et de n’y accéder que via un tunnel ssh ?
Sinon dans l’ensemble il manque quelque commentaire supplémentaire pour indiquer plus précisément à quoi sert tel package ou tel réglage.
Comme je vais écrire une doc détaillé sur la config de mon serveur, je te l’enevrais, cela te permettra d’enrichir ce post
le 20 August 2010 à 20:32 h
@Teenage :
Avec grand plaisir, et je prendrais le temps de mettre à jour cette page ou d’ajouter des pages complémentaires (et de te créditer pour tes infos). En effet, cette page est pas mal consultée (une dizaine de fois par jour en moyenne), donc j’en conclus qu’elle est utile à beaucoup de monde !
le 25 August 2010 à 14:56 h
[...] Cet article est donc un bon complément de mon autre article sur la configuration de base d’un environnement LAMP sur un serveur Debian du type de …. [...]
le 29 September 2010 à 18:43 h
[...] La version française de cet article est disponible ici. addthis_url = 'http%3A%2F%2Fwww.yann.com%2Fen%2Fhow-to-configure-a-dedicated-debian-server-for-lamp-29%2F09%2F2010.html'; addthis_title = 'How+to+configure+a+dedicated+Debian+server+for+LAMP'; addthis_pub = ''; [...]
le 28 November 2010 à 16:43 h
Juste sublime !
c’est la première fois que j’arrive autant à suive un tuto sur un sujet qui m’est COMPLETEMENT étanger ! je suis en joie c’est merveilleux ! J’ai reçu mes deux mails à la fin du tuto j’étais toute émue
il me reste justes quelques questions (spoiler : qd je disais que je ne connais pas le sujet c’est un euphémisme)
- pour la modification du numéro de port j’ai mis 22000 comme une buse – évidemment il a pas voulu – j’ai compris à ce moment là que j’étais une buse
– ceci dit je ne sais pas quelles sont les valeurs des autres ports possibles à mettre à la place de 22…
- l’install de apache2-dev a été refusée j’ai du remplacer par apache2-threaded-dev
- l’install de phpsysinfo : les consignes de sécurisation sont un peu elliptiques j’ai rien compris à ce qu’il fallait faire donc par précaution j’ai préféré ne pas l’installer …
- adresse accelerator à ce jour : wget http://bart.eaccelerator.net/source/0.9.6.1/eaccelerator-0.9.6.1.tar.bz2 – je sais pas à quoi ça sert mais le nom est cool ça a l’air bien
- Paramétrer /etc/awstats/. – aucune idée de ce que ça veut dire ni comment on fait …
- -> ajouter : 15,45 * * * * /usr/share/doc/awstats/examples/awstats_updateall.pl now -awstatsprog=/usr/lib/cgi-bin/awstats.pl >> /var/log/awstats.log
rien compris non plus
Encore merci et gigantesque bravo !
le 9 December 2010 à 18:53 h
@Liaz:
- Merci pour le compliment.
- Il n’y a ps de raison que ssh ne marche pas sur le port 22000. Mais certains firewalls bloquent ce port en sortie par défaut, donc il faut regarder de ce côté pour autoriser le flux.
- PHPSysinfo n’a rien d’indispensable, je m’en sers peu voire jamais.
- Eaccelerator est un cache d’opcode, c’est expliqué ici : http://www.yann.com/fr/accelerer-wordpress-partie-4-installer-des-caches-26/05/2009.html
- Awstats compile des statistiques de fréquentation à partir des logs Apache.
Bon courage pour la suite de votre découverte des joies de l’administration système.
le 9 December 2010 à 18:57 h
ah j’ai cru que c’était une blague le 22000 et que c’était une valeur beaucoup trop grande
j’avais rien compris alors
je peux essayer un nombre au pif alors ? genre 3450 ?
pour les joies de l’administration pour l’instant ça va c’est cool

J’aime beaucoup recevoir mon petit logwatch tous les matins. C’est très rigolo tous ces 404
//mysqladmin/: 1 Time(s)
//phpMyAdmin/: 1 Time(s)
//phpmyadmin/: 1 Time(s)
//pma/: 1 Time(s)
Encore merci !
Liaz
le 9 December 2010 à 19:04 h
@Liaz :
- Il ne faut pas utiliser un numéro de port “usuel” d’Un*x. Donc en général on choisit des numéros supérieurs à 10000. Même au-dessus de 10000 il existe quelques numéros réservés (mais rarement utilisés). Voir ici : http://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers
En principe 22000 ou 22001 ou 22xxx… sont dispos et fonctionnent.
- tous ces 404 sont les villains robots hackeurs qui cherchent phpMyAdmin mais le trouveront jamais là où vous l’avez mis si vous avez suivi mes conseils… on est trop forts !
le 9 December 2010 à 20:10 h
> En principe 22000 ou 22001 ou 22xxx… sont dispos et fonctionnent.
ok merci beaucoup ! j’essaie ça dès demain
> tous ces 404 sont les villains robots hackeurs qui cherchent phpMyAdmin mais le trouveront jamais là où vous l’avez mis si vous avez suivi mes conseils… on est trop forts !
gniarc gniarc gniarc

on les a bien eu
merci !
le 17 December 2010 à 20:28 h
Youpi !
)
bon j’ai mis un peu plus longtemps que prévu avant de tester mais c’est bon !
J’ai changé le port d’écoute de ssh, si je ne mets pas -p 22030 ça ne marche pas
(évidemment c’est pas 22030
C’est trop cool !
Merci pour tout yann !
et à bientôt sur d’autres articles
le 6 May 2011 à 17:05 h
[...] Tous les serveurs dédiés OVH et Kimsufi sont fournis avec une espace d’hébergement sur FTP gratuit. L’espace est limité mais il permet tout de même de sauvegarder l’essentiel des données systèmes d’un serveur web sous GNU/Linux, et en général également les sauvegardes de base de données et les fichiers de contenus de vos sites. Voici un mémo qui explique pas à pas comment activer votre espace de sauvegarde gratuit, puis comment mettre en place une politique de sauvegarde automatisée de vos fichiers les plus précieux. Pour rappel, mon guide de configuration rapide d’un serveur web LAMP sous Debian Linux chez OVH se trouve ici. [...]
le 9 May 2011 à 23:00 h
[...] (rappel : mon guide de configuration d’un environnement web LAMP complet sous Debian, par exemple sur un ser…) [...]
le 19 May 2011 à 17:43 h
[...] plus appropriée pour héberger des sites web dynamiques ! Vous pouvez maintenant suivre mon guide d’installation pas à pas pour configurer entièrement votre serveur web dédié chez O…. addthis_url = [...]
le 19 May 2011 à 23:22 h
[...] septembre 2009, j’avais écrit un tutoriel détaillé sur la configuration d’un serveur dédié OVH qui a remporté un grand succès. Aujourd’hui, il est temps de remettre à jour ce guide [...]
le 13 November 2011 à 9:00 h
Bonjour
Merci pour cette config !!
Par contre, eAccelerator n’est plus maintenue ? Il n’y a plus rien sur leur site.
Est ce passager ou faut il aller vers autre chose comme xcache?
le 14 November 2011 à 11:06 h
Le site eaccelerator.net semble effectivement inactif depuis quelques jours, ce n’est pas la première fois que eAccelerator “disparaît” des écrans suite à un déménagement un peu brusque. On trouve toujours les sources ici sur SourceForge : http://sourceforge.net/projects/eaccelerator/files/eaccelerator/