Piwigo Installation · 6 min read · Jan 23, 2026

Instalar Piwigo Gallery No Nginx Com Debian Wheezy

Instalar Piwigo Gallery No Nginx Com Debian Wheezy

Este tutorial mostra como você pode instalar e executar um site de galeria piwigo com nginx, configurado para vhosts, em um sistema Debian Wheezy. Piwigo é um site de galeria com muitos plugins. Neste exemplo, configuramos o vhost “gallery.domain.tld”.

Instalar

Instalar pacotes 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-server

Configurar Nginx

Deletar site padrão (opcional)

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

Criar arquivo de modelo para vhosts

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

Vhost com suporte a ssl

Insira o seguinte no arquivo

nano /etc/nginx/sites-available/template-with-ssl
server {
listen        80;
# .domain.com irá corresponder tanto domain.com quanto anything.domain.com
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;

# É melhor colocar a raiz do bloco do servidor no nível do servidor, e não no nível da localização
# qualquer caminho de bloco de localização será relativo a esta raiz.
root /var/www/www.domain.tld;

# É sempre bom definir logs, note que você não pode desligar o log de erro
# definir error_log off; simplesmente criará um arquivo chamado 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;

# Isso também pode ir no nível http { }
index index.html index.htm index.php;

location / {
# se você está apenas usando wordpress e não quer reescritas extras
# então substitua a palavra @rewrites por /index.php
try_files $uri $uri/ @rewrites;
}

location @rewrites {
# Você pode colocar algumas de suas próprias regras de reescrita aqui
# por exemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nada corresponder, nós apenas enviaremos para /index.php
rewrite ^ /index.php last;
}

# Este bloco irá capturar solicitações de arquivos estáticos, como imagens, css, js
# O prefixo ?: é uma marca 'não capturante', o que significa que não precisamos
# que o padrão seja capturado em $1, o que deve ajudar a melhorar o desempenho
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algum controle básico de cache para arquivos estáticos a serem enviados ao navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# remova a linha robots se você quiser usar o robots.txt virtual do wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# isso impede que arquivos ocultos (começando com um ponto) sejam servidos
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;
}
}
# apenas, se você quiser usar ssl-vhost
server {
listen        443 default ssl;
# .domain.com irá corresponder tanto domain.com quanto 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;
# É melhor colocar a raiz do bloco do servidor no nível do servidor, e não no nível da localização
# qualquer caminho de bloco de localização será relativo a esta raiz.
root /var/www/www.domain.tld;

# É sempre bom definir logs, note que você não pode desligar o log de erro
# definir error_log off; simplesmente criará um arquivo chamado 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;

# Isso também pode ir no nível http { }
index index.html index.htm index.php;

location / {
# se você está apenas usando wordpress e não quer reescritas extras
# então substitua a palavra @rewrites por /index.php
try_files $uri $uri/ @rewrites;
}

location @rewrites {
# Você pode colocar algumas de suas próprias regras de reescrita aqui
# por exemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nada corresponder, nós apenas enviaremos para /index.php
rewrite ^ /index.php last;
}

# Este bloco irá capturar solicitações de arquivos estáticos, como imagens, css, js
# O prefixo ?: é uma marca 'não capturante', o que significa que não precisamos
# que o padrão seja capturado em $1, o que deve ajudar a melhorar o desempenho
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algum controle básico de cache para arquivos estáticos a serem enviados ao navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# remova a linha robots se você quiser usar o robots.txt virtual do wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# isso impede que arquivos ocultos (começando com um ponto) sejam servidos
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 apenas para HTTP

nano /etc/nginx/sites-available/template
server {
listen        80;
# .domain.com irá corresponder tanto domain.com quanto anything.domain.com
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;

# É melhor colocar a raiz do bloco do servidor no nível do servidor, e não no nível da localização
# qualquer caminho de bloco de localização será relativo a esta raiz.
root /var/www/www.domain.tld;

# É sempre bom definir logs, note que você não pode desligar o log de erro
# definir error_log off; simplesmente criará um arquivo chamado 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;

# Isso também pode ir no nível http { }
index index.html index.htm index.php;

location / {
# se você está apenas usando wordpress e não quer reescritas extras
# então substitua a palavra @rewrites por /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Você pode colocar algumas de suas próprias regras de reescrita aqui
# por exemplo rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Se nada corresponder, nós apenas enviaremos para /index.php
rewrite ^ /index.php last;
}

# Este bloco irá capturar solicitações de arquivos estáticos, como imagens, css, js
# O prefixo ?: é uma marca 'não capturante', o que significa que não precisamos
# que o padrão seja capturado em $1, o que deve ajudar a melhorar o desempenho
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Algum controle básico de cache para arquivos estáticos a serem enviados ao navegador
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}

# remova a linha robots se você quiser usar o robots.txt virtual do wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }

# isso impede que arquivos ocultos (começando com um ponto) sejam servidos
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;
}
}

Criar primeiro vhost

Usar template

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

Editar variáveis de caminho

 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;

Criar sua estrutura de diretórios

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

Habilitar seu vhost

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

Agora reinicie os serviços:

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

Testar PHP

Crie um arquivo de teste com phpinfo:

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

Para fins de teste rápido, apenas edite o

hosts

arquivo com o nome do vhost; no exemplo, o IP do servidor é

192.168.1.10 :

  192.168.1.10  gallery.domain.tld

Agora abra seu navegador e navegue até:

 http://gallery.domain.tld

Se você ver uma página informativa sobre a versão do php instalada, tudo está ok agora você pode deletar seu arquivo de teste:

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

Configurar Piwigo

Criar banco de dados e usuário

username: gallery01
password: PASSWORD

Conecte-se ao MySQL:

 mysql -u root -p

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

Baixar arquivo de instalação 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 configuração

 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ão se esqueça de reiniciar os serviços:

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

Usar instalador web

Abra o navegador e navegue até:

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

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.