Serveur web léger Lighttpd et FreeBSD

Dans cet article je vais vous parler de la configuration actuelle de ce serveur, celui qui permet d’afficher ces pages. J’en avais un peu parlé dans un billet précédent, ce serveur tourne sous FreeBSD 8.0. Pourquoi FreeBSD ? Parce qu’avant tout je voulais apprendre un système que je connaissais pas du tout, et l’arbre des ports permet de compiler mes logiciels facilement, tout en ayant une liberté maximale sur les options de compîlation.

Je vais traité ici l’installation d’un serveur PHP (en l’occurence lighty). Il y a en gros deux parties distinctes : premièrement l’installation de PHP à proprement parlé, puis ensuite du serveur et sa configuration. Je ne parlerai pas de l’installation d’un serveur de base de données, sauf si ça vous branche :)

Personnellement je n’installe mes logiciels que par compilation (ce n’est pas obligatoire sous FreeBSD). J’utilise pour cela des utilitaires tels que portmaster et portsnap. Si vous n’avez jamais utilisé les ports sur FreeBSD vous devez commencer par un petit :

portsnap fetch extract

Cette commande va tout simplement télécharger les ports et les extraire dans /usr/ports. À faire une fois seulement, après ce n’est plus nécessaire.

PHP 5.3

On commence par mettre nos ports à jour :

portsnap fetch update

Et ensuite c’est partie pour compiler le coeur de PHP :

portmaster lang/php5

On vous proposera surement des choix pour la configuration de PHP, sélectionnez seulement ce qui vous est nécessaire. Le but de la compilation étant de pouvoir optimiser :)

Ensuite on va pouvoir construire les extensions de PHP. Comme par exemple curl ou gd pour les images. Idem, il y a forcément des extensions que vous n’utiliserai pas, donc ne cochez pas tout comme des bourrins (lol). Pensez à sélectionner celle de votre base de données (mysql, mysqli, postgre…)

portmaster lang/php5-extensions

Et hop c’est terminé. Vous pouvez vérifier que PHP est bien installé, en lançant un petit php –version dans le shell.

Lighttpd

Lighttpd ou Lighty est un serveur web très léger et assez flexible. Optimisé pour être soumis à de fortes demandes, il est de nature plus scalable 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 installons le :

portmaster www/lighttpd

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

lighttpd_enable="YES"

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

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

Fichiers de configurations de Lighttpd:

  • Par défaut le webroot se trouve dans /usr/local/www/data
  • L’utilisateur par défaut du serveur est www
  • Et la configuration se fait dans ce fichier : /usr/local/etc/lighttpd.conf

Nous allons configurer un virtual host, avec un nom de domaine et son propre répertoire dans le webroot. Nous allons aussi compresser les pages pour économiser de la bande passante et activer l’url rewriting pour faire fonctionner wordpress. Ouvrez le fichier de configuration. Nous allons modifier certaines lignes pour notre configuration.

Commençons par les modules à charger, 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érifie 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 pouvoir écrire et lire dans ce répertoire bien sur.

Maintenant il faut dire à Lighty comment on veut qu’il gère les scripts PHP. Donc nous allons utiliser 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 virtual 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 suffire à faire tourner votre site web. Si vous avez des questions n’hésitez pas et surtout allez faire un tour sur la documentation officielle de lighttpd.

Vus : 383
Publié par Rydgel : 137