date: 26 Nov 2009 title: Home serveur : installation du serveur web tags: lighttpd, mysql, php, planet-libre, auto-hébergement xrefs: home-serveur-tri-du-courrier-avec-sieve.txt, home-serveur-configuration-du-serveur-imap-dovecot.txt, home-serveur-premiers-reglages.txt, home-serveur-proteger-son-serveur-configuration-du-pare-feu.txt, home-serveur-proteger-son-serveur-configuration-de-fail2ban.txt, home-serveur-recuperer-ses-mail-avec-fetchmail.txt, home-serveur-installation.txt, home-serveur-quelques-astuces-bien-utiles.txt, home-serveur-configuration-du-serveur-de-mail-postfix.txt, home-serveur-utilisation-de-cles-pour-ssh.txt, home-serveur-openssh.txt, home-serveur-sauvegarde-des-maildirs.txt Enfin le serveur web :) . J'ai choisi d'utiliser lighttpd (prononcez lighty, c'est plus simple). Il est moins gourmand qu'Apache en terme d'utilisation mémoire et de charge CPU, tout en étant aussi performant et sécurisé bien sûr, donc parfait pour notre petit serveur. Par contre, il est moins complet qu'Apache : par exemple, il ne supporte pas les fichiers .htaccess, il faut tout définir dans le fichier de configuration général. ## Installation La présentation étant faite, vous pouvez commencer à installer le paquet : sudo apt-get install lighttpd Voilà votre serveur web fonctionne déjà ! Mais nous n'allons pas nous arrêter là, c'est pas intéressant quand tous marche du premier coup ;) . ## Quelques optimisations ### En fonction du système utilisé : Si vous avez un noyau Linux 2.6 (dans 99% des cas), rajoutez ces 2 lignes dans le fichier /etc/lighttpd/lighttpd.conf : server.event-handler = "linux-sysepoll" server.network-backend = "linux-sendfile" Sinon, allez voir la [doc](http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:Performance#Event- Handlers) pour savoir quelles valeurs mettre ### Compression : Si ce module est activé, et si le navigateur du client le supporte, les données envoyées seront compressées pour réduire l'utilisation de la bande passante. Ça peut être intéressant pour un home serveur, puisque les FAI fournissent en général une bande passante en upload minable. Vérifiez qu'il est bien chargé (à priori il l'est) : server.modules = ( ... "mod_compress", ... ) ## PHP & MySQL Tout dépend de ce que vous voulez mettre sur votre serveur, mais vous aurez très probablement besoin de PHP et MySQL. Pour les installer : sudo apt-get install php5-cgi php5-mysql mysql-serveur-5.0 ### Configuration de PHP : D'abord, il faut activer le module dans votre lighttpd.conf, comme ceci : server.modules = ( ... "mod_fastcgi" ) Puis définir quelques chemins : fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php5-cgi", "socket" => "/var/run/lighttpd/php-fastcgi.socket" ))) Ensuite, je vous conseille d'aller faire un petit tour dans le fichier /etc/php5/cgi/php.ini. C'est le fichier de configuration géréral de php, et il y a de quoi faire si vous voulez augmenter un peu la sécurité de votre serveur. [System-linux](http://www.system-linux.eu/index.php?post/2009/01/03/Securiser-vo tre-phpini) a fait un très bon article dessus, j'en ferai peut être un si je trouve des trucs à rajouter. ### Configuration de MySQL : Normalement, lors de l'installation vous avez dû entrer un mot de passe root pour la base. Si ce n'est pas le cas : sudo dpkg-reconfigure mysql-serveur-5.0 Votre base est prête à l'emploi. Comme pour PHP, on reviendra peut être dessus pour l'optimiser et la sécuriser un peu mieux. ## Un groupe webadmin Un petit truc pratique pour pouvoir gérer votre site correctement sans être root. Rappelez vous, on avait créé un groupe sysadmin, pour avoir le droit d'utiliser sudo. Maintenant, on va créer un groupe webadmin, qui aura tous les droits dans le répertoire /var/www : sudo addgroup webadmin sudo chgrp -R webadmin /var/www sudo chmod g+ws -R /var/www Enfin, vous pouvez vous ajouter au groupe : sudo adduser votre-login webadmin ## Ouverture dans le pare feu Quand vous serez près à ouvrir votre site au monde entier ( :D ), ouvrez le port 80 sur votre routeur et dans le script d'iptables. Pour fail2ban, il ne gère pas nativement lighttpd. Mais ce n'est pas grave, un certain [Buanzo](http://blogs.buanzo.com.ar/2009/01/fail2ban-rules-for-lighttpd-fastcgi- alerts.html) a déjà écrit la regexp qui faut. [Téléchargez le fichier](http://www.buanzo.com.ar/files/lighttpd-fastcgi.conf) puis placez le dans /etc/fail2ban/filter.d/. Ensuite, éditez le fichier /etc/fail2ban/jail.conf pour y mettre ceci : [lighttpd-fastcgi] enabled = true port = http,https filter = lighttpd-fastcgi logpath = /var/log/lighttpd/error.log maxretry = 6 Et relancez votre pare feu bien sûr. Voila pour le serveur web. Suivant, ce que j'aurai fait sur mon serveur je ferai sûrement des tutos pour la gestion du https, de l'URL rewriting (pour Wordpress par exemple), l'utilisation de Xcache (pour éviter de ré exécuter le php des pages à chaque requêtes), l'installation d'un webmail (si ce n'est pas aussi simple qu'un Wordpress), etc... Donc ce n'est pas fini !