Personal tools
You are here: Home GNU / Linux Debian 4.0 Etch Install Lighttpd and PHP 5 on Debian 4.0 Etch and 5.0 Lenny
Document Actions
  • Send this page to somebody
  • Print this page
  • Add Bookmarklet

Installer Lighttpd et PHP 5 sur Debian 4.0 Etch et 5.0 Lenny

by Pierre-Yves Landuré last modified 2010-11-16 08:45

Lighttpd est un serveur Web très léger et très simple à configurer. C'est une alternative intéressante à Apache lorsque vous souhaitez disposer d'une installation légère. Ce guide vous explique comment installer Lighttpd avec support du PHP 5.

Administration simplifiée

J'ai écrit un script pour simplifier l'installation et l'administration de LigHTTPd. Les guides présents sur ce site utilisent intensivement cet outil. Mettez en place lighty-tools :

command wget "http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-lighttpd-et-php-sur-debian-4-0-etch/lighty-tools" \
    --output-document="/usr/bin/lighty-tools"
command chmod +x "/usr/bin/lighty-tools"

Installation de Lighttpd

Installez le serveur LigHTTPd à l'aide de lighty-tools :

command lighty-tools setup-lighttpd

Mise en place de PHP 5

Pour disposer du support PHP 5 dans LigHTTPd, lancez :

command lighty-tools enable-php5

Si vos applications PHP le supportent, il est très intéressant d'activer le support d'X-Sendfile. Ce header permet aux applications Web de déléguer le téléchargement de fichiers au serveur HTTP. Si cette fonctionnalité vous intéresse, lancez :

command lighty-tools enable-x-send-file

Sécurisation de Lighttpd grâce à fail2ban

fail2ban est un outil qui surveille vos journaux d'erreurs. Il bannit automatiquement les adresses IP à l'origine d'attaques (Déni de Service, tentative de récupération de mot de passe par force brute, etc...). Pour faire en sorte que fail2ban protège votre serveur LigHTTPd, lancez :

command lighty-tools setup-fail2ban

Administration quotidienne

Pour mettre en place un hôte virtuel servant un dossier, utilisez cette commande (adaptez les valeurs graissées à vos besoins):

command lighty-tools add-virtual-host "www.mon-domaine-exemple.com" "/opt/mon-dossier"

Pour mettre en place un hôte virtuel redirigeant vers un autre site, utilisez cette commande (adaptez les valeurs graissées à vos besoins):

command lighty-tools add-redirect "www.mon-domaine-exemple.com" "http://www.domaine-cible.com/"

Installation (sans lighty-tools)

Nous commençons par installer les paquets nécessaires :

command apt-get install lighttpd libterm-readline-gnu-perl php5-cgi

Par défaut, sur Debian 4.0 Etch, Lighttpd fourni une configuration par défaut utilisant php4-cgi. Dans le cas ou vous utilisez cette distribution, appliquez le patch nécessaire :

if [ -n "$(/bin/grep '/usr/bin/php4-cgi' /etc/lighttpd/conf-available/10-fastcgi.conf)" ]; then
  command cp "/etc/lighttpd/conf-available/10-fastcgi.conf" "/etc/lighttpd/conf-available/10-fastcgi-php5.conf"
  command sed -i -e 's/php4/php/g' "/etc/lighttpd/conf-available/10-fastcgi-php5.conf"
fi

Activez la configuration adéquate suivant que nous utilisons Debian 4.0 Etch ou Debian 5.0 Lenny :

if [ -e "/etc/lighttpd/conf-available/10-fastcgi-php5.conf" ]; then
  command lighty-enable-mod fastcgi-php5
elif [ -e "/etc/lighttpd/conf-available/10-fastcgi-php.conf" ]; then
  command lighty-enable-mod fastcgi-php
elif [ -e "/etc/lighttpd/conf-available/15-fastcgi-php.conf" ]; then
  command lighty-enable-mod fastcgi
  command lighty-enable-mod fastcgi-php
else
  command lighty-enable-mod fastcgi
fi

Et rechargez la configuration de lighttpd :

/etc/init.d/lighttpd force-reload

Pour aller plus loin (sans lighty-tools)

Amélioration des performances de PHP

Si vous le souhaitez, vous pouvez installer un accélérateur PHP en suivant mon guide Installer XCache sur Debian 4.0 Etch.

Accélérer le téléchargement des fichiers avec X-Sendfile

Si vos applications PHP le supportent, il est très intéressant d'activer le support d'X-Sendfile. Ce header permet aux applications Web de déléger le téléchargement de fichiers au serveur HTTP. Pour activer cet outil, utilisez cette ligne de commande :

/bin/sed -i -e '/bin-path/a\
\t\t"allow-x-send-file" => "enable",' \
    /etc/lighttpd/conf-available/10-fastcgi*.conf

Désactiver l'affichage du contenu des dossiers

Par défaut, Lighttpd affiche le contenu des dossiers lors qu'aucun fichier index n'est présent. Cela n'est pas une faille de sécurité en soit, mais facilite la récupération des fichiers présents sur le serveur, même lorsque cela n'est pas souhaitable. Si vous souhaitez désactiver cette possibilité de naviguer dans le contenu des dossiers, il vous faut en premier lieu créer le fichier de configuration adéquat :

/bin/echo '## directory listing configuration
## we disable the directory listing by default
##

$HTTP["url"] =~ "^/" {
  dir-listing.activate = "disable"
}' | /usr/bin/tee /etc/lighttpd/conf-available/20-disable-listing.conf

Activez ensuite cette nouvelle configuration :

/usr/sbin/lighty-enable-mod disable-listing

Et rechargez la configuration de lighttpd :

/etc/init.d/lighttpd force-reload

Mise en place d'un hôte virtuel avec Lighttpd

Lighttpd, tout comme son cousin Apache sait gérer simplement plusieurs sites Internet sur un même serveur. Voici comment mettre en place rapidement un hôte virtuel proposant un dossier.

En premier lieu, renseignez le nom de domaine de votre hôte virtuel (remplacez la valeur en gras):

SITE_HOSTNAME=www.mon-domaine.fr

Maintenant, renseignez le dossier que vous souhaitez voir assigné à ce domaine (remplacez la valeur en gras):

SITE_PATH=/var/www/www.mon-domaine.fr/

Une fois ceci-fait, téléchargez le modèle de configuration de votre hôte virtuel:

SITE_CONF=$(/bin/echo ${SITE_HOSTNAME} | /bin/sed -e 's/\./-/g')
/usr/bin/wget http://howto.landure.fr/gnu-linux/debian-4-0-etch/installer-lighttpd-et-php-sur-debian-4-0-etch/lighttpd-vhost.conf \
    --output-document=/etc/lighttpd/conf-available/20-${SITE_CONF}.conf

Et appliquez vos paramètres à ce modèle:

/bin/sed -i -e "s/SITE_HOSTNAME/${SITE_HOSTNAME}/g" \
            -e "s|SITE_PATH|${SITE_PATH}|g" \
         /etc/lighttpd/conf-available/20-${SITE_CONF}.conf

Activez la configuration ainsi mise en place:

/usr/sbin/lighty-enable-mod ${SITE_CONF}

Testez la configuration ainsi mise en place:

/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf

Et si vous ne rencontrez aucune erreur, rechargez la configuration de Lighttpd :

/etc/init.d/lighttpd force-reload

Vous devriez maintenant pouvoir accéder à votre site Internet.

Remarque : L'utilisation d'hôte virtuels Lighttpd est utile, même si vous utilisez Lighttpd derrière un Reverse Proxy Apache 2. Si vous en doutez, intéressez vous à la directive ProxyPreserveHost du mod_proxy Apache.

URL Rewriting avec Lighttpd

Contrairement à Apache 2, Lighttpd n'est pas capable de faire des réécritures complexes des URLs. Cependant, il existe un moyen très simple de mettre en place de l'URL rewriting pour certaines applications Web, dont Wordpress et les applications Symfony. Il suffit de spécifier que le fichier "index.php" de ces applications Web est chargé de gérer les erreurs 404.

Pour ce faire, ajoutez simplement la ligne suivante dans le fichier de configuration de l'hôte virtuel hébergeant votre application, et adaptez le chemin vers le fichier index.php pour qu'il corresponde à votre application:

server.error-handler-404 = "/index.php"

Mise en place du protocole HTTPS

Afin de mettre en place le HTTPS, il vous faut en premier lieu créer un certificat SSL. Pour ce faire, je vous conseille de suivre mon guide:

Créer un certificat SSL multi-domaines

Remarque: Afin de ne pas avoir à recréer un certificat SSL à chaque fois que vous ajoutez un sous-domaine, je vous conseille de créer votre certificat SSL avec un Joker. Par exemple, j'ai moi-même créé mon certificat SSL pour être valide pour les domaines suivants:

  • landure.fr
  • *.landure.fr
  • landure.com
  • *.landure.com
  • etc...

Une fois le certificat SSL créé, nous le plaçons dans le dossier de la configuration Lighttpd, et nous le regroupons en un seul fichier, afin de le retrouver simplement:

/bin/cp /etc/openssl/PRIVATE_KEYS/https_key.pem /etc/lighttpd/server.pem
/bin/cat /etc/openssl/CERTIFICATES/https_cert.cert >> /etc/lighttpd/server.pem

Une fois ceci fait, nous plaçons des droits adéquoits sur les fichiers:

/bin/chown root:root /etc/lighttpd/server.pem
/bin/chmod go-rw /etc/lighttpd/server.pem

Enfin, activez le module SSL de Lighttpd :

/usr/sbin/lighty-enable-mod ssl

Et rechargez votre configuration :

/etc/init.d/lighttpd force-reload

Configurations manuelles

Configuration des dates d'expiration du contenu

Depuis peu, j'utilise l'extension Firefox YSlow pour optimiser le temps de chargement des sites que je développe. Cette extension recommande de fixer les dates d'expiration du contenu statique dans un futur distant. Par défaut, Lighttpd ne met pas en place de dates d'expirations. Pour ajouter une expiration future de certains de vos contenus dans Lighttpd, utilisez les 2 éléments suivants dans la configuration de votre site.

Il faut activer le module expire :

server.modules += ( "mod_expire" )

Et il faut configurer les dossiers ou se trouve le contenu statique. La configuration ci-dessous correspond à un site Symfony :

  expire.url  = (
      "/images/" => "access plus 1 years",
      "/css/" => "access plus 1 years",
      "/js/" => "access plus 1 years",
      "/favicon.ico" => "access plus 1 years"
    )

Une fois ceci fait, testez la configuration de Lighttpd :

/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf

Et rechargez cette configuration :

/etc/init.d/lighttpd force-reload

Voir aussi

Attachments

merci

Posted by blackdown at 2010-07-22 15:08
merci beaucoup cela m'a bien aidé, vus que pas beaucoup de monde parle de lighttpd sur le web (en français)....

BlogBang
Navigation
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards:

Wikio