Piwigo Installation · 6 min read · Jan 23, 2026
Instalar Piwigo Gallery en Nginx con Debian Wheezy
Instalar Piwigo Gallery en Nginx con Debian Wheezy
Este tutorial muestra cómo puedes instalar y ejecutar un sitio de galería piwigo con nginx, configurado para vhosts, en un sistema Debian Wheezy. Piwigo es un sitio web de galería con muchos complementos. En este ejemplo, configuramos el vhost “gallery.domain.tld”.
Instalar
Instalar paquetes para 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
Instalar MySQL Server
apt-get install mysql-serverConfigurar Nginx
Eliminar el sitio predeterminado (opcional)
rm -f /etc/nginx/sites-enabled/defaultCrear archivo de plantilla para vhosts
cd /etc/nginx/sites-available/
touch template-with-ssl
touch template
Vhost con soporte ssl
Inserta lo siguiente en el archivo
nano /etc/nginx/sites-available/template-with-sslserver {
listen 80;
# .domain.com coincidirá tanto con domain.com como con anything.domain.com
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;
# Es mejor colocar la raíz del bloque del servidor a nivel de servidor, y no a nivel de ubicación
# cualquier ruta de bloque de ubicación será relativa a esta raíz.
root /var/www/www.domain.tld;
# Siempre es bueno establecer registros, ten en cuenta que no puedes desactivar el registro de errores
# establecer error_log off; simplemente creará un archivo llamado 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Esto también puede ir en el nivel http { }
index index.html index.htm index.php;
location / {
# si solo estás usando wordpress y no quieres reescrituras adicionales
# entonces reemplaza la palabra @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puedes poner algunas de tus propias reglas de reescritura aquí
# por ejemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si nada coincide, simplemente lo enviaremos a /index.php
rewrite ^ /index.php last;
}
# Este bloque capturará solicitudes de archivos estáticos, como imágenes, css, js
# El prefijo ?: es una marca 'no capturadora', lo que significa que no requerimos
# que el patrón se capture en $1, lo que debería ayudar a mejorar el rendimiento
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algunos controles básicos de caché para archivos estáticos que se enviarán al navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# elimina la línea de robots si quieres usar el robots.txt virtual de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# esto previene que se sirvan archivos ocultos (que comienzan con un punto)
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, si quieres usar ssl-vhost
server {
listen 443 default ssl;
# .domain.com coincidirá tanto con domain.com como con 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;
# Es mejor colocar la raíz del bloque del servidor a nivel de servidor, y no a nivel de ubicación
# cualquier ruta de bloque de ubicación será relativa a esta raíz.
root /var/www/www.domain.tld;
# Siempre es bueno establecer registros, ten en cuenta que no puedes desactivar el registro de errores
# establecer error_log off; simplemente creará un archivo llamado 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Esto también puede ir en el nivel http { }
index index.html index.htm index.php;
location / {
# si solo estás usando wordpress y no quieres reescrituras adicionales
# entonces reemplaza la palabra @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puedes poner algunas de tus propias reglas de reescritura aquí
# por ejemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si nada coincide, simplemente lo enviaremos a /index.php
rewrite ^ /index.php last;
}
# Este bloque capturará solicitudes de archivos estáticos, como imágenes, css, js
# El prefijo ?: es una marca 'no capturadora', lo que significa que no requerimos
# que el patrón se capture en $1, lo que debería ayudar a mejorar el rendimiento
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algunos controles básicos de caché para archivos estáticos que se enviarán al navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# elimina la línea de robots si quieres usar el robots.txt virtual de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# esto previene que se sirvan archivos ocultos (que comienzan con un punto)
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 para HTTP
nano /etc/nginx/sites-available/templateserver {
listen 80;
# .domain.com coincidirá tanto con domain.com como con anything.domain.com
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;
# Es mejor colocar la raíz del bloque del servidor a nivel de servidor, y no a nivel de ubicación
# cualquier ruta de bloque de ubicación será relativa a esta raíz.
root /var/www/www.domain.tld;
# Siempre es bueno establecer registros, ten en cuenta que no puedes desactivar el registro de errores
# establecer error_log off; simplemente creará un archivo llamado 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;
# Esto también puede ir en el nivel http { }
index index.html index.htm index.php;
location / {
# si solo estás usando wordpress y no quieres reescrituras adicionales
# entonces reemplaza la palabra @rewrites con /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Puedes poner algunas de tus propias reglas de reescritura aquí
# por ejemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Si nada coincide, simplemente lo enviaremos a /index.php
rewrite ^ /index.php last;
}
# Este bloque capturará solicitudes de archivos estáticos, como imágenes, css, js
# El prefijo ?: es una marca 'no capturadora', lo que significa que no requerimos
# que el patrón se capture en $1, lo que debería ayudar a mejorar el rendimiento
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algunos controles básicos de caché para archivos estáticos que se enviarán al navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# elimina la línea de robots si quieres usar el robots.txt virtual de wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# esto previene que se sirvan archivos ocultos (que comienzan con un punto)
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;
}
}Crear primer vhost
Usar plantilla
cp /etc/nginx/sites-available/template /etc/nginx/sites-available/gallery.domain.tldEditar variables de ruta
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;Crear tu estructura de directorios
mkdir -p /var/www/gallery.domain.tld
chown -R www-data:www-data /var/www
Habilitar tu vhost
ln -s /etc/nginx/sites-available/gallery.domain.tld /etc/nginx/sites-enabled/gallery.domain.tldAhora reinicia los servicios:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Probar PHP
Crea un archivo de prueba con phpinfo:
nano /var/www/gallery.domain.tld/test.php
Para propósitos de prueba rápida, simplemente edita el
archivo hosts
con el nombre del vhost; en este ejemplo, la IP del servidor es
192.168.1.10
:
192.168.1.10 gallery.domain.tldAhora abre tu navegador y navega a:
http://gallery.domain.tldSi ves una página informativa sobre la versión de php instalada, todo está bien ahora puedes eliminar tu archivo de prueba:
rm -f nano /var/www/gallery.domain.tld/test.php Configurar Piwigo
Crear base de datos y usuario
nombre de usuario: gallery01
contraseña: PASSWORD
Conéctate a MySQL:
mysql -u root -pcreate database gallery01; grant all on gallery01.* to ‘gallery’@’localhost’ identified by ‘PASSWORD’; flush privileges; \q;
Descargar archivo de instalación para 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
Ajustes de configuración
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;No olvides reiniciar los servicios:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Usar el instalador web
Abre el navegador y navega a:
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.