Voila ça faisait un moment que je voulais faire une installation de Nginx sur mes serveurs et Raspberry-Pi. L’efficacité de ce serveur web dernière génération n’est plus à démontrer surtout sur de petites machines telles que le Raspberry-Pi.

Toutes les commandes qui devront être précédé de sudo pour un Raspberry-Pi sous Raspbian.

Installation

apt-get install nginx php5-fpm php5-mysql

Configuration

Configuration de Nginx

La configuration principale se fait dans le fichier /etc/nginx/nginx.conf

nano /etc/nginx/nginx.conf

Il y a 2 trucs apparemment important a prendre en comte,

  1. worker_processes (Les worker processes sont les processus fils lancés par le père, Il est recommandé de mettre autant de worker processes que de cores disponibles sur votre serveur).
  2. et keepalive_timeout (premier chiffre temps max d’une connexion keepalive, deuxième chiffre indication de cette valeur dans le champ timeout de l’entête de la réponse).

Il y a toute les informations sur DigitalOcean pour trouver et paramétrer ce fichier de configuration.

Prise en compte de php pour un virtualhost

nano /etc/nginx/sites-enabled/default

et décommenter

        
        location ~ \.php$ {
                try_files $uri =404;
                fastcgi_split_path_info ^(.+\.php)(/.+)$;
                # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini

                # With php5-cgi alone:
                #fastcgi_pass 127.0.0.1:9000;
                # With php5-fpm:
                fastcgi_pass unix:/var/run/php5-fpm.sock;
                fastcgi_index index.php;
                include fastcgi_params;
        }

Configuration de PHP-FPM

Il y a de commenté dans l’extrait ci-dessus:

# NOTE: You should have « cgi.fix_pathinfo = 0; » in php.ini

C’est ce que nous allons faire en éditant le fichier php.ini:

nano /etc/php5/fpm/php.ini

Le plus dur va être de trouver la ligne ou se trouve cette fichu option a décommenter :

[fusion_builder_container hundred_percent="yes" overflow="visible"][fusion_builder_row][fusion_builder_column type="1_1" background_position="left top" background_color="" border_size="" border_color="" border_style="solid" spacing="yes" background_image="" background_repeat="no-repeat" padding="" margin_top="0px" margin_bottom="0px" class="" id="" animation_type="" animation_speed="0.3" animation_direction="left" hide_on_mobile="no" center_content="no" min_height="none"][...]
; cgi.fix_pathinfo provides *real* PATH_INFO/PATH_TRANSLATED support for CGI.  PHP's
; previous behaviour was to set PATH_TRANSLATED to SCRIPT_FILENAME, and to not grok
; what PATH_INFO is.  For more information on PATH_INFO, see the cgi specs.  Setting
; this to 1 will cause PHP CGI to fix its paths to conform to the spec.  A setting
; of zero causes PHP to behave as before.  Default is 1.  You should fix your scripts
; to use SCRIPT_FILENAME rather than PATH_TRANSLATED.
; http://php.net/cgi.fix-pathinfo
; Uncomment and modify this line: 
;cgi.fix_pathinfo=1 
; so that it looks like this: 
cgi.fix_pathinfo=0
[...]

Edit du 13 aout 2014

Configuration des mails

Nous avons vu précédemment envoyer un mail depuis notre raspberry-pi en configurant ssmtp. Il faut donc dire à PHP d’utiliser SSMTP. La configuration se fait toujours dans le php.ini au niveau de la ligne 967.

Il faut décommenter et ajouter le chemin au sendmail_path:

sendmail_path = /usr/sbin/ssmtp -t

Edit du 31 aout 2014

Configuration de la date de PHP

Effectivement nous avons déjà établie précédemment la configuration de la date au sein du système, mais je ne sais pourquoi PHP ne prend pas en compte la timezone du système lors de l’installation.

La configuration se fait toujours dans le php.ini, Il faut donc décommenter la ligne correspondante au fuseau horaire et rajouter la valeur voulu:

; Defines the default timezone used by the date functions
date.timezone = Europe/Paris

Start des services et test

Une fois ceci fait nous allons démarrer Nginx et PHP5-FPM:

service nginx start

et

service php5-fpm start

Création d’un fichier info contenant les informations PHP

echo "<?php phpinfo(); ?>" > /usr/share/nginx/www/info.php

Pour tester que tout fonctionne http://votreip/info.php devrait vous donner:

phpinfo-nginx

Si tout vous fonctionne, il reste une petite manipulation à faire pour que Nginx et PHP-FPM se lance au démarrage du serveur ou du raspberry-pi.

update-rc.d php5-fpm defaults

et

update-rc.d nginx defaults

Sources:

Pour aller plus loin:

 [/fusion_builder_column][/fusion_builder_row][/fusion_builder_container]