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-serverConfigurer Nginx
Supprimer le site par défaut (optionnel)
rm -f /etc/nginx/sites-enabled/defaultCré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-sslserver {
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/templateserver {
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.tldModifier les variables de chemin
nano /etc/nginx/sites-available/gallery.domain.tldserver_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.tldMaintenant, 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.tldMaintenant, ouvrez votre navigateur et naviguez vers :
http://gallery.domain.tldSi 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 -pcreate 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 = 20nano /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 :
Recevez de nouveaux articles dans votre boîte de réception.
Aucun spam. Désabonnez-vous à tout moment.