Linux, Nginx, Mysql, PHP (LEMP)

Ceci est un petit tuto pour installer un stack LEMP sur un instance Amazon t1.micro.

Mon serveur :

Ici LEMP veut dire :

On utilise Nginx car il est peu gourmand en mémoire qu’Apache et il est très rapide aussi. On a choisi PHP FPM car il est très performant aussi surtout en montée de charge.

Sur un Debian Wheezy il est préférable d’utiliser les paquets venant de dotdeb ou backport pour Nginx car la version 1.2 est un peu ancienne.

Mettre à jour et redémarrer le serveur avant toute manipulation :

apt-get update
apt-get dist-upgrade
reboot

Installer Mysql :

apt-get install mysql-server mysql-client

Si c’est la première installation du serveur Mysql, on vous demandera de saisir le mot de passe de l’utilisateur root de Mysql.

Lancer le script mysql_secure_installation pour sécuriser le serveur Mysql.

Installer PHP FPM avec les modules Mysql et APC

apt-get install php5-fpm php5-mysql php-apc

Configurer PHP-FPM en éditant le fichier /etc/php5/fpm/php.ini

Modifier la ligne « ;cgi.fix_pathinfo=1 » en « cgi.fix_pathinfo=0 »

[...]

; 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
cgi.fix_pathinfo=0

[...]

Redémarrer le service php-fpm

service php5-fpm restart

Il y a plusieurs type de package Ngnix dans le repository :

  • nginx
  • nginx-full
  • nginx-light
  • nginx-naxsi
  • nginx-extras

Comme j’ai un petit serveur, je vais installer la version light venant du repository backports sinon vous pouvez choisir nginx tout court

apt-get install -t wheezy-backports nginx-light

Sur mon serveur Amazon EC2, il faut ajouter le port tcp/80 ou http sur le console de management > « network & security » > « security groups ».

Ouvrir votre navigateur pour tester :

Screenshot from 2014-09-29 17:24:02

Configurer Nginx pour prendre en charge les scripts php en éditant le fichier /etc/nginx/sites-available/default

[...]

server {
        listen 80 default_server;
        listen [::]:80 default_server ipv6only=on;

        root /usr/share/nginx/html;
        index index.php index.html index.htm;

        # Make site accessible from http://localhost/
        server_name localhost myipaddress;

        location / {
                # First attempt to serve request as file, then
                # as directory, then fall back to displaying a 404.
                try_files $uri $uri/ =404;
                # Uncomment to enable naxsi on this location
                # include /etc/nginx/naxsi.rules
        }

        # Only for nginx-naxsi used with nginx-naxsi-ui : process denied requests
        #location /RequestDenied {
        #       proxy_pass http://127.0.0.1:8080;
        #}

       #error_page 404 /404.html;

        # redirect server error pages to the static page /50x.html
        #
        #error_page 500 502 503 504 /50x.html;
        #location = /50x.html {
        #       root /usr/share/nginx/html;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
	#
	location ~ \.php$ {
		fastcgi_split_path_info ^(.+\.php)(/.+)$;
		fastcgi_pass unix:/var/run/php5-fpm.sock;
		fastcgi_index index.php;
		include fastcgi_params;

		fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
		fastcgi_intercept_errors on;
	}
        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /\.ht {
        #       deny all;
        #}
}

[...]

Redémarrer Nginx pour prendre en charge la modification :

service nginx restart

Tester la prise en charge de PHP dans Nginx en créant un script test.php dans /usr/share/nginx/html/ 

<?php
 phpinfo();
?>

Capture d’écran 2014-09-30 à 02.10.51

Voilà notre petit serveur Amazon t1.micro est prêt à recevoir les applications PHP!

Vita tompoko.

Laisser un commentaire

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l'aide de votre compte WordPress.com. Déconnexion / Changer )

Image Twitter

Vous commentez à l'aide de votre compte Twitter. Déconnexion / Changer )

Photo Facebook

Vous commentez à l'aide de votre compte Facebook. Déconnexion / Changer )

Photo Google+

Vous commentez à l'aide de votre compte Google+. Déconnexion / Changer )

Connexion à %s