Installazione software · 6 min read · Jan 23, 2026
Installa Piwigo Gallery Su Nginx Con Debian Wheezy
Installa Piwigo Gallery Su Nginx Con Debian Wheezy
Questo tutorial mostra come puoi installare e far funzionare un sito gallery piwigo con nginx, configurato per vhosts, su un sistema Debian Wheezy. Piwigo è un sito web di galleria con molti plugin. In questo esempio configuriamo il vhost “gallery.domain.tld”.
Installa
Installa pacchetti per 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
Installa MySQL Server
apt-get install mysql-serverConfigura Nginx
Elimina il sito predefinito (opzionale)
rm -f /etc/nginx/sites-enabled/defaultCrea file template per vhosts
cd /etc/nginx/sites-available/
touch template-with-ssl
touch template
Vhost con supporto ssl
Inserisci quanto segue nel file
nano /etc/nginx/sites-available/template-with-sslserver {
listen 80;
# .domain.com corrisponderà sia a domain.com che a anything.domain.com
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;
# È meglio posizionare la radice del blocco del server a livello di server, e non a livello di posizione
# qualsiasi percorso del blocco di posizione sarà relativo a questa radice.
root /var/www/www.domain.tld;
# È sempre bene impostare i log, nota però che non puoi disattivare il log degli errori
# impostare error_log off; creerà semplicemente un file chiamato 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Questo può anche andare a livello http { }
index index.html index.htm index.php;
location / {
# se stai usando solo wordpress e non vuoi riscritture extra
# allora sostituisci la parola @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puoi mettere alcune delle tue regole di riscrittura qui
# ad esempio riscrivi ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nulla corrisponde, invieremo semplicemente a /index.php
rewrite ^ /index.php last;
}
# Questo blocco catturerà le richieste di file statici, come immagini, css, js
# Il prefisso ?: è un segno 'non catturante', il che significa che non richiediamo
# che il modello venga catturato in $1, il che dovrebbe aiutare a migliorare le prestazioni
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Alcuni controlli di cache di base per i file statici da inviare al browser
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# rimuovi la riga robots se vuoi usare il robots.txt virtuale di wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# questo impedisce che i file nascosti (che iniziano con un punto) vengano serviti
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;
}
}
# solo, se vuoi usare ssl-vhost
server {
listen 443 default ssl;
# .domain.com corrisponderà sia a domain.com che a 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;
# È meglio posizionare la radice del blocco del server a livello di server, e non a livello di posizione
# qualsiasi percorso del blocco di posizione sarà relativo a questa radice.
root /var/www/www.domain.tld;
# È sempre bene impostare i log, nota però che non puoi disattivare il log degli errori
# impostare error_log off; creerà semplicemente un file chiamato 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Questo può anche andare a livello http { }
index index.html index.htm index.php;
location / {
# se stai usando solo wordpress e non vuoi riscritture extra
# allora sostituisci la parola @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puoi mettere alcune delle tue regole di riscrittura qui
# ad esempio riscrivi ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nulla corrisponde, invieremo semplicemente a /index.php
rewrite ^ /index.php last;
}
# Questo blocco catturerà le richieste di file statici, come immagini, css, js
# Il prefisso ?: è un segno 'non catturante', il che significa che non richiediamo
# che il modello venga catturato in $1, il che dovrebbe aiutare a migliorare le prestazioni
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Alcuni controlli di cache di base per i file statici da inviare al browser
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# rimuovi la riga robots se vuoi usare il robots.txt virtuale di wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# questo impedisce che i file nascosti (che iniziano con un punto) vengano serviti
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 solo per HTTP
nano /etc/nginx/sites-available/templateserver {
listen 80;
# .domain.com corrisponderà sia a domain.com che a anything.domain.com
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;
# È meglio posizionare la radice del blocco del server a livello di server, e non a livello di posizione
# qualsiasi percorso del blocco di posizione sarà relativo a questa radice.
root /var/www/www.domain.tld;
# È sempre bene impostare i log, nota però che non puoi disattivare il log degli errori
# impostare error_log off; creerà semplicemente un file chiamato 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;
# Questo può anche andare a livello http { }
index index.html index.htm index.php;
location / {
# se stai usando solo wordpress e non vuoi riscritture extra
# allora sostituisci la parola @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puoi mettere alcune delle tue regole di riscrittura qui
# ad esempio riscrivi ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nulla corrisponde, invieremo semplicemente a /index.php
rewrite ^ /index.php last;
}
# Questo blocco catturerà le richieste di file statici, come immagini, css, js
# Il prefisso ?: è un segno 'non catturante', il che significa che non richiediamo
# che il modello venga catturato in $1, il che dovrebbe aiutare a migliorare le prestazioni
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Alcuni controlli di cache di base per i file statici da inviare al browser
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# rimuovi la riga robots se vuoi usare il robots.txt virtuale di wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# questo impedisce che i file nascosti (che iniziano con un punto) vengano serviti
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;
}
}Crea il primo vhost
Usa il template
cp /etc/nginx/sites-available/template /etc/nginx/sites-available/gallery.domain.tldModifica le variabili di percorso
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;Crea la tua struttura di directory
mkdir -p /var/www/gallery.domain.tld
chown -R www-data:www-data /var/www
Abilita il tuo vhost
ln -s /etc/nginx/sites-available/gallery.domain.tld /etc/nginx/sites-enabled/gallery.domain.tldOra riavvia i servizi:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Testa PHP
Crea un file di test con phpinfo:
nano /var/www/gallery.domain.tld/test.php
Per scopi di test rapidi, modifica semplicemente il
file hosts
con il nome del vhost; in questo esempio l’IP del server è
192.168.1.10
:
192.168.1.10 gallery.domain.tldOra apri il tuo browser e naviga a:
http://gallery.domain.tldSe vedi una pagina informativa sulla versione di php installata, tutto va bene ora puoi eliminare il tuo file di test:
rm -f nano /var/www/gallery.domain.tld/test.php Configura Piwigo
Crea database & utente
username: gallery01
password: PASSWORD
Collegati a MySQL:
mysql -u root -pcreate database gallery01; grant all on gallery01.* to ‘gallery’@’localhost’ identified by ‘PASSWORD’; flush privileges; \q;
Scarica il file di netinstall per 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
Modifiche di configurazione
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;Non dimenticare di riavviare i servizi:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Usa il webinstaller
Apri il browser e naviga a:
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.