Lighttpd

De Wiki de la communauté Mandriva.

Petite page pour mettre mes notes d'installation du serveur lighttpd avec le support du php


Sommaire

Installation

Tout se fait en utilisateur root

# Créer un utilisateur système "apache"
adduser --system --comment "Utilisateur système pour le serveur web" --home-dir /var/www --shell /sbin/nologin apache 

# Si besoin édition des fichier passwd et group
vi /etc/passwd ; vi /etc/group

# Installation des paquets lighttpd et php en mode fastcgi :
urpmi lighttpd php-fcgi

# Post configuration : création d'un dossier qui sera utile pour le fastcgi :
mkdir /var/run/lighttpd
chown apache:apache /var/run/lighttpd

# Mettez à jour la configuration de lighttpd (vois plus bas les modifications à effectuer) :
vi /etc/lighttpd/lighttpd.conf

# Tester votre fichier de configuration
/usr/sbin/lighttpd -tf /etc/lighttpd/lighttpd.conf

# Démarrez le serveur :
service lighttpd start

# Si vous souhaitez que le serveur soit actif au prochain re-démarrage de votre ordinateur :
chkconfig lighttpd on

Modification à faire dans le fichier lighttpd.conf

  1. Obligatoire : dé-commenter (ligne 24) le server.modules "mod_fastcgi"
  2. Facultatif : si c'est pour co-exister avec apache dé-commenter (ligne 141) server.port
  3. Facultatif : si vous voulez connaître le "pid" du processus, dé-commenter (ligne151) server.pid-file
  4. Obligatoire : dé-commenter le groupe (ligne 213 à 220) fastcgi.server
  5. Obligatoire : mettre à jour (ligne 217) la variable "bin-path" avec "/usr/bin/php-fcgi" (Nous indiquons à lighttpd là où il trouvera le binaire php)

Maj du 28 avril 2010 à 07:22 (UTC) : La variable cgi.fix_pathinfo est maintenant par défaut sur 1, il n'y a rien à faire ;-)

  1. Obligatoire : la variable "cgi.fix_pathinfo" de /etc/php.ini doit être égale à 1 (ligne 837)
  2. MAJ : il semblerai que ce soit le fichier "/etc/php-cgi-fcgi.ini" qui soit utilisé pour la configuration, c'est donc lui qui doit avoir la bonne valeur de "cgi.fix_pathinfo".

Vérifier que le dossier /var/www/html contient bien un fichier "index.html", s'il n'y en pas, créez-en un

# Edition du fichier
# vi /var/www/html/index.html

# Copiez-collez le texte ci-dessous dans le fichier /var/www/html/index.html
<html>
   <head><title>Test du bon fonctionnement de mon serveur de pages web</title></head>
   <body><h1>Mon serveur fonctionne, c'est extra !</h1></body>
</html>

Maintenant ouvrir avec un navigateur la page http://localhost/ ou http://localhost:81/

C'est OK !

Soucis connus

Après avoir installer le paquet php-fcgi, une mise à jour du système vous installe le paquet php-cgi en lieu et place du paquet php-fcgi. A ce jour je ne sais pas pourquoi et comment remettre le bon paquet. En revanche, le support du php continue de fonctionner :-)


Installer un sous domaine domaine.mon_serveur.tld ou hôte virtuel

Il arrive fréquemment que nous voulions mettre en place des sous-domaines ou des serveurs virtuels. Avec lighttpd, rien de plus simple (nous partons du principe que tout ce qui commence par sudo doit être installé par root si le paquet sudo n'est pas installé).

  1. Configure& convenablement votre fichier de zone dns pour faire pointer votre sous domaine vers votre serveur.
  2. Editez le fichier de configuration pour créer cette hôte.
# Ajouter à votre fichier de zone un enregistrement du type CNAME (le point final à sont importance)
mon_sous_domaine 10800 IN CNAME mon_serveur.mon_domaine.tld.

# Edition du fichier de configuration, voir la liste des changement plus bas
sudo vi /etc/lighttpd/lighttpd.conf

Liste des changement à faire dans le fichier (les numéros de lignes sont donnés à titre indicatif).

  1. Dé-commenter mod_simple_vhost, ligne 26
  2. Ajouter la section suivante après le pavé virtual hosts, ligne 154
##### Mon nouveau serveur virtuel
###
$HTTP["host"] == "mon_sous_domaine.mon_domaine.tld" {
   server.document-root = "/var/www/mon_sous_domaine"
   accesslog.filename = "/var/log/lighttpd/mon_sous_domaine.access.log"
}

Ensuite :

# Relancez le service et testez son bon fonctionnement
sudo service lighttpd restart ; sudo service lighttpd status


Déployer son application rails

Après avoir bien chercher un peux partout de la doc, je vous compile mes notes. Je pars du principe que rails est installé sur votre ordinateur (voir rails).

Un autre pré-requis est au choix

  • que vous puissiez modifier le fichier /etc/hosts de votre ordinateur
  • que l'application est sur un serveur publique sur le web et que vous avez accès au serveur DNS de votre zone.

Nous partons du principe que votre application s'appelle mon_appli sur votre ordinateur local et mon_appli.mon_domaine.tld sur votre ordinateur accessible pour le publique.

# Pré-requis : ruby-fcgi (vous évitera bien des déboires)
urpmi --auto ruby-fcgi

# J'installe mon application directement dans /var/www/html :
cd /var/www/html

# Création de l'application (pour faire un test) ou décompressez l'archive de votre application :
# ATTENTION : avec la version de rails (rails -v) 2.3.5, il faut spécifier le fonctionnement par FastCGI, il faut ajouter -D à la ligne de commande
rails -D mon-appli.mon-domaine.tld

# Donnez votre application à l'utilisateur apache (si c'est lui qui est propriétaire du processus lighttpd - version par défaut) :
chown -R apache:apache mon-appli.mon-domaine.tld

# Modification du fichier de configuration de lighttpd :
vi /etc/lighttpd/lighttpd.conf

Ajouter les lignes suivantes (changer mon-appli par le nom de la votre, mon-domaine par le votre et tld par votre extension)

# Dé-commenter la ligne 26 (dans mon cas) pour activer les hôtes virtuels :
  "mod_simple_vhost" 

# Ajouter cette section sous la section VIRTUAL HOSTS, ligne 154 dans mon fichier :
$HTTP["host"] == "mon-appli.mon-domaine.tld" {
   # Indiquez le chemin complet de votre application (dossier public inclu) :
   server.document-root = "/var/www/html/mon-appli.mon-domaine.tld/public"
   # Si vous voulez les comptes-rendus d'utilisation de votre application (vérifiez que le répertoire /var/log/lighttpd appartient bien à apache)
   # Vous pouvez aussi mettre les log dans le dossier suivant : /var/www/html/mon-appli.mon-domaine.tld/log :
   accesslog.filename = "/var/log/lighttpd/mon-appli.mon-domaine.tld.access.log"
   # Donne la page à afficher si nous avons une erreur :
   server.error-handler-404 = "/dispatch.fcgi"

   # Rails en mode FCGI :
   fastcgi.server = ("dispatch.fcgi" =>
         # Indiquez ou sera stocké le fichier de socket (le dossier /var/run/lighttpd doit appartenir à l'utilisateur apache) :
      (  ("socket" => "/var/run/lighttpd/mon-appli.mon-domaine.tld.sock"
         # Le chemin complet de la page de démarrage de votre application :
         ,"bin-path" => "/var/www/html/mon-appli.mon-domaine.tld/public/dispatch.fcgi"
         # Le nombre de processus minimum :
         ,"min-procs" => 1
         # Le nombre de processus maximum :
         ,"max-procs" => 4
         # Les variable d'environnement aux choix : development, test ou production et le jeux de caractères à utiliser :
         ,"bin-environment" =>
            ("RAILS_ENV" => "test"
            ,"LANG" => "fr_FR.UTF-8"
            )
         ,"bin-copy-environment" => ("PATH")
         )
      )
   )
}

Maintenant il faut tester la syntaxe de notre fichier et tester ...

# Test de la syntaxe :
/usr/sbin/lighttpd -t -f /etc/lighttpd/lighttpd.conf

# Relancer le serveur :
service lighttpd restart

# Vérifier si le serveur fonctionne
service lighttpd status

Le problème est que si le serveur ne fonctionne pas, je ne suis pas informé, c'est pour cela que j'interroge le "status" du service. Si cela fonctionne pas, il y a donc a un soucis ! Alors le fichier /var/log/lighttpd/error.log est vraiment votre ami !

# Ouvrez une nouvelle console et tapez :
tail -f /var/log/lighttpd/error.log

Maintenant pour voir votre site, modifiez la configuration de votre DNS (c'est un autre tutoriel) pour faire coïncider mon-appli.mon-domaine.fr sur votre ordinateur (si vous êtes en local, la modification du fichier /etc/hosts"" pourra suffire)

# Editez le fichier hosts
vi /etc/hosts

# Modification à ajouter :
127.0.0.1   mon_appli

Prenez un navigateur, ouvrez la page web mon-appli.mon-domaine.fr et dite merci !