NGINX + PHP + phpMyAdmin + MySQL sous Ubuntu

Dans cet article nous allons voir comment configurer l’ensemble suivant : NGINX + PHP + phpMyAdmin + MySQL.

Avant de nous lancer, on met à jour la liste des paquets de notre système :

[shell]sudo apt-get update[/shell]

NGINX

Installation de NGINX :

[shell]sudo apt-get install nginx[/shell]

Vérifier que l’installation de NGINX est OK en vous connectant à l’adresse IP de votre machine via un navigateur Web.
Vous devriez arriver sur une page indiquant le message suivant :

Welcome to nginx!

If you see this page, the nginx web server is successfully installed and working. Further configuration is required.

For online documentation and support please refer to nginx.org.
Commercial support is available at nginx.com.

Thank you for using nginx.

PHP

Installation de PHP :

[shell]sudo apt-get install php5-fpm[/shell]

On vérifie la présence de la ligne suivante dans le fichier « www.conf » :

[shell]listen = /var/run/php5-fpm.sock[/shell]

On vérifie la présence de cette ligne en éditant le fichier :

[shell]sudo nano /etc/php5/fpm/pool.d/www.conf[/shell]

On vérfie également que le fichier « php5-fpm.sock » existe bien dans le chemin /var/run/ et qu’il est bien associé au groupe www-data :

[shell]ls -l /var/run/php5-fpm.sock[/shell]

Ajouter cette ligne à la fin du fichier de configuration de « php.ini »

[shell]echo extension=mcrypt.so >> /etc/php5/fpm/php.ini[/shell]

Puis redémarrer PHP :

[shell]service php5-fpm restart[/shell]

Configuration de NGINX

Une fois PHP installé, il est nécessaire de configurer NGINX :

[shell] cd /etc/nginx
sudo nano nginx.conf
[/shell]

Ajouter ceci à la fin de la partie http{} :

[shell] # Upstream to abstract back-end connection(s) for PHP
upstream php {
server unix:/var/run/php5-fpm.sock;
}
[/shell]

Installation de MySQL

[shell]sudo apt-get install mysql-server[/shell]

Taper la commande suivante pour configurer MySQL :

[shell]mysql_secure_installation[/shell]

Un assistant démarre, laissez-vous guider.

phpMyAdmin

Installation de phpMyAdmin :

[shell]sudo apt-get install phpmyadmin[/shell]

Durant l’installation un assistant vous proposera de configurer phpMyAdmin. Ne sélectionner aucun serveur web à reconfigurer automatiquement. Sélectionner simplement OK.

Puis quelques instants plus tard, un autre assistant vous demande si vous souhaitez configurer la base de données de phpMyAdmin avec dbconfig-common. Sélectionner Oui.

Choisir Socket/Unix.

Si vous vous êtes trompé au court de l’installation, vous avez possibilté de relancer l’assistant d’installation via cette commande :

[shell]sudo dpkg-reconfigure phpmyadmin[/shell]

Paramétrage d’un Server Blocks (Virtual Host) pour NGINX

Pour ceux qui viennent du monde Apache, Server Block est la dénomination pour Nginx de Virtual Host pour Apache.

On commence par faire une copie de sauvegarde du premier site par défaut existant nommé « default » :

[shell]cd /etc/nginx/sites-available/
cp default default.bak[/shell]

Puis on édite ce fichier :

[shell]sudo nano default[/shell] On va modifier ce fichier « default » ainsi :
[shell] # You may add here your
# server {
# …
# }
# statements for each of your virtual hosts to this file

##
# You should look at the following URL’s in order to grasp a solid understanding
# of Nginx configuration files in order to fully unleash the power of Nginx.
# http://wiki.nginx.org/Pitfalls
# http://wiki.nginx.org/QuickStart
# http://wiki.nginx.org/Configuration
#
# Generally, you will want to move this file somewhere, and start with a clean
# file but keep this around for reference. Or just disable in sites-enabled.
#
# Please see /usr/share/doc/nginx-doc/examples/ for more detailed examples.
##

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

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

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

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)(/.+)$;
# # 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;
#}

# deny access to .htaccess files, if Apache’s document root
# concurs with nginx’s one
#
#location ~ /\.ht {
# deny all;
#}

# pass the PHP scripts to FPM socket
location ~ \.php$ {
try_files $uri =404;

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

fastcgi_pass php;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT /usr/share/phpmyadmin;

# send bad requests to 404
fastcgi_intercept_errors on;

include fastcgi_params;
}

}

# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# root html;
# index index.html index.htm;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}

# HTTPS server
#
#server {
# listen 443;
# server_name localhost;
#
# root html;
# index index.html index.htm;
#
# ssl on;
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
#
# ssl_session_timeout 5m;
#
# ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2;
# ssl_ciphers "HIGH:!aNULL:!MD5 or HIGH:!aNULL:!MD5:!3DES";
# ssl_prefer_server_ciphers on;
#
# location / {
# try_files $uri $uri/ =404;
# }
#}
[/shell]

On recharge NGINX pour qu’il prenne en compte ces modifications :

[shell] service nginx reload
[/shell]

Vérification de l’accès à phpMyAdmin

Enfin, on vérifie bien que l’on ait maintenant accès à l’interface de phpMyAdmin en se connectant à l’adresse IP de la machine via un navigateur Web.

Romain D.

Passionné d'informatique perdu dans une trame Ethernet. Ce blog est mon bloc-notes public.

Romain D.

Passionné d'informatique perdu dans une trame Ethernet. Ce blog est mon bloc-notes public.