Rapid'CGI PHP, nginx et NetBSD
by Emile `iMil' Heitor - 2011-07-24
Update
Le post ci-dessous est à considérer “historique”, car depuis pkgsrc-2012Q2, php-fpm
est disponible en standard et se configure le plus aisemment du monde.
Il y a une foultitude de documentations sur la façon de faire tourner PHP via fastCGI sur un nginx, et à chaque fois, j’ai l’impression de lire des tambouilles copiées/collées de ci et de là. Ça cause de scripts (non portables la plupart du temps), de wrappers, et autres solutions capillotractées, et ça me plaît pas. En dépilant un peu, j’ai abouti à une solution que je trouve élégante… sous NetBSD evidemment :)
Tout d’abord, il s’agit de compiler PHP avec le support fastCGI, sans pollution avec le module CGI. Ceci est réalisé grâce au fichier /etc/mk.conf
et la directive suivante:
Un make install clean
plus loin, on peut s’assurer du support fastCGI d’un des binaires générés de cette façon:
Il existe dans pkgsrc
un outil spécialement dédié à gérer ce type d’implémentation, il s’agit de www/spawn-fcgi
, que nous installons donc sans hésiter. spawn-fcgi
a le bon goût d’être controlé par le fichier /etc/rc.conf
, ainsi, après avoir copié /usr/pkg/share/examples/rc.d/spawnfcgi
dans le repertoire /etc/rc.d
, on configure le logiciel de cette façon:
Attention toutefois, il existe un minuscule bug dans rc.d/spawnfcgi
que j’ai signalé au mainteneur, voici le patch trivial à appliquer:
Update bon, on est jamais mieux servi que par soi-même toussa, j’ai donc corrigé le package dans pkgsrc current. Un ptit cvs up -dP -rHEAD
et tout devrait rouler.
Nous pouvons alors démarrer spawnfcgi
comme n’importe quel autre service:
Et de constater:
Eeeeeexcellent Smithers.
Il ne reste alors plus qu’à configurer nginx
pour qu’il passe à PHP en mode fastCGI les pages de script à interpréter:
Il faudra evidemment prendre soin de remplacer /home/user/www
par le chemin de votre documentroot. Il doit d’ailleurs certainement y avoir une variable pour s’épargner cela…
On oublie pas le petit phpinfo()
qui va bien: