Bon , le billet qui sert de pont de départ ... pas toujours évident sur un blog de s'y retrouver .. sans sommaire ...
Voici donc le sommaire concernant les billets de Nginx
Cértifié PHP5

Aller au contenu | Aller au menu | Aller à la recherche
07 avr. 2010
Par Christophe de saint leger le mercredi, avril 7 2010, 16:17 - Serveur
Bon , le billet qui sert de pont de départ ... pas toujours évident sur un blog de s'y retrouver .. sans sommaire ...
Voici donc le sommaire concernant les billets de Nginx
05 avr. 2010
Par Christophe de saint leger le lundi, avril 5 2010, 15:37 - Serveur
Ca y est , voici la deuxième partie certainement attendu .. non !! ha .. bon .. spa grave ..
Je disais donc , nginx est maintenant en place , mais il faudrait peut être penser à le rendre compatible avec les 90% des sites sur le net aujourd'hui , c'est à dire php .. et pourquoi pas python tant que l'on y est .
Pour mettre en place cette liaison , nous allons utiliser php en fast-cgi .
Nginx ne possédant pas de mod_php comme apache , les requêtes php seronts donc transmises aux process php que nous aurons lancés en tâche de fond .
Je ne vais pas débattre des avantages et des inconvénients d'utiliser php en fastcgi , ce n'est pas le but de ce topic , mais sachez juste qu'aujourd'hui php en fastcgi est très apprécié , pour sa stabilité et sa sécurité , c'est pourquoi l'on retrouve souvent ce mode de fonctionnement chez les hébergeurs aujourd'hui ...
Vous n'étiez pas au courant ? ..
Note du 24/08/10 : Depuis php 5.3.3 il est bien plus simple et performant d'utiliser php-fpm , voir le tuto à ce sujet
Et oui encore , il nous faut compiler php spécialement pour le mod fast-cgi ( ne vous inquiétez pas , il est maintenant impossible de repasser en mode cgi simple , vous aurez forcement du Fastcgi ).
Comme d'hab voici les étapes ,
Voilà les lignes de commande correspondantes ( PHP 5.3.2 )
wget http://fr2.php.net/get/php-5.3.2.tar.gz/from/this/mirror tar xzf php-5.3.2.tar.gz cd /usr/local/src/php-5.3.2/ vim my_configure
Voici un exemple , de config de php ( celui de ma machine de dev ) je vous laisse ajuster selon vos besoins ..
#!/bin/sh
export OPTIM=-02
./configure --prefix=/usr/local \
--with-xsl \
--enable-soap \
--with-gettext \
--enable-mbstring --with-mbstring=all \
--disable-debug \
--enable-memory-limit \
--enable-ftp \
--with-mcrypt \
--enable-zip \
--enable-calendar \
--enable-exif \
--enable-pdo \
--with-pdo-mysql \
--with-mysql \
--with-pdo-sqlite \
--with-sqlite \
--with-zlib \
--with-jpeg-dir \
--with-gd \
--enable-bcmath \
--with-curl \
make make install
Nous voilà avec normalement un exécutable nommé php-cgi dans /usr/local/bin_
Nous allons donc maintenant créer un script qui sera chargé de lancer X process , qui ont pour mission de répondre aux requêtes php envoyées par nginx.
cd /etc/init.d/ vim php-fastcgi
Le script peut exister sous des formes plus ou moins différentes , voici celui que j'utilise :
php-fastcgiwrapper php-fastcgi
Là encore les script est adapté , si vous avez suivi à la lettre mon tutoriel , si vous avez effectué des modification vérifiez les paramètres , notamment:
Il faut lui aussi le rendre exécutable , et le mettre dans le RC , afin que les process soient lancés au démarrage de la machine .
chmod 777 php-fastcgi update-rc.d php-fastcgi defaults
Concernant le nombre de process fils lancés , il faudra adapter selon la charge de votre site ... en production , la commande
netstat -atup
Vous donnera des indications sur l'état de vos process , n'en ajoutez pas trop ! travaillez de façon logique .
Vous pouvez démarrer les process :
/etc/init.d/php-fastcgi start
Et bien voilà , il ne nous reste plus qu'à lui indiquer de transmettre les requêtes php aux process que nous avons lancés .
Dans un premier temps il faudra éditer le fichier de configuration fastcgi_params de nginx .
cd /etc/nginx/ vim fastcgi_params
A la fin de ce fichier , ajouter les lignes suivantes :
fastcgi_split_path_info ^(.+\.php)(.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
Ces lignes permettent entre autre d'indiquer aux process quel script executer , ainsi que son chemin .
Selon l'utilisation ou non de vhost , il vous faut ajouter ( en fait elles y sont déjà dans le conf principale si vous avez utilisé mon fichier de config nginx.conf ) les lignes suivantes dans les accolades de server .
location ~ \.php$ {
include /etc/nginx/fastcgi_params; #or whatever you named it
fastcgi_pass 127.0.0.1:9000;
index index.php;
}
Exemple d'un vhost:
server{
listen 8282;
server_name lindev.fr;
root /home/apache2/lindev.fr;
location / {
index index.php;
}
location ~ \.php$ {
include /etc/nginx/fastcgi_params; #or whatever you named it
fastcgi_pass 127.0.0.1:9000;
index index.php;
}
}
Et voilà votre serveur peut maintenant gérer les fichiers .php
Pour que les modifications prennent effet, il vous faut demander à Nginx de relire sont/ses fichiers de conf .
/usr/local/nginx/sbin -s reload
Et bien voilà pour php .. On fait la même chose avec perl ? aller .. go !
Certains sites demandent la gestion de perl , principalement pour des site de graph , tel qu'eluna , je vais donc faire en sorte que notre serveur puisse gérer ce genre de site .. même pas peur !
Il nous faut dans un premier temps installer le paquet FCGI par cpan :
perl -MCPAN -e 'install FCGI'
Il faut ensuite , créer le script qui ( comme pour php ) lance des process en fastcgi en attente de script à traiter .
vim /usr/bin/fastcgi-wrapper.pl
Voilà le contenu de ce script : fastcgi-wrapper.plfastcgi-wrapper.pl
On n'oubli pas de le rendre exécutable
chmod 755 /usr/bin/fastcgi-wrapper.pl
Ok maintenant , nous allons créer le script qui se situe dans le RC , pour lancer les process :
vim /etc/init.d/perl-fastcgi
Voici le fichier perl-fastcgiperl-fastcgi
On le rend exécutable , et on l'ajoute au RC
chmod 755 /etc/init.d/perl-fastcgi update-rc.d perl-fastcgi defaults /etc/init.d/perl-fastcgi start
Nous y voilà , les process perl sont lancés , il écoutent sur le port 8999 , il ne nous reste plus qu'à ajouter dans les Vhost qui en ont besoin , les lignes suivantes :
location ~ \.pl$ {
gzip off;
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:8999;
fastcgi_index index.pl;
}
Cette fois , pas besoin de modifier les fichier fcgi_params car les modifications à apporter sont les même que précédemment avec php .
Et bien oui comme pour php , on relance la lecture des fichiers de conf de nginx , afin de prendre en compte les modifications .
/usr/local/nginx/sbin/nginx -s reload
Ca y est , Nginx est maintenant capable de gérer les script php et perl en plus des fichiers statiques ...
Il reste encore quelques petites choses utiles à voir , comme la gestion du SSL , les redirections automatique , les réécritures d'url, pour du 301 ou l'utilisation de framework tel que symphony , Zend ou autre basé sur la réécriture d'url et un peut de sécurité en plus ...
Voilà le programme de la troisième partie sur nginx ..
« billets précédents - page 1 de 2