Piwigo
Обновлено 18 марта 2020
Введение
Piwigo — система управления контентом (CMS) с открытым исходным кодом, предназначенная для создания фотогалереи. Благодаря свободно распространяемым расширениям легко настраивается для конкретных задач. Piwigo написан на языке PHP, а в качестве базы данных использует MySQL или его свободный аналог MariaDB.
Подготовка LXC контейнера
Мы рекомендуем выполнить установку Piwigo в отдельном контейнере, настроив его согласно инструкции.
Установка и настройка MariaDB
Установите и настройте MariaDB согласно руководству. Вместо базы данных dbtest из примера создайте базу piwigo, а вместо пользователя test создайте piwigouser.
Установка и настройка Nginx
Установите и настройте веб-сервер Nginx и выполните настройку PHP-FPM согласно руководству.
Установка Piwigo
Далее описан процесс установки Piwigo из исходного кода.
Загрузка и распаковка Piwigo
Установите пакет ImageMagick для корректной работы с различными форматами изображений:
emerge -a media-gfx/imagemagick
Предупреждение
Убедитесь, что в системе не установлен пакет dev-php/pecl-imagick, так как при его наличии могут возникнуть проблемы создания миниатюр изображений.
Для распаковки архива Piwigo вам понадобится архиватор unzip. Если необходимый пакет отсутствует в системе, установите его:
emerge -a app-arch/unzip
Скачайте и распакуйте сервис, создав необходимые пути:
mkdir /var/calculate/www
cd /var/calculate/www
curl -o piwigo.zip http://piwigo.org/download/dlcounter.php?code=latest
unzip piwigo.zip
rm piwigo.zip
Назначьте необходимые права:
chown -R nginx. piwigo
chmod o-w -R piwigo
Настройка Nginx для Piwigo
Настройте Nginx обслуживание для доменного имени piwigo.example.org:
server { listen 80; server_name piwigo.example.org; # It is best to place the root of the server block at the server level, and not the location level # any location block path will be relative to this root. root /var/calculate/www/piwigo; # It's always good to set logs, note however you cannot turn off the error log # setting error_log off; will simply create a file called 'off'. access_log /var/log/nginx/piwigo.access_log; error_log /var/log/nginx/piwigo.error_log; # This can also go in the http { } level index index.html index.htm index.php; location / { # if you're just using wordpress and don't want extra rewrites # then replace the word @rewrites with /index.php try_files $uri $uri/ @rewrites; } location @rewrites { # Can put some of your own rewrite rules in here # for example rewrite ^/~(.*)/(.*)/? /users/$1/$2 last; # If nothing matches we'll just send it to /index.php rewrite ^ /index.php last; } # This block will catch static file requests, such as images, css, js # The ?: prefix is a 'non-capturing' mark, meaning we do not require # the pattern to be captured into $1 which should help improve performance location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { # Some basic cache-control for static files to be sent to the browser expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # remove the robots line if you want to use wordpress' virtual robots.txt location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } # this prevents hidden files (beginning with a period) from being served 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:/run/php-fpm.socket; include fastcgi_params; } }
Настройка PHP-FPM
Выполните настройку переменных окружения PHP-FPM:
; Pass environment variables like LD_LIBRARY_PATH. All $VARIABLEs are taken from ; the current environment. ; Default Value: clean env env[HOSTNAME] = $HOSTNAME env[PATH] = /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/opt/bin env[TMP] = /tmp env[TMPDIR] = /tmp env[TEMP] = /tmp
Выполните настройку закачиваемых файлов через PHP-FPM:
; Temporary directory for HTTP uploaded files (will use system default if not ; specified). ; http://php.net/upload-tmp-dir upload_tmp_dir = /var/calculate/tmp ; Maximum allowed size for uploaded files. ; http://php.net/upload-max-filesize upload_max_filesize = 100M ; Maximum number of files that can be uploaded via a single request max_file_uploads = 20 ; Maximum size of POST data that PHP will accept. ; Its value may be 0 to disable the limit. It is ignored if POST data reading ; is disabled through enable_post_data_reading. ; http://php.net/post-max-size post_max_size = 100M
Презапустите Nginx и PHP-FPM, чтобы изменения вступили в силу:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
nginx | * Checking nginx configuration ... [ ok ] nginx | * Refreshing nginx configuration ... [ ok ]
php-fpm | * Stopping PHP FastCGI Process Manager ... [ ok ] php-fpm | * Testing PHP FastCGI Process Manager config ... [ ok ] php-fpm | * Starting PHP FastCGI Process Manager ... [ ok ]
Настройка Piwigo
Добавьте имя ресурса piwigo.example.org, работающего на IP-адресе 192.168.0.1, в DNS-сервер локальной сети или отредактируйте строку:
192.168.0.1 piwigo.example.org
Откройте в браузере сайт http://piwigo.example.org и выполните заключительную настройку Piwigo.
Настройка HTTPS
Получение сертификата Let's Encrypt
Получите сертификат домена piwigo.example.org для Nginx согласно руководству.
Настройка поддержки HTTPS в Nginx
Настройте Nginx для поддержки HTTPS согласно руководству.
Настройка HTTPS для Nextcloud
Настройте Nginx-обслуживание для доменного имени piwigo.example.org:
server { listen 80; server_name piwigo.example.org; rewrite ^ https://$server_name$request_uri? permanent; } server { listen 443 default ssl; server_name piwigo.example.org; ssl_certificate /etc/letsencrypt/live/piwigo.example.org/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/piwigo.example.org/privkey.pem; # It is best to place the root of the server block at the server level, and not the location level # any location block path will be relative to this root. root /var/calculate/www/piwigo; # It's always good to set logs, note however you cannot turn off the error log # setting error_log off; will simply create a file called 'off'. access_log /var/log/nginx/piwigo.access_log; error_log /var/log/nginx/piwigo.error_log; # This can also go in the http { } level index index.html index.htm index.php; location / { # if you're just using wordpress and don't want extra rewrites # then replace the word @rewrites with /index.php try_files $uri $uri/ @rewrites; } location @rewrites { # Can put some of your own rewrite rules in here # for example rewrite ^/~(.*)/(.*)/? /users/$1/$2 last; # If nothing matches we'll just send it to /index.php rewrite ^ /index.php last; } # This block will catch static file requests, such as images, css, js # The ?: prefix is a 'non-capturing' mark, meaning we do not require # the pattern to be captured into $1 which should help improve performance location ~* \.(?:ico|css|js|gif|jpe?g|png)$ { # Some basic cache-control for static files to be sent to the browser expires max; add_header Pragma public; add_header Cache-Control "public, must-revalidate, proxy-revalidate"; } # remove the robots line if you want to use wordpress' virtual robots.txt location = /robots.txt { access_log off; log_not_found off; } location = /favicon.ico { access_log off; log_not_found off; } # this prevents hidden files (beginning with a period) from being served 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:/run/php-fpm.socket; include fastcgi_params; } }
Презагрузите настройки Nginx, чтобы изменения вступили в силу:
nginx | * Checking nginx configuration ... [ ok ] nginx | * Refreshing nginx configuration ... [ ok ]
Заключение
Piwigo настроен и готов к работе! Это только начало пути. Впереди формирование структуры альбомов, перенос фотографий, добавление тэгов и настройка плагинов. CMS Piwigo должен прекрасно справиться с этими задачами.
Заметка
Поделитесь своими впечатлениями и опытом использования с другими пользователями в нашей группе @piwigo@calculate.social в Федеративной сети Mastodon