Installation · 6 min read · Jan 23, 2026
Piwigo-Galerie auf Nginx mit Debian Wheezy installieren
Piwigo-Galerie auf Nginx mit Debian Wheezy installieren
Dieses Tutorial zeigt, wie Sie eine Piwigo-Galerie-Website mit Nginx, konfiguriert für vhosts, auf einem Debian Wheezy-System installieren und betreiben können. Piwigo ist eine Galerie-Website mit vielen Plugins. In diesem Beispiel konfigurieren wir den vhost “gallery.domain.tld”.
Installieren
Pakete für Nginx installieren
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
MySQL-Server installieren
apt-get install mysql-serverNginx konfigurieren
Standardseite löschen (optional)
rm -f /etc/nginx/sites-enabled/defaultTemplate-Datei für vhosts erstellen
cd /etc/nginx/sites-available/
touch template-with-ssl
touch template
Vhost mit SSL-Unterstützung
Fügen Sie Folgendes in die Datei ein
nano /etc/nginx/sites-available/template-with-sslserver {
listen 80;
# .domain.com wird sowohl domain.com als auch anything.domain.com entsprechen
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;
# Es ist am besten, die Wurzel des Serverblocks auf der Serverebene und nicht auf der Standortebene zu platzieren
# Jeder Standortblock-Pfad wird relativ zu dieser Wurzel sein.
root /var/www/www.domain.tld;
# Es ist immer gut, Protokolle festzulegen, beachten Sie jedoch, dass Sie das Fehlerprotokoll nicht deaktivieren können
# Das Setzen von error_log off; erstellt einfach eine Datei mit dem Namen 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Dies kann auch auf der http { }-Ebene erfolgen
index index.html index.htm index.php;
location / {
# Wenn Sie nur WordPress verwenden und keine zusätzlichen Umschreibungen wünschen
# dann ersetzen Sie das Wort @rewrites durch /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Hier können Sie einige Ihrer eigenen Umschreiberegeln einfügen
# zum Beispiel rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Wenn nichts übereinstimmt, senden wir es einfach an /index.php
rewrite ^ /index.php last;
}
# Dieser Block fängt statische Dateianfragen wie Bilder, css, js ab
# Das ?: Präfix ist ein 'nicht erfassendes' Zeichen, was bedeutet, dass wir nicht verlangen
# dass das Muster in $1 erfasst wird, was die Leistung verbessern sollte
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Einige grundlegende Cache-Steuerung für statische Dateien, die an den Browser gesendet werden
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Entfernen Sie die Robots-Zeile, wenn Sie die virtuelle robots.txt von WordPress verwenden möchten
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# Dies verhindert, dass versteckte Dateien (die mit einem Punkt beginnen) bereitgestellt werden
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;
}
}
# nur, wenn Sie ssl-vhost verwenden möchten
server {
listen 443 default ssl;
# .domain.com wird sowohl domain.com als auch anything.domain.com entsprechen
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 ist am besten, die Wurzel des Serverblocks auf der Serverebene und nicht auf der Standortebene zu platzieren
# Jeder Standortblock-Pfad wird relativ zu dieser Wurzel sein.
root /var/www/www.domain.tld;
# Es ist immer gut, Protokolle festzulegen, beachten Sie jedoch, dass Sie das Fehlerprotokoll nicht deaktivieren können
# Das Setzen von error_log off; erstellt einfach eine Datei mit dem Namen 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Dies kann auch auf der http { }-Ebene erfolgen
index index.html index.htm index.php;
location / {
# Wenn Sie nur WordPress verwenden und keine zusätzlichen Umschreibungen wünschen
# dann ersetzen Sie das Wort @rewrites durch /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Hier können Sie einige Ihrer eigenen Umschreiberegeln einfügen
# zum Beispiel rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Wenn nichts übereinstimmt, senden wir es einfach an /index.php
rewrite ^ /index.php last;
}
# Dieser Block fängt statische Dateianfragen wie Bilder, css, js ab
# Das ?: Präfix ist ein 'nicht erfassendes' Zeichen, was bedeutet, dass wir nicht verlangen
# dass das Muster in $1 erfasst wird, was die Leistung verbessern sollte
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Einige grundlegende Cache-Steuerung für statische Dateien, die an den Browser gesendet werden
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Entfernen Sie die Robots-Zeile, wenn Sie die virtuelle robots.txt von WordPress verwenden möchten
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# Dies verhindert, dass versteckte Dateien (die mit einem Punkt beginnen) bereitgestellt werden
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 nur für HTTP
nano /etc/nginx/sites-available/templateserver {
listen 80;
# .domain.com wird sowohl domain.com als auch anything.domain.com entsprechen
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;
# Es ist am besten, die Wurzel des Serverblocks auf der Serverebene und nicht auf der Standortebene zu platzieren
# Jeder Standortblock-Pfad wird relativ zu dieser Wurzel sein.
root /var/www/www.domain.tld;
# Es ist immer gut, Protokolle festzulegen, beachten Sie jedoch, dass Sie das Fehlerprotokoll nicht deaktivieren können
# Das Setzen von error_log off; erstellt einfach eine Datei mit dem Namen 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;
# Dies kann auch auf der http { }-Ebene erfolgen
index index.html index.htm index.php;
location / {
# Wenn Sie nur WordPress verwenden und keine zusätzlichen Umschreibungen wünschen
# dann ersetzen Sie das Wort @rewrites durch /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Hier können Sie einige Ihrer eigenen Umschreiberegeln einfügen
# zum Beispiel rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Wenn nichts übereinstimmt, senden wir es einfach an /index.php
rewrite ^ /index.php last;
}
# Dieser Block fängt statische Dateianfragen wie Bilder, css, js ab
# Das ?: Präfix ist ein 'nicht erfassendes' Zeichen, was bedeutet, dass wir nicht verlangen
# dass das Muster in $1 erfasst wird, was die Leistung verbessern sollte
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Einige grundlegende Cache-Steuerung für statische Dateien, die an den Browser gesendet werden
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# Entfernen Sie die Robots-Zeile, wenn Sie die virtuelle robots.txt von WordPress verwenden möchten
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# Dies verhindert, dass versteckte Dateien (die mit einem Punkt beginnen) bereitgestellt werden
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;
}
}Ersten vhost erstellen
Template verwenden
cp /etc/nginx/sites-available/template /etc/nginx/sites-available/gallery.domain.tldPfadvariablen bearbeiten
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;Erstellen Sie Ihre Verzeichnisstruktur
mkdir -p /var/www/gallery.domain.tld
chown -R www-data:www-data /var/www
Aktivieren Sie Ihren vhost
ln -s /etc/nginx/sites-available/gallery.domain.tld /etc/nginx/sites-enabled/gallery.domain.tldJetzt Dienste neu starten:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
PHP testen
Erstellen Sie eine Testdatei mit phpinfo:
nano /var/www/gallery.domain.tld/test.php
Für schnelle Testzwecke bearbeiten Sie einfach die
hosts
Datei mit dem vhost-Namen; In diesem Beispiel ist die IP des Servers
192.168.1.10
:
192.168.1.10 gallery.domain.tldJetzt öffnen Sie Ihren Browser und navigieren Sie zu:
http://gallery.domain.tldWenn Sie eine Informationsseite über die installierte PHP-Version sehen, ist alles in Ordnung jetzt können Sie Ihre Testdatei löschen:
rm -f nano /var/www/gallery.domain.tld/test.php Piwigo konfigurieren
Datenbank und Benutzer erstellen
Benutzername: gallery01
Passwort: PASSWORD
Mit MySQL verbinden:
mysql -u root -pcreate database gallery01; grant all on gallery01.* to ‘gallery’@’localhost’ identified by ‘PASSWORD’; flush privileges; \q;
Netinstall-Datei für Piwigo herunterladen
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
Konfigurationseinstellungen
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;Vergessen Sie nicht, die Dienste neu zu starten:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Webinstaller verwenden
Öffnen Sie den Browser und navigieren Sie zu:
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.