User Tools

Site Tools


servers:bsd:nginx:piwigo

This is an old revision of the document!


Information

Prerequisites

Dependencies

Download Source

su -
git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/Piwigo/Piwigo.git' '/usr/local/www/media' && chown -R 'www':'www' '/usr/local/www/media'
git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git' '/usr/local/www/media/themes/bootstrap_darkroom' && chown -R 'www':'www' '/usr/local/www/media'

Database

su -
mariadb
CREATE DATABASE piwigo;
CREATE USER piwigo@localhost IDENTIFIED BY 'x';
GRANT ALL PRIVILEGES ON piwigo.* to piwigo@localhost;
FLUSH PRIVILEGES;EXIT;

nginx + PHP-FPM Configuration

PHP-FPM Socket

su -
ee '/usr/local/etc/php-fpm.d/media.conf' && service 'php_fpm' reload
[media]

; User/Group
user = "www"
group = "www"

; Socket
listen = "127.0.0.1:9003"
listen.allowed_clients = "127.0.0.1"

; Process Management
pm = "ondemand"
pm.max_children = "4"
pm.process_idle_timeout = "30"

; Logging
php_value[log_errors] = "Off"
php_value[error_reporting] = "~E_ALL"
php_value[display_errors] = "Off"
php_value[display_startup_errors] = "Off"
php_value[html_errors] = "Off"

; General
php_value[date.timezone] = "America/New_York"

; Piwigo
php_value[max_execution_time] = "200"
php_value[memory_limit] = "512M"
php_value[post_max_size] = "100M"
php_value[upload_max_filesize] = "100M"
php_value[max_file_uploads] = "100"

; End

FastCGI

su -
ee '/usr/local/etc/freenginx/default.d/media.conf'
location '~' '\.(php|phar)(/.*)?$' {
 fastcgi_split_path_info '^(.+\.(?:php|phar))(/.*)$';
 fastcgi_intercept_errors 'on';
 fastcgi_index 'index.php';
 include 'fastcgi_params';
 fastcgi_param 'SCRIPT_FILENAME' '$document_root$fastcgi_script_name';
 fastcgi_param 'PATH_INFO' '$fastcgi_path_info';
 fastcgi_param 'HTTPS' 'on';

 fastcgi_pass '127.0.0.1:9003';
}

# End

Server Block

su -
ee '/usr/local/etc/freenginx/vhosts.d/media.conf' && service 'nginx' reload
server {
 listen '443' 'ssl';
 http2 'on';
 server_name 'media.realmofespionage.xyz';
 root '/usr/local/www/media';
 index 'index.php';

 include '/usr/local/etc/freenginx/default.d/media.conf';
 include '/usr/local/etc/freenginx/default.d/headers.conf';

 client_max_body_size '100M';

# access_log '/var/log/nginx/media-access.log';
# error_log '/var/log/nginx/media-error.log';

 location '/' {
  index 'index.php';
  try_files '$uri $uri/' '@rewrite';
 }

 location '@rewrite' {
  rewrite '^/picture((/|$).*)$' '/picture.php$1' 'last';
  rewrite '^/index((/|$).*)$' '/index.php$1' 'last';
  rewrite '^/i((/|$).*)$' '/i.php$1' 'last';
 }
}

# End

Initial Setup

Settings

  • :!: Use a relay/bogus email address during account creation to protect against potential spam 4)
  • :!: Disable Allow user registration immediately under Configuration → Options → General → Permissions
  • :?: Seemingly have to enable Activate comments in order to prevent broken CSS on the bottom of image pages, but can uncheck Comments for all so that nobody public can leave comments
  • Activate Boostrap Darkroom theme

Page Banner

<p>Tech, hardware, food, nature, and gaming pictures and videos!</p>

config.inc.php

su -
su -m 'www' -c "ee '/usr/local/www/media/local/config/config.inc.php'"
<?php

// nginx Rewrite
$conf['question_mark_in_urls'] = false;
$conf['php_extension_in_urls'] = false;

// Minimal Logging
$conf['log_level'] = 'EMERGENCY';

// Hide PHP Warnings
$conf['show_php_errors'] = E_ALL & ~E_DEPRECATED & ~E_NOTICE & ~E_WARNING;

// Header Links
$conf['links'] = array(
  'https://realmofespionage.xyz' => 'Realm of Espionage',
  'https://wiki.realmofespionage.xyz/start' => 'RoE | Wiki',
  'https://blog.realmofespionage.xyz' => 'RoE | Blog',
  'https://social.realmofespionage.xyz/profile/espionage724' => 'RoE | Social',
  'https://forums.realmofespionage.xyz' => 'RoE | Forums',
  'https://wiki.realmofespionage.xyz/user:espionage724' => 'Webmaster Info',
  'https://wiki.realmofespionage.xyz/servers:bsd:nginx:piwigo' => 'Instance Configuration Notes',
  );

// Video Uploading
$conf['upload_form_all_types'] = true;

$conf['file_ext'] = array_merge(
  $conf['picture_ext'],
  array('mp4','webmv','m4v','webm','mov')
  );

// End
?>

Scripts

Updater

mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/updater.sh' && chmod +x ~/'.local/scripts/www/media/updater.sh'
#!/bin/sh

cd '/tmp'

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' reset --hard 'origin/master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' pull 'origin' 'master' --rebase"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' pull 'origin' 'master' --rebase"

'/bin/sync'

# End
su 'root' -c ~/'.local/scripts/www/media/updater.sh'

Backup

mkdir -p ~/'backups' ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/backup.sh' && chmod +x ~/'.local/scripts/www/media/backup.sh'
#!/bin/sh

cd '/tmp'

'/usr/bin/tar' -czf '/home/espionage724/backups/piwigo-files-auto-'$(date +%Y-%m-%d)'.tar.gz' -C '/usr/local/www' 'media'

'/usr/local/bin/mariadb-dump' --single-transaction --quick 'piwigo' -r '/home/espionage724/backups/piwigo-database-auto-'$(date +%Y-%m-%d)'.sql'

'/bin/sync'

# End
su 'root' -c ~/'.local/scripts/www/media/backup.sh'

Maintenance

mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/maintenance.sh' && chmod +x ~/'.local/scripts/www/media/maintenance.sh'
#!/bin/sh

cd '/tmp'

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' gc --aggressive --prune='all'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' fsck --full --strict"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' fsck --full --strict"

# End
su 'root' -c ~/'.local/scripts/www/media/maintenance.sh'

Git Fix

  • :!: Set email for both user.email
mkdir -p ~/'.local/scripts/www/media' && ee ~/'.local/scripts/www/media/git-fix.sh' && chmod +x ~/'.local/scripts/www/media/git-fix.sh'
#!/bin/sh

cd '/tmp'

####################
# Piwigo
####################

'/usr/bin/su' -m 'www' -c "'/bin/rm' -Rf '/usr/local/www/media/.git'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' init --initial-branch='master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' add '.'"

########################################
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' config 'user.email' 'espionage724@x'"
########################################

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' commit --message='x'"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' remote add 'origin' 'https://github.com/Piwigo/Piwigo.git'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' reset --hard 'origin/master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' gc --aggressive --prune='all'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media' fsck --full --strict"

####################
# Bootstrap Darkroom
####################

'/usr/bin/su' -m 'www' -c "'/bin/rm' -Rf '/usr/local/www/media/themes/bootstrap_darkroom/.git'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' init --initial-branch='master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' add '.'"

########################################
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' config 'user.email' 'espionage724@x'"
########################################

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' commit --message='x'"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' remote add 'origin' 'https://github.com/Piwigo/piwigo-bootstrap-darkroom.git'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' pull --depth '1' --recurse-submodules 'origin' 'master' --rebase"

'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' reset --hard 'origin/master'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' gc --aggressive --prune='all'"
'/usr/bin/su' -m 'www' -c "'/usr/local/bin/git' -C '/usr/local/www/media/themes/bootstrap_darkroom' fsck --full --strict"

'/bin/sync'

# End
su 'root' -c ~/'.local/scripts/www/media/git-fix.sh'

cron

Updater

  • Daily 01:00:00 AM
su -
ee '/etc/cron.d/media-updater'
#
SHELL=/bin/sh

0 1 * * * root '/home/espionage724/.local/scripts/www/media/updater.sh'

# End

Backup

  • Monthly (2nd) 01:10:00 AM
su -
ee '/etc/cron.d/media-backup'
#
SHELL=/bin/sh

10 1 2 * * root '/home/espionage724/.local/scripts/www/media/backup.sh'

# End

Maintenance

  • Monthly (2nd) 01:30:00 AM
su -
ee '/etc/cron.d/media-maintenance'
#
SHELL=/bin/sh

30 1 2 * * root '/home/espionage724/.local/scripts/www/media/maintenance.sh'

# End

Backup

Folder

su -
tar -czf '/home/espionage724/piwigo-files-manual-'$(date +%Y-%m-%d)'.tar.gz' -C '/usr/local/www' 'media'

Database

su -
mariadb-dump --single-transaction --quick 'piwigo' -r '/home/espionage724/piwigo-database-manual-'$(date +%Y-%m-%d)'.sql'

scp

scp espionage724@192.168.1.152:~/'piwigo-files-'*'.tar.gz' espionage724@192.168.1.152:~/'piwigo-database-'*'.sql' ~/'Downloads' && sync

Restore

scp

scp ~/'Downloads/piwigo-files-'*'.tar.gz' ~/'Downloads/piwigo'*'.sql' espionage724@192.168.1.152:~

Folder

su
ls '/home/'$USER'/piwigo-files-'*'.tar.gz' && rm -Rf '/usr/local/www/media'
tar -xzf '/home/'$USER'/piwigo-files-'*'.tar.gz' -C '/usr/local/www' 'media' && chown -R 'www':'www' '/usr/local/www/media' && sync

Database

su
mariadb --execute='CREATE DATABASE piwigo;'
cat '/home/'$USER/'piwigo'*'.sql' | mariadb 'piwigo'

MySQL Connection

su -
su -m 'www' -c "ee '/usr/local/www/media/local/config/database.inc.php'"
$conf['db_host'] = '127.0.0.1';
4)
the webmaster URL in the footer shows the email in plaintext and looks tasty to bots
/usr/local/www/wiki/data/attic/servers/bsd/nginx/piwigo.1767995369.txt.gz · Last modified: by Sean Rhone

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki