Installation · 6 min read · Jan 23, 2026

Installer Piwigo Gallery Sur Nginx Avec Debian Wheezy

Installer Piwigo Gallery Sur Nginx Avec Debian Wheezy

Ce tutoriel montre comment vous pouvez installer et exécuter un site de galerie piwigo avec nginx, configuré pour les vhosts, sur un système Debian Wheezy. Piwigo est un site de galerie avec de nombreux plugins. Dans cet exemple, nous configurons le vhost “gallery.domain.tld”.

Installer

Installer les paquets pour nginx

apt-get install nginx php5-fpm php5 php5-mysql php5-pgsql php5-imap php-pear php5-sqlite php5-ldap php5-gd php5-imagick php5-curl php-apc
apt-get install php5-mcrypt php5-pspell php5-xmlrpc php5-xsl php5-cgi php-auth php-auth-sasl php-net-smtp

Installer le serveur MySQL

 apt-get install mysql-server

Configurer Nginx

Supprimer le site par défaut (optionnel)

rm -f /etc/nginx/sites-enabled/default

Créer un fichier modèle pour les vhosts

cd /etc/nginx/sites-available/
touch template-with-ssl
touch template

Vhost avec support ssl

Insérez ce qui suit dans le fichier

nano /etc/nginx/sites-available/template-with-ssl
server {
listen        80;
# .domain.com correspondra à domain.com et à anything.domain.com
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;

# Il est préférable de placer la racine du bloc serveur au niveau du serveur, et non au niveau de l'emplacement
# tout chemin de bloc d'emplacement sera relatif à cette racine.
root /var/www/www.domain.tld;

# Il est toujours bon de définir des journaux, notez cependant que vous ne pouvez pas désactiver le journal des erreurs
# définir error_log off; créera simplement un fichier appelé 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;

# Cela peut également aller au niveau http { }
index index.html index.htm index.php;

location / {
# si vous utilisez juste wordpress et ne voulez pas de réécritures supplémentaires
# alors remplacez le mot @rewrites par /index.php
try_files $uri $uri/ @rewrites;
}

location @rewrites {
# Vous pouvez mettre certaines de vos propres règles de réécriture ici
# par exemple rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si rien ne correspond, nous enverrons simplement à /index.php
rewrite ^ /index.php last;
}

# Ce bloc attrapera les demandes de fichiers statiques, tels que des images, css, js
# Le préfixe ?: est une marque 'non capturante', ce qui signifie que nous ne nécessitons pas
# que le motif soit capturé dans $1, ce qui devrait aider à améliorer les performances
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Un contrôle de cache de base pour les fichiers statiques à envoyer au navigateur
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# supprimez la ligne robots si vous souhaitez utiliser le robots.txt virtuel de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# cela empêche les fichiers cachés (commençant par un point) d'être servis
location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ \.php {
fastcgi_param        SCRIPT_NAME $fastcgi_script_name;
fastcgi_param        SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index        index.php;
fastcgi_pass        unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}
# juste, si vous voulez utiliser ssl-vhost
server {
listen        443 default ssl;
# .domain.com correspondra à domain.com et à anything.domain.com
server_name www.domain.tld domain.tld;

ssl_certificate        /etc/nginx/ssl/www.domain.tld.crt;
ssl_certificate_key        /etc/nginx/ssl/www.domain.tld.key;
# Il est préférable de placer la racine du bloc serveur au niveau du serveur, et non au niveau de l'emplacement
# tout chemin de bloc d'emplacement sera relatif à cette racine.
root /var/www/www.domain.tld;

# Il est toujours bon de définir des journaux, notez cependant que vous ne pouvez pas désactiver le journal des erreurs
# définir error_log off; créera simplement un fichier appelé 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;

# Cela peut également aller au niveau http { }
index index.html index.htm index.php;

location / {
# si vous utilisez juste wordpress et ne voulez pas de réécritures supplémentaires
# alors remplacez le mot @rewrites par /index.php
try_files $uri $uri/ @rewrites;
}

location @rewrites {
# Vous pouvez mettre certaines de vos propres règles de réécriture ici
# par exemple rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si rien ne correspond, nous enverrons simplement à /index.php
rewrite ^ /index.php last;
}

# Ce bloc attrapera les demandes de fichiers statiques, tels que des images, css, js
# Le préfixe ?: est une marque 'non capturante', ce qui signifie que nous ne nécessitons pas
# que le motif soit capturé dans $1, ce qui devrait aider à améliorer les performances
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Un contrôle de cache de base pour les fichiers statiques à envoyer au navigateur
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# supprimez la ligne robots si vous souhaitez utiliser le robots.txt virtuel de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# cela empêche les fichiers cachés (commençant par un point) d'être servis
location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ \.php {
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass unix:/var/run/php5-fpm.sock;
include fastcgi_params;

}
}

Vhost uniquement pour HTTP

nano /etc/nginx/sites-available/template
server {
listen        80;
# .domain.com correspondra à domain.com et à anything.domain.com
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;

# Il est préférable de placer la racine du bloc serveur au niveau du serveur, et non au niveau de l'emplacement
# tout chemin de bloc d'emplacement sera relatif à cette racine.
root /var/www/www.domain.tld;

# Il est toujours bon de définir des journaux, notez cependant que vous ne pouvez pas désactiver le journal des erreurs
# définir error_log off; créera simplement un fichier appelé 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;

# Cela peut également aller au niveau http { }
index index.html index.htm index.php;

location / {
# si vous utilisez juste wordpress et ne voulez pas de réécritures supplémentaires
# alors remplacez le mot @rewrites par /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Vous pouvez mettre certaines de vos propres règles de réécriture ici
# par exemple rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si rien ne correspond, nous enverrons simplement à /index.php
rewrite ^ /index.php last;
}

# Ce bloc attrapera les demandes de fichiers statiques, tels que des images, css, js
# Le préfixe ?: est une marque 'non capturante', ce qui signifie que nous ne nécessitons pas
# que le motif soit capturé dans $1, ce qui devrait aider à améliorer les performances
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Un contrôle de cache de base pour les fichiers statiques à envoyer au navigateur
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# supprimez la ligne robots si vous souhaitez utiliser le robots.txt virtuel de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# cela empêche les fichiers cachés (commençant par un point) d'être servis
location ~ /\. { access_log off; log_not_found off; deny all; }

location ~ \.php {
fastcgi_param        SCRIPT_NAME $fastcgi_script_name;
fastcgi_param        SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_index        index.php;
fastcgi_pass        unix:/var/run/php5-fpm.sock;
include fastcgi_params;
}
}

Créer le premier vhost

Utiliser le modèle

 cp /etc/nginx/sites-available/template /etc/nginx/sites-available/gallery.domain.tld

Modifier les variables de chemin

 nano /etc/nginx/sites-available/gallery.domain.tld
server_name gallery.domain.tld;
root /var/www/gallery.domain.tld;
access_log /var/log/nginx/gallery.access.log;
error_log /var/log/nginx/gallery.error.log;

Créer votre structure de répertoire

mkdir -p /var/www/gallery.domain.tld
chown -R www-data:www-data /var/www

Activer votre vhost

 ln -s /etc/nginx/sites-available/gallery.domain.tld /etc/nginx/sites-enabled/gallery.domain.tld

Maintenant, redémarrez les services :

/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart

Tester PHP

Créez un fichier de test avec phpinfo :

 nano /var/www/gallery.domain.tld/test.php 

Pour des tests rapides, modifiez simplement le

fichier hosts

avec le nom du vhost ; dans cet exemple, l’IP du serveur est

192.168.1.10

:

  192.168.1.10  gallery.domain.tld

Maintenant, ouvrez votre navigateur et naviguez vers :

 http://gallery.domain.tld

Si vous voyez une page d’information sur la version php installée, tout va bien maintenant vous pouvez supprimer votre fichier de test :

 rm -f  nano /var/www/gallery.domain.tld/test.php 

Configurer Piwigo

Créer une base de données et un utilisateur

nom d’utilisateur : gallery01
mot de passe : PASSWORD

Connectez-vous à MySQL :

 mysql -u root -p

create database gallery01; grant all on gallery01.* to ‘gallery’@’localhost’ identified by ‘PASSWORD’; flush privileges; \q;

Télécharger le fichier d’installation net pour piwigo

cd /var/www/gallery.domain.tld
wget http://piwigo.org/download/dlcounter.php?code=netinstall
mv dlcounter.php\?code\=netinstall netinstall.php
chown www-data:www-data netinstall.php

Ajustements de configuration

 nano /etc/php5/fpm/php.ini 
upload_tmp_dir = /tmp  
upload_max_filesize = 20M  
max_file_uploads = 20
nano /etc/nginx/nginx.conf 
client_max_body_size 20M;         
client_body_buffer_size 128k;

N’oubliez pas de redémarrer les services :

/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart

Utiliser le webinstaller

Ouvrez le navigateur et naviguez vers :

http://gallery.domain.tld/netinstall.php

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.