Main Contents

Installer PHP5 avec Nginx sous Ubuntu

Le 20 septembre 2008 par Jacques Moati

Pour commencer, il faut, si ce n’est déjà fait, mettre à jour votre serveur :
sudo apt-get update
sudo apt-get dist-upgrade

Une fois ceci fait, on va installer nginx avec la commande suivante :
apt-get install nginx

A ce stade, on a maintenant un serveur de page html simple qui fonctionne parfaitement :D

Si nous n’avez besoin que d’un serveur de fichier statique, vous pouvez vous arrêtez ici, sinon, passons à l’installation de PHP5 ou lisez le prochain article pour PHP6 ;)

Nous avons décider d’installer PHP5 en fcgi. Pour celà, nous taperons la commande :
apt-get install php5-common php5-cgi mysql-server mysql-client mysql-common php5-mysql

PHP5 est maintenant présent sur notre serveur pour en être persuadé :
/usr/bin/php5-cgi -v

Cette commande devrait vous retourner quelques informations sur votre version de php.
Pour moi :

PHP 5.2.4-2ubuntu5.3 with Suhosin-Patch 0.9.6.2 (cgi-fcgi) (built: Jul 23 2008 06:38:29)

Copyright (c) 1997-2007 The PHP Group

Zend Engine v2.2.0, Copyright (c) 1998-2007 Zend Technologies

Il ne nous reste plus qu’à lancer une instance de php5 et de demander à Nginx de l’utiliser lors de l’exécution d’un fichier php. On va commercer par le script d’instanciation.

Créer le fichier /etc/init.d/php5-fastcgi avec votre éditeur de texte favoris :

nano /etc/init.d/php5-fastcgi

Puis mettez-y le code suivant :
#!/bin/sh
### BEGIN INIT INFO
# Provides: php5-fastcgi
# Required-Start: $all
# Required-Stop: $all
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start and stop php5-cgi in external FASTCGI mode
# Description: Start and stop php5-cgi in external FASTCGI mode
### END INIT INFO
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="php5-cgi in external FASTCGI mode"
NAME=php5-fastcgi
DAEMON=/usr/bin/php5-cgi
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME
[ -x "$DAEMON" ] || exit 0
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
. /lib/lsb/init-functions
if [ "$START" != "yes" -a "$1" != "stop" ]; then
log_warning_msg “To enable $NAME, edit /etc/default/$NAME and set START=yes”
exit 0
fi
export PHP_FCGI_CHILDREN PHP_FCGI_MAX_REQUESTS
DAEMON_ARGS=”-q -b $FCGI_HOST:$FCGI_PORT”
do_start()
{
start-stop-daemon –start –quiet –pidfile $PIDFILE –exec $DAEMON –test > /dev/null || return 1
start-stop-daemon –start –quiet –pidfile $PIDFILE –exec $DAEMON –background –make-pidfile –chuid $EXEC_AS_USER –startas $DAEMON — $DAEMON_ARGS || return 2
}
do_stop()
{
start-stop-daemon –stop –quiet –retry=TERM/30/KILL/5 –pidfile $PIDFILE > /dev/null # –name $DAEMON
RETVAL=”$?”
[ "$RETVAL" = 2 ] && return 2
start-stop-daemon –stop –quiet –oknodo –retry=0/30/KILL/5 –exec $DAEMON
[ "$?" = 2 ] && return 2
rm -f $PIDFILE
return “$RETVAL”
}
case “$1″ in
start)
[ "$VERBOSE" != no ] && log_daemon_msg “Starting $DESC” “$NAME”
do_start
case “$?” in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
stop)
[ "$VERBOSE" != no ] && log_daemon_msg “Stopping $DESC” “$NAME”
do_stop
case “$?” in
0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
esac
;;
restart|force-reload)
log_daemon_msg “Restarting $DESC” “$NAME”
do_stop
case “$?” in
0|1)
do_start
case “$?” in
0) log_end_msg 0 ;;
1) log_end_msg 1 ;; # Old process is still running
*) log_end_msg 1 ;; # Failed to start
esac
;;
*)
# Failed to stop
log_end_msg 1
;;
esac
;;
*)
echo “Usage: $SCRIPTNAME {start|stop|restart|force-reload}” >&2
exit 3
;;
esac
:

On créer le petit fichier de configuration qui va bien :
nano /etc/default/php5-fastcgi

Et on y colle le contenu suivant :
START=yes
EXEC_AS_USER=www-data
FCGI_HOST=localhost
FCGI_PORT=8000
PHP_FCGI_CHILDREN=1
PHP_FCGI_MAX_REQUESTS=1000

On met en place la configuration de php par défaut :

cp /usr/share/doc/php5-cgi/examples/php.ini-recommended /etc/php5/cgi/php.ini

On va maintenant planifier l’instanciation à chaque démarrage du serveur puis le lancer pour cette fois seulement, à la main :
chmod +x /etc/init.d/php5-fastcgi
update-rc.d php5-fastcgi defaults
/etc/init.d/php5-fastcgi start

Il faut maintenant demander à Nginx d’interpréter les pages php. On va par exemple définir le vhost par défaut à pointer sur une page phpinfo que nous allons tout de suite créer
nano /var/www/nginx-default/phpinfo.php

Collez y le code suivant :
<?php
phpinfo();
?>

Au tour du vhost :
> /etc/nginx/sites-available/default
nano /etc/nginx/sites-available/default

Collez y le code suivant :
server {
listen 80;
client_max_body_size 50M;
server_name localhost;
root /var/www/nginx-default;
access_log /var/log/nginx/default.access.log;
location / {
index index.html index.php;
expires max;
break;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:8000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/nginx-default$fastcgi_script_name;
include /etc/nginx/fastcgi_params;
expires max;
}
error_page 500 502 503 504 /50x.html;
location = /500.html { root /var/www/nginx-default; }
}

Pour finir, nous allons configurer nginx :
> /etc/nginx/nginx.conf
nano /etc/nginx/nginx.conf

Collez-y la configuration suivante code :
worker_processes 1;
events {
worker_connections 1024;
}
http {
server_names_hash_bucket_size 128;
charset utf-8;
include /etc/nginx/mime.types;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] ‘
‘”$request” $status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log debug;
sendfile on;
tcp_nodelay off;
gzip on;
gzip_http_version 1.0;
gzip_comp_level 9;
gzip_proxied any;
gzip_types application/javascript application/x-javascript text/css text/html text/javascript text/plain text/xml;
include /etc/nginx/sites-enabled/*;
}

Il ne nous reste plus qu’à relancer Nginx et vérifier que la page de phpinfo est bien là.
/etc/init.d/nginx restart

Rendez-vous après quelques secondes sur votre serveur : http://votre-domaine.xxx/phpinfo.php

Et voilà, on a un beau serveur Nginx qui distribue les fichiers statiques et passe par notre instance de php5 en fcgi pour interpréter les .php ;-)

Serveur - Commentaires (0)

Copier des fichiers de façon sécurisé via SSH

Le 25 juillet 2008 par Jacques Moati

Il est parfois très utile de pouvoir copier un répertoire ou une liste de fichiers d’un ordinateur à l’autre, ou, d’un serveur de backup à un serveur en production.

Il est tentant pour cela de passer par un FTP, mais FTP n’est pas sécurisé, qui plus est, il est de plus en plus lent proportionnellement à la quantité de fichiers à transférer. Chaque nouveau fichier oblige l’ouverture et la fermeture d’un socket ce qui est particulièrement long quand il y en beaucoup. C’est pour quoi, SSH est avantageux : une fois le socket ouvert, tous les fichiers passent dans un “tuyau sécurisé” en flux continu avant que celui-ci ne soit fermé. (Lire la suite…)

Tips - Commentaires (0)

Neuf, un très bon substitue à Free

Le 21 juin 2008 par Jacques Moati

Logo neuf cegetel

Aujourd’hui, j’aimerais vous parler de la fin de mon aventure chez Free.

La question ne s’était jamais posée dans ma tête sur le choix d’un FAI (Fournisseur d’accès Internet Adsl). Pour moi, il coulait de source que Free était sans conteste le meilleur des FAI en France.

Après environ deux ans de “haut” débit (~ 3 Mbps), ma connexion internet à subit de très grosses pertes de débit : Pour vous donnez une idée, j’obtenais environs 400 Ko/s au réveil, 200 ko/s le midi, 30ko/s en rentrant du travail pour finalement tomber littéralement à 3ko/s le soir (vive le téléphone) …

(Lire la suite…)

My Life - Commentaires (0)

Cybersquatage et Dreams-Box.com

Le 29 mai 2008 par Jacques Moati

Bannière d\'un cybersquateur

Avez-vous déjà été victime de cybersquattage ? Vous savez, ces sites qui réservent (sans forcément les acheter d’ailleurs …) des noms de domaine susceptibles d’être achetés par quelqu’un d’autre pour ensuite le vendre quelques (centaines, milliers, plus ?) d’euros …

(Lire la suite…)

Serveur - Commentaires (0)

RPS : OVH prend ses clients pour des “bétâ”

Le 24 mai 2008 par Jacques Moati

Bétâ test

Je pense sincèrement que l’offre de serveur RPS est beaucoup trop jeune pour être stable.

Je me crois littéralement dans un service en phase de bêta test suite à ces 3 grands événements majeurs :

(Lire la suite…)

Serveur - Commentaires (0)

Le RPS de chez OVH

Le 15 mai 2008 par Jacques Moati

L\'offre RPS de OVH.

Avant de vous parlez dans un prochain billet de l’accident dont j’ai été victime depuis vendredi dernier sur mon RPS, il convient de présenter celui-ci : RPS est un serveur dédié lancé par OVH depuis maintenant quelques mois.

Sa principale particuliaritée réside dans le fait que le RPS est démuni de disque dur. Ce dernier est partagé entre plusieurs serveurs (+ ou - 220). Toutefois, le reste de la machine (processeur, barrettes de ram, etc.), lui, est bien propre à chaque client.

(Lire la suite…)

Serveur - Commentaires (0)

Tunnel SSH

Le 1 mai 2008 par Jacques Moati

Tunnel SSH forwarding redirection port

Quand on dispose de son propre serveur, il peut être très pratique et rassurant de ne pas rendre publics l’accès à tous les services.

Un serveur FTP, Samba, MySQL, Apache, etc. laisse circuler l’information en clair sur le réseau. C’est à dire, sans cryptage. Il est possible “d’écouter” le réseau et donc de tomber sur les informations personnelles.

(Lire la suite…)

Tips - Commentaires (0)



Feed