Установка · 6 min read · Jan 23, 2026
Установка Piwigo Gallery на Nginx с Debian Wheezy
Установка Piwigo Gallery на Nginx с Debian Wheezy
Этот учебник показывает, как вы можете установить и запустить сайт галереи piwigo с nginx, настроенным для vhosts, на системе Debian Wheezy. Piwigo — это сайт-галерея с множеством плагинов. В этом примере мы настраиваем vhost “gallery.domain.tld”.
Установка
Установка пакетов для 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
Установка MySQL сервера
apt-get install mysql-serverНастройка Nginx
Удалить сайт по умолчанию (необязательно)
rm -f /etc/nginx/sites-enabled/defaultСоздать файл-шаблон для vhosts
cd /etc/nginx/sites-available/
touch template-with-ssl
touch template
Vhost с поддержкой ssl
Вставьте следующее в файл
nano /etc/nginx/sites-available/template-with-sslserver {
listen 80;
# .domain.com будет соответствовать как domain.com, так и anything.domain.com
server_name www.domain.tld domain.tld;
rewrite ^ https://$server_name$request_uri? permanent;
# Лучше всего размещать корень блока сервера на уровне сервера, а не на уровне местоположения
# любой путь блока местоположения будет относительным к этому корню.
root /var/www/www.domain.tld;
# Всегда полезно устанавливать логи, однако обратите внимание, что вы не можете отключить журнал ошибок
# установка error_log off; просто создаст файл с именем 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Это также может быть в уровне http { }
index index.html index.htm index.php;
location / {
# если вы просто используете wordpress и не хотите дополнительных перезаписей
# тогда замените слово @rewrites на /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Можно добавить некоторые из ваших собственных правил перезаписи
# например, rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Если ничего не совпадает, мы просто отправим это в /index.php
rewrite ^ /index.php last;
}
# Этот блок будет обрабатывать запросы статических файлов, таких как изображения, css, js
# Префикс ?: является 'неконтролируемым' маркером, что означает, что нам не требуется
# чтобы шаблон был захвачен в $1, что должно помочь улучшить производительность
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Некоторая базовая кэш-контроль для статических файлов, которые будут отправлены в браузер
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# удалите строку robots, если хотите использовать виртуальный robots.txt wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# это предотвращает обслуживание скрытых файлов (начинающихся с точки)
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;
}
}
# просто, если вы хотите использовать ssl-vhost
server {
listen 443 default ssl;
# .domain.com будет соответствовать как domain.com, так и 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;
# Лучше всего размещать корень блока сервера на уровне сервера, а не на уровне местоположения
# любой путь блока местоположения будет относительным к этому корню.
root /var/www/www.domain.tld;
# Всегда полезно устанавливать логи, однако обратите внимание, что вы не можете отключить журнал ошибок
# установка error_log off; просто создаст файл с именем 'off'.
access_log /var/log/nginx/example.access.log;
error_log /var/log/nginx/example.error.log;
# Это также может быть в уровне http { }
index index.html index.htm index.php;
location / {
# если вы просто используете wordpress и не хотите дополнительных перезаписей
# тогда замените слово @rewrites на /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Можно добавить некоторые из ваших собственных правил перезаписи
# например, rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Если ничего не совпадает, мы просто отправим это в /index.php
rewrite ^ /index.php last;
}
# Этот блок будет обрабатывать запросы статических файлов, таких как изображения, css, js
# Префикс ?: является 'неконтролируемым' маркером, что означает, что нам не требуется
# чтобы шаблон был захвачен в $1, что должно помочь улучшить производительность
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Некоторая базовая кэш-контроль для статических файлов, которые будут отправлены в браузер
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# удалите строку robots, если хотите использовать виртуальный robots.txt wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# это предотвращает обслуживание скрытых файлов (начинающихся с точки)
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 только для HTTP
nano /etc/nginx/sites-available/templateserver {
listen 80;
# .domain.com будет соответствовать как domain.com, так и anything.domain.com
server_name www.domain.tld domain.tld;
#rewrite ^ https://$server_name$request_uri? permanent;
# Лучше всего размещать корень блока сервера на уровне сервера, а не на уровне местоположения
# любой путь блока местоположения будет относительным к этому корню.
root /var/www/www.domain.tld;
# Всегда полезно устанавливать логи, однако обратите внимание, что вы не можете отключить журнал ошибок
# установка error_log off; просто создаст файл с именем 'off'.
access_log /var/log/nginx/rugia.access.log;
error_log /var/log/nginx/rugia.error.log;
# Это также может быть в уровне http { }
index index.html index.htm index.php;
location / {
# если вы просто используете wordpress и не хотите дополнительных перезаписей
# тогда замените слово @rewrites на /index.php
try_files $uri $uri/ @rewrites;
}
location @rewrites {
# Можно добавить некоторые из ваших собственных правил перезаписи
# например, rewrite ^/~(.*)/(.*)/? /users/$1/$2 last;
# Если ничего не совпадает, мы просто отправим это в /index.php
rewrite ^ /index.php last;
}
# Этот блок будет обрабатывать запросы статических файлов, таких как изображения, css, js
# Префикс ?: является 'неконтролируемым' маркером, что означает, что нам не требуется
# чтобы шаблон был захвачен в $1, что должно помочь улучшить производительность
location ~* \\.(?:ico|css|js|gif|jpe?g|png)$ {
# Некоторая базовая кэш-контроль для статических файлов, которые будут отправлены в браузер
expires max;
add_header Pragma public;
add_header Cache-Control "public, must-revalidate, proxy-revalidate";
}
# удалите строку robots, если хотите использовать виртуальный robots.txt wordpress
location = /robots.txt { access_log off; log_not_found off; }
location = /favicon.ico { access_log off; log_not_found off; }
# это предотвращает обслуживание скрытых файлов (начинающихся с точки)
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
Использовать шаблон
cp /etc/nginx/sites-available/template /etc/nginx/sites-available/gallery.domain.tldИзменить переменные пути
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;Создайте свою структуру директорий
mkdir -p /var/www/gallery.domain.tld
chown -R www-data:www-data /var/www
Включите ваш vhost
ln -s /etc/nginx/sites-available/gallery.domain.tld /etc/nginx/sites-enabled/gallery.domain.tldТеперь перезапустите службы:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Тест PHP
Создайте тестовый файл с phpinfo:
nano /var/www/gallery.domain.tld/test.php
Для быстрого тестирования просто отредактируйте файл
hosts
с именем vhost; в этом примере IP сервера равен
192.168.1.10 :
192.168.1.10 gallery.domain.tldТеперь откройте ваш браузер и перейдите по адресу:
http://gallery.domain.tldЕсли вы видите информационную страницу о установленной версии php, все в порядке теперь вы можете удалить ваш тестовый файл:
rm -f nano /var/www/gallery.domain.tld/test.php Настройка Piwigo
Создание базы данных и пользователя
имя пользователя: gallery01
пароль: PASSWORD
Подключитесь к MySQL:
mysql -u root -pcreate database gallery01; grant all on gallery01.* to ‘gallery’@’localhost’ identified by ‘PASSWORD’; flush privileges; \q;
Скачайте файл netinstall для 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
Настройки конфигурации
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;Не забудьте перезапустить службы:
/etc/init.d/php5-fpm restart
/etc/init.d/nginx restart
Используйте веб-установщик
Откройте браузер и перейдите по адресу:
Get new posts in your inbox
No spam. Unsubscribe anytime.