Serveur web léger Lighttpd et FreeBSD

Dans cet article je vais vous par­ler de la confi­gu­ra­tion actuelle de ce ser­veur, celui qui per­met d'afficher ces pages. J'en avais un peu parlé dans un billet pré­cé­dent, ce ser­veur tourne sous FreeBSD 8.0. Pourquoi FreeBSD ? Parce qu'avant tout je vou­lais apprendre un sys­tème que je connais­sais pas du tout, et l'arbre des ports per­met de com­pi­ler mes logi­ciels faci­le­ment, tout en ayant une liberté maxi­male sur les options de compîlation.

Je vais traité ici l'installation d'un ser­veur PHP (en l'occurence lighty). Il y a en gros deux par­ties dis­tinctes : pre­miè­re­ment l'installation de PHP à pro­pre­ment parlé, puis ensuite du ser­veur et sa confi­gu­ra­tion. Je ne par­le­rai pas de l'installation d'un ser­veur de base de don­nées, sauf si ça vous branche :)

Personnellement je n'installe mes logi­ciels que par com­pi­la­tion (ce n'est pas obli­ga­toire sous FreeBSD). J'utilise pour cela des uti­li­taires tels que port­mas­ter et ports­nap. Si vous n'avez jamais uti­lisé les ports sur FreeBSD vous devez com­men­cer par un petit :

portsnap fetch extract

Cette com­mande va tout sim­ple­ment télé­char­ger les ports et les extraire dans /usr/ports. À faire une fois seule­ment, après ce n'est plus nécessaire.

PHP 5.3

On com­mence par mettre nos ports à jour :

portsnap fetch update

Et ensuite c'est par­tie pour com­pi­ler le coeur de PHP :

portmaster lang/php5

On vous pro­po­sera sur­ement des choix pour la confi­gu­ra­tion de PHP, sélec­tion­nez seule­ment ce qui vous est néces­saire. Le but de la com­pi­la­tion étant de pou­voir optimiser :)

Ensuite on va pou­voir construire les exten­sions de PHP. Comme par exemple curl ou gd pour les images. Idem, il y a for­cé­ment des exten­sions que vous n'utiliserai pas, donc ne cochez pas tout comme des bour­rins (lol). Pensez à sélec­tion­ner celle de votre base de don­nées (mysql, mys­qli, postgre...)

portmaster lang/php5-extensions

Et hop c'est ter­miné. Vous pou­vez véri­fier que PHP est bien ins­tallé, en lan­çant un petit php --ver­sion dans le shell.

Lighttpd

Lighttpd ou Lighty est un ser­veur web très léger et assez flexible. Optimisé pour être sou­mis à de fortes demandes, il est de nature plus sca­lable qu'Apache. Il en a d'ailleurs rien à envier, et il est capable de pas mal de choses (FastCGI, CGI, Http Auth, Compression, Url rewriting...).

Donc ins­tal­lons le :

portmaster www/lighttpd

Maintenant on va dire à FreeBSD de le démar­rer après le boot, pour cela on édite donc /etc/rc.conf : en ajou­tant cette ligne :

lighttpd_enable="YES"

Et pour le démarrer/redémarrer/stoper :

/usr/local/etc/rc.d/lighttpd start|restart|stop

Fichiers de confi­gu­ra­tions de Lighttpd:

  • Par défaut le webroot se trouve dans /usr/local/www/data
  • L'utilisateur par défaut du ser­veur est www
  • Et la confi­gu­ra­tion se fait dans ce fichier : /usr/local/etc/lighttpd.conf

Nous allons confi­gu­rer un vir­tual host, avec un nom de domaine et son propre réper­toire dans le webroot. Nous allons aussi com­pres­ser les pages pour éco­no­mi­ser de la bande pas­sante et acti­ver l'url rewri­ting pour faire fonc­tion­ner word­press. Ouvrez le fichier de confi­gu­ra­tion. Nous allons modi­fier cer­taines lignes pour notre configuration.

Commençons par les modules à char­ger, pour ma part j'ai besoin de :

server.modules              = (
                               "mod_rewrite",
                               "mod_redirect",
                               "mod_alias",
                               "mod_access",
                               "mod_auth",
                               "mod_fastcgi",
                               "mod_simple_vhost",
                               "mod_compress",
                               "mod_expire",
                               "mod_accesslog",
			       "mod_magnet"
)

On véri­fie le webroot :

server.document-root        = "/usr/local/www/data/"

On active la compression :

compress.cache-dir         = "/var/cache/lighttpd/compress/"
compress.filetype          = ("text/plain", "text/html", "text/css", "text/xml", "text/javascript")

www doit pou­voir écrire et lire dans ce réper­toire bien sur.

Maintenant il faut dire à Lighty com­ment on veut qu'il gère les scripts PHP. Donc nous allons uti­li­ser du FastCGI :

fastcgi.server             = ( ".php" =>
                               ( "localhost" =>
                                 (
                                   "socket" => "/tmp/php-fastcgi.socket",
                                   "bin-path" => "/usr/local/bin/php-cgi",
				                           "max-procs" => 6,
				                           "bin-environment" => (
				   	                         "PHP_FCGI_CHILDREN" => "5",
				   	                         "PHP_FCGI_MAX_REQUESTS" => "1000"
			                               ),
				                             "bin-copy-environment" => (
					                             "PATH", "SHELL", "USER"
 				                               ),
				                           "broken-scriptfilename" => "enable"
                                 )
                               )
                            )

Et pour finir le vir­tual host :

$HTTP["host"] == "phollow.fr" {
  server.document-root = "/usr/local/www/data/phollow.fr"
  compress.cache-dir = "/tmp/phollow.fr/"
  url.rewrite = (
        "^/(wp-.+).*/?" => "$0",
        "^/(sitemap.xml)" => "$0",
        "^/(xmlrpc.php)" => "$0",
        "^/(.+)/?$" => "/index.php/$1"
  )
 
}

Et voilà ça devrait suf­fire à faire tour­ner votre site web. Si vous avez des ques­tions n'hésitez pas et sur­tout allez faire un tour sur la docu­men­ta­tion offi­cielle de lighttpd.



Post comment as twitter logo facebook logo
Sort: Newest | Oldest

niice, je me suis toujours demandé comment installer / utiliser lighttpd mais a l'époque je m'etais heurté à la non gestion (?) de l'url rewriting, ou du moins de maniere supra chiante :D

Oui c'est ce que Toile Libre dans mon cas
http://forum.toile-libre.org/viewtopic.php?id=77
donc il n'y a pas lieu de remplir un rapport de bogue contre Lighttpd ?

Non ce n'est absolument PAS un bug.
Si tu veux Lighttpd possède une base de données des types mime par défaut. Il regarde l'extension du fichier à servir et si il est dans le tableau des mimetype alors il le renvoit avec le header qu'il faut.
Le format Webm a été crée il y a quelques jours/semaine. Lighttpd n'a pas eu le temps de le rajouter par défaut dans le tableau des mimetypes. Par contre toi tu peux le faire.
Ce n'est donc pas un bug mais tu peux dire à la team de rajouter ces réglages pour ce type d'extensions.

Je me comprends, c'est ce que je voulais dire par bug : une mise à niveau. C'était pas négatif...

Pour info, apparemment Lighttpd ne gère pas (encore) le WebM
http://groups.google.com/a/webmproject.org/group/w...

Si il le gère, il suffit de rajouter un mime/type:
mimetype.assign = (
...,
".webm" => "video/webm",
".weba" => "audio/webm",
...
)

Trackbacks

  1. [...] Serveur web léger Lighttpd et FreeBSD | Phollow.me [...]