{{tag>serveur réseau}} ------ ====== Lighttpd : Un serveur web léger ====== {{ light_logo_170px.png}} **Lighttpd** est un serveur web (//HTTP//) qui, de par sa légèreté, se veut rapide. Il supporte un grand nombre de fonctionnalités comparables à celles d'[[:apache2|Apache]] (comme les rewrite, fast-cgi, proxy, etc.) pour des performances aussi bonnes sinon meilleures dans les tests faits par Lighttpd. Par rapport à Apache, il ne supporte pas les fichiers htaccess ou encore htpasswd. Ces 2 problèmes sont contournables si vous avez accès à la configuration de votre serveur. Lighttpd se trouve dans le top 5 des serveurs les plus utilisés dans le monde. Cette page est là pour vous expliquer comment l'installer et comment l'utiliser de manière simple. ===== Installation ===== Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer le paquet]] **[[apt://lighttpd|lighttpd]]**. ===== Configuration ===== Tous les fichiers de configuration se trouvent dans **/etc/lighttpd**. ==== /etc/lighttpd ==== Voici ce que vous pouvez trouver dans ce répertoire. lighttpd.conf conf-available conf-enabled * Le fichier **lighttpd.conf** est le fichier de configuration principal à partir duquel les directives principales sont chargées. * **conf-available** est un dossier qui contient les fichiers de configuration des différents modules. * **conf-enabled** est un dossier ===Le fichier lighttpd.conf=== Le plus important est de configurer la directive suivante qui définit la racine de Lighttpd. server.document-root = "/votre/chemin/" Quelle que soit la modification faite dans le fichier de configuration, il est possible de vérifier que la syntaxe est correcte avec la commande suivante: lighttpd -t -f /etc/lighttpd/lighttpd.conf **/etc/lighttpd/lighttpd.conf** pouvant, bien sûr, être remplacé par l'adresse de votre fichier de configuration. ==Les modules== La première partie du fichier consiste en l'activation des différents modules du serveur. Pour activer un module, il suffit de décommenter sa ligne ou utiliser la commande **lighty-enable-mod** que nous verrons un peu plus loin. server.modules = ( "mod_access", "mod_alias", ... # "mod_flv_streaming", # "mod_evasive" ) Il est possible de retrouver une documentation détaillée des différents modules sur le wiki officiel de Lighttpd: [[http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs#Modules]] Une documentation plus exhaustive sur les différentes directives de configuration sont disponibles à l'adresse suivante: [[http://redmine.lighttpd.net/projects/lighttpd/wiki/Docs:ConfigurationOptions]] ==== PHP et MySQL ==== Nous allons mettre en place le langage PHP5 et configurer Lighttpd pour qu'il puisse l'interpréter. [[:tutoriel:comment_installer_un_paquet|Installer le paquet]] [[apt://php5-cgi|php5-cgi]] et éventuellement [[apt://php5-gd|php5-gd]]. Exécutez la commande suivante pour activer le module fastcgi : sudo lighty-enable-mod fastcgi Depuis Ubuntu 10.10, il faut activer le module fastcgi-php pour que cela fonctionne (sous Ubuntu 10.04 sauter l'étape) : sudo lighty-enable-mod fastcgi-php Puis rechargez la configuration de lighttpd: sudo /etc/init.d/lighttpd force-reload Enfin, on teste que le serveur prend bien en compte PHP (nb: si vous avez changé le chemin de //server.document-root//, remplacez // /var/www/ // par le chemin que vous avez indiqué): sudo sh -c 'echo "" > /var/www/test.php' sudo chown -R www-data:www-data /var/www/test.php w3m http://localhost/test.php Lors du test ci-dessus si vous rencontrez une **erreur 403**, ajoutez à la fin du fichier **/etc/php5/cgi/php.ini** : cgi.fix_pathinfo = 1 (//source erreur 403// : [[http://www.ubuntugeek.com/lighttpd-webserver-setup-with-php5-and-mysql-support.html|ubuntugeek.com]]) Si, sous **Ubuntu 11.10**, la correction du fichier /etc/php5/cgi/php.ini ne suffit pas sudo nano /etc/lighttpd/lighttpd.conf et ajoutez-y fastcgi.server = ( ".php" => (( "bin-path" => "/usr/bin/php-cgi", "socket" => "/tmp/php.socket" ))) [[http://redmine.lighttpd.net/projects/lighttpd/wiki/TutorialLighttpdAndPHP#Configuration|Tutoriel pour Lighttpd et PHP (en)]] \\ FIXME Sous **Ubuntu 12.04** ajouter uniquement dans le fichier /etc/lighttpd/lighttpd.conf , au niveau des modules (ligne 7): server.modules = ( "mod_fastcgi", ) ==== MySql ==== Il suffit d'[[:tutoriel:comment_installer_un_paquet|installer les paquets]] suivants : **[[apt://mysql-client,mysql-server,php5-mysql]]** Et éventuellement PHPMyAdmin : **[[apt://phpmyadmin|phpmyadmin]]** Lors de l'installation, vous serez tout d'abord invité à indiquer à MySql qu'il fonctionnera avec Lighttpd. Puis vous serez amenés à choisir un mot de passe pour l'accès root à phpmyadmin. Après l'installation de ces paquets, il faut saisir les commandes suivantes : sudo lighty-enable-mod fastcgi userdir sudo /etc/init.d/mysql start sudo /etc/init.d/lighttpd restart Si vous avez installé PHPMyAdmin, la base de données est alors accessible à l'adresse suivante : http://localhost/phpmyadmin ==== Ruby ==== Cette procédure est obsolète, cependant, les fichiers de configuration peuvent servir. Deux exemples de configuration, le premier avec fastcgi (qui ne fonctionne plus avec Redmine 2), le second avec thin (un second serveur). Prenez garde aux chemins utilisés dans ces exemples. # /etc/lighttpd/conf-available/redmine.conf # avec fastcgi $HTTP["host"] =~ "ruby.votresite.fr" { server.document-root = "/usr/share/redmine/public/" accesslog.filename = "/var/log/lighttpd/redmine.access.log" server.error-handler-404 = "/dispatch.fcgi" server.indexfiles = ( "dispatch.fcgi" ) fastcgi.server += ( ".fcgi" => ( "redmine" => ( "min-procs" => 1, "max-procs" => 2, "socket" => "/tmp/redmine-default-fcgi.socket", "bin-path" => "/usr/share/redmine/public/dispatch.fcgi", "bin-environment" => ( "RAILS_RELATIVE_URL_ROOT" => "", "X_DEBIAN_SITEID" => "default" ), "kill-signal" => 10 # this is because programs linked against libfcgi need USR1 kill-signal ) ) ) # quelques exemples #alias.url += ( "/plugin_assets/" => "/var/cache/redmine/default/plugin_assets/" ) #url.rewrite-if-not-file = ( # "favicon.ico$" => "/favicon.ico", # "apple-touch-.*png$" => "/apple-touch-icon.png" #) #$SERVER["socket"] == ":80" { # $HTTP["url"] =~ "^/robots.txt$" { # url.rewrite = ( "robots.txt$" => "/robots.http.txt" ) # } # $HTTP["url"] !~ "^/robots.http.txt$" { # url.redirect = ( "^/(.*)" => "https://ruby.votresite.fr/$1" ) # } #} #$SERVER["socket"] == ":443" { # ssl.engine = "enable" # ssl.pemfile = "/etc/ssl/private/votresite.crt" # ssl.ca-file = "/etc/ssl/private/ca-certs.crt" # setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=31536000" ) #} } # /etc/lighttpd/conf-available/redmine.conf # avec Thin $HTTP["host"] =~ "ruby.votresite.fr" { server.document-root = "/usr/share/redmine/public/" accesslog.filename = "/var/log/lighttpd/redmine.access.log" $HTTP["url"] !~ "^/(images|javascripts|stylesheets|themes|plugin_assets|favicon.ico|apple-touch-icon.png)|.*html$|.*txt$|.*xml$" { proxy.balance = "fair" proxy.server = ("/" => ( ( "host" => "127.0.0.1", "port" => 3000 ), ( "host" => "127.0.0.1", "port" => 3001 ), ( "host" => "127.0.0.1", "port" => 3002 ), ( "host" => "127.0.0.1", "port" => 3003 ) )) } # quelques exemples #url.rewrite-if-not-file = ( # "favicon.ico$" => "/favicon.ico", # "apple-touch-.*png$" => "/apple-touch-icon.png" #) #$SERVER["socket"] == ":80" { # $HTTP["url"] =~ "^/robots.txt$" { # url.rewrite = ( "robots.txt$" => "/robots.http.txt" ) # } # $HTTP["url"] !~ "^/robots.http.txt$" { # url.redirect = ( "^/(.*)" => "https://ruby.votresite.fr/$1" ) # } #} #$SERVER["socket"] == ":443" { # ssl.engine = "enable" # ssl.pemfile = "/etc/ssl/private/votresite.crt" # ssl.ca-file = "/etc/ssl/private/ca-certs.crt" # setenv.add-response-header = ( "Strict-Transport-Security" => "max-age=31536000" ) #} } # /etc/thin2.1/thin.yml --- chdir: "/usr/share/redmine" environment: production address: 0.0.0.0 port: 3000 servers: 4 timeout: 30 log: /var/log/redmine/default/thin.log pid: /var/run/thin.pid max_conns: 1024 max_persistent_conns: 512 require: [] wait: 30 daemonize: true ==== SSL ==== Pour utiliser un certificat SSL, il faut au préalable installer les paquets suivants : sudo apt-get install openssl ssl-cert Pour créer un certificat SSL auto-signé, il est possible d'utiliser la commande suivante : sudo make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/ssl/private/localhost.pem Une fois le certificat créé, il faut modifier la configuration du serveur pour qu'il accepte les connexions HTTPS sur le port 443. \\ Pour ce faire, il faut [[:tutoriel:comment_modifier_un_fichier|éditer le fichier]] **/etc/lighttpd/lighttpd.conf** avec les droits d'administration pour y ajouter les 3 lignes suivantes. $SERVER["socket"] == ":443" { ssl.engine = "enable" ssl.pemfile = "/etc/ssl/private/localhost.pem" } Dernière étape, le redémarrage du serveur. sudo service lighttpd restart Ensuite rendez vous sur https://localhost/ \\ Étant donné que le certificat SSL est auto-signé, une alerte de sécurité sera générée par le navigateur. En cas de problème, ajouter //ssl.use-sslv2 = "enable"// en dessous de //ssl.engine = "enable"//. \\ https://bugs.launchpad.net/ubuntu/+source/lighttpd/+bug/645002 ===== Désinstallation ===== Pour supprimer cette application, il suffit de [[:tutoriel:comment_supprimer_un_paquet|supprimer son paquet]]. La configuration de l'application sera conservée ou supprimée selon la méthode de désinstallation que vous choisirez. ===== Voir aussi ===== * **(en)** [[http://www.lighttpd.net/|Site officiel du projet Lighttpd]] * **(fr)** [[http://fr.wikipedia.org/wiki/Lighttpd|Lighttpd sur Wikipédia]] * **(en)** [[http://www.ubuntugeek.com/lighttpd-webserver-setup-with-php5-and-mysql-support.html|Configurer PHP5 pour Lighttpd]] * **(en)** [[http://nanotux.com/blog/the-ultimate-server/3/#l-php5| The ultimate server]] Error 404 ---- //Contributeurs : [[utilisateurs:kagou|Patrice Vetsel]], [[utilisateurs:alteo_gange|alteo_gange]], [[utilisateurs:luigifab|luigifab]].//