User Tools

Site Tools


servers:nginx:dokuwiki

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
servers:nginx:dokuwiki [2019/01/18 16:19] โ€“ [Server Block] Sean Rhoneservers:nginx:dokuwiki [2024/02/07 16:34] โ€“ [Server Block] Sean Rhone
Line 1: Line 1:
 +====== Information ======
 +
 +  * DokuWiki ((https://www.dokuwiki.org)) ((https://github.com/splitbrain/dokuwiki))
 +  * [[Information:Realm of Espionage]]
 +  * https://wiki.realmofespionage.xyz ((you are here :p))
 +
 +===== Prerequisites =====
 +
 +  * [[distros:fedora_server|Fedora Server]]
 +  * [[servers:nginx_php_php-fpm|nginx + PHP + PHP-FPM]]
 +  * [[servers:nginx:lets_encrypt|Let's Encrypt]]
 +
 +====== Dependencies ======
 +
 +  * PHP Modules: gd sodium zip zlib xml
 +
 +  sudo dnf install php-gd php-sodium php-pecl-zip php-xml
 +
 +====== Download Source ======
 +
 +****
 +
 +  sudo git clone --branch 'master' --depth '1' --recurse-submodules 'https://github.com/splitbrain/dokuwiki.git' '/var/www/wiki' && sudo semanage fcontext --add --type 'httpd_sys_rw_content_t' '/var/www/wiki(/.*)?' && sudo restorecon -F -I -R '/var/www/wiki' && sudo chown -R 'nginx':'nginx' '/var/www/wiki' && sync
 +
 +====== nginx + PHP-FPM Configuration ======
 +
 +===== PHP-FPM Socket =====
 +
 +  sudo -e '/etc/php-fpm.d/wiki.conf' && sudo systemctl restart 'php-fpm'
 +
 +<code>
 +[wiki]
 +
 +; User/Group
 +user = nginx
 +group = nginx
 +
 +; Socket
 +listen = /run/php-fpm/wiki.sock
 +listen.acl_users = nginx
 +listen.allowed_clients = 127.0.0.1
 +
 +; Process Management
 +pm = ondemand
 +pm.max_children = 4
 +pm.process_idle_timeout = 30
 +
 +; Fedora php.ini Defaults
 +php_value[session.save_handler] = "files"
 +php_value[session.save_path] = "/var/lib/php/session"
 +
 +; General
 +php_value[date.timezone] = "America/New_York"
 +;php_value[max_execution_time] = "200"
 +;php_value[memory_limit] = "512M"
 +;php_value[post_max_size] = "10M"
 +;php_value[upload_max_filesize] = "10M"
 +;php_value[max_file_uploads] = "100"
 +
 +; End</code>
 +
 +===== FastCGI =====
 +
 +  sudo -e '/etc/nginx/default.d/wiki.conf'
 +
 +<code>
 +# PHP-FPM
 +location ~ \.(php|phar)(/.*)?$ {
 +    fastcgi_split_path_info ^(.+\.(?:php|phar))(/.*)$;
 +    fastcgi_intercept_errors on;
 +    fastcgi_index doku.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 unix:/run/php-fpm/wiki.sock;
 +}</code>
 +
 +===== Server Block ======
 +
 +  * 2023/09/12: CSPs disabled; TODO: Re-figure out CSPs
 +
 +  sudo -e '/etc/nginx/vhosts.d/wiki.conf' && sudo systemctl reload 'nginx' && sync
 +
 +<code>
 +server {
 +    listen '443' 'ssl' 'http2';
 +    server_name 'wiki.realmofespionage.xyz';
 +    root '/var/www/wiki';
 +    index 'doku.php';
 +
 +    include '/etc/nginx/default.d/wiki.conf';
 +    include '/etc/nginx/default.d/headers.conf';
 +
 +    client_max_body_size '10M';
 +
 +#    add_header Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline'; style-src 'self' 'unsafe-inline'; img-src 'self' data:" always;
 +#    add_header Content-Security-Policy "default-src 'self';
 +
 +#    access_log  /var/log/nginx/wiki-access.log;
 +#    error_log  /var/log/nginx/wiki-error.log;
 +
 +#    location = /install.php {
 +#        deny all;
 +#    }
 +
 +#    location ~ /(conf|bin|inc)/ {
 +#        deny all;
 +#    }
 +
 +#    location ~ /data/ {
 +#        internal;
 +#    }
 +
 +    location / { try_files $uri $uri/ @dokuwiki; }
 +
 +    location @dokuwiki {
 +        rewrite ^/_media/(.*) /lib/exe/fetch.php?media=$1 last;
 +        rewrite ^/_detail/(.*) /lib/exe/detail.php?media=$1 last;
 +        rewrite ^/_export/([^/]+)/(.*) /doku.php?do=export_$1&id=$2 last;
 +        rewrite ^/(.*) /doku.php?id=$1&$args last;
 +    }
 +}</code>
 +
 +====== Initial Setup ======
 +
 +  * :!: TODO: https://www.dokuwiki.org/rewrite
 +
 +  * https://wiki.realmofespionage.xyz/install.php
 +
 +====== Settings ======
 +
 +===== Plugins =====
 +
 +  * https://www.dokuwiki.org/plugin:searchindex
 +
 +===== Template Style Settings =====
 +
 +  * Alternative background color: ''#484848''
 +  * The general link color: ''#3d8bff''
 +  * :!: The width of the full site: ''100em'' ((this caused some kind of scrollbar I believe on a 1280x800 laptop))
 +
 +===== nginx Server Block Deny Directives =====
 +
 +  * Uncomment commented sections (except logs)
 +  * Do after initial setup
 +
 +  sudo -e '/etc/nginx/vhosts.d/wiki.conf' && sudo systemctl reload 'nginx'
 +
 +===== URL Rewrite =====
 +
 +  * Admin -> Configuration Settings -> DokuWiki -> Advanced -> userewrite
 +
 +  .htaccess
 +
 +===== Double-hyphen Convert Disable =====
 +
 +  * This prevents -- from becoming a โ€“ (long hyphen), which breaks some command's syntax
 +
 +  echo '--      --' | sudo tee '/var/www/wiki/conf/entities.local.conf' > '/dev/null' && sudo chown 'nginx':'nginx' '/var/www/wiki/conf/entities.local.conf' && sync
 +
 +====== Services ======
 +
 +===== Updater =====
 +
 +==== Service ====
 +
 +  sudo -e '/etc/systemd/system/wiki-up.service'
 +
 +<code>
 +[Service]
 +User=nginx
 +Group=nginx
 +Type=oneshot
 +ExecStart='/usr/bin/git' -C '/var/www/wiki' pull origin 'master'
 +ExecStartPost='/usr/bin/touch' '/var/www/wiki/conf/local.php'
 +ExecStartPost='/usr/bin/sync'
 +
 +# End</code>
 +
 +==== Timer ====
 +
 +  * Every day at ''00:30:00''
 +
 +  sudo -e '/etc/systemd/system/wiki-up.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'wiki-up.timer' --now && sudo systemctl start 'wiki-up' && sudo systemctl status 'wiki-up' -l
 +
 +<code>
 +[Unit]
 +Description=DokuWiki Git Updater
 +After=network-online.target
 +Wants=network-online.target
 +
 +[Timer]
 +OnCalendar=*-*-* 00:30:00
 +Persistent=true
 +
 +[Install]
 +WantedBy=timers.target
 +
 +# End</code>
 +
 +===== Maintenance =====
 +
 +  * https://www.dokuwiki.org/tips:maintenance
 +
 +==== Service ====
 +
 +  * :!: The commented ''ExecStart'' would remove page edits older than 90 days
 +
 +  sudo -e '/etc/systemd/system/wiki-m.service'
 +
 +<code>
 +[Service]
 +User=nginx
 +Group=nginx
 +Type=oneshot
 +WorkingDirectory=/var/www/wiki
 +ExecStart='/usr/bin/git' -C '/var/www/wiki' gc --aggressive --prune='all'
 +ExecStart='/usr/bin/git' -C '/var/www/wiki' fsck --full --strict
 +#ExecStart='/usr/bin/bash' -c "find '/var/www/wiki/data'/{attic,cache,locks,media_attic}/ -type 'f' -mtime +'90' -delete"
 +ExecStart='/usr/bin/bash' -c "find '/var/www/wiki/data'/{attic,cache,index,locks,media,media_attic,media_meta,meta,pages,tmp}/ -mindepth '1' -type 'd' -empty -delete"
 +ExecStart='/usr/bin/php' '/var/www/wiki/bin/indexer.php' --clear
 +ExecStartPost='/usr/bin/sync'
 +
 +# End</code>
 +
 +==== Timer ====
 +
 +  * ''01'' day of every month at ''01:00:00''
 +
 +  sudo -e '/etc/systemd/system/wiki-m.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'wiki-m.timer' --now
 +
 +<code>
 +[Unit]
 +Description=DokuWiki Maintenance
 +
 +[Timer]
 +OnCalendar=*-*-01 01:00:00
 +Persistent=true
 +
 +[Install]
 +WantedBy=timers.target
 +
 +# End</code>
 +
 +===== Backup =====
 +
 +  * This backs up an archive to the local disk and to a NAS
 +
 +==== Service ====
 +
 +  * :!: The extra ''ExecStart''s are additional backup locations that expect [[servers:vsftpd|vsftpd]]
 +
 +  mkdir -p ~/'backups' && sudo -e '/etc/systemd/system/wiki-fb.service' && sudo sed -i 's/CHANGEME/'$USER'/g' '/etc/systemd/system/wiki-fb.service'
 +
 +<code>
 +[Service]
 +Type=oneshot
 +WorkingDirectory=/var/www/wiki
 +ExecStart='/usr/bin/bash' -c '"/usr/bin/tar" -czf "/home/CHANGEME/backups/dokuwiki-files-auto-"$$(date +%%Y-%%m-%%d)".tar.gz" "data/pages" "data/meta" "data/media" "data/media_meta" "data/attic" "data/media_attic" "conf"'
 +#ExecStart='/usr/bin/bash' -c '"/usr/bin/tar" -czf "/srv/ftp/nas1/espionage724/Servers/Scheduled Backups/dokuwiki-files-auto-"$$(date +%%Y-%%m-%%d)".tar.gz" "data/pages" "data/meta" "data/media" "data/media_meta" "data/attic" "data/media_attic" "conf"'
 +#ExecStart='/usr/bin/bash' -c '"/usr/bin/tar" -czf "/srv/ftp/nas2/Servers/Scheduled Backups/dokuwiki-files-auto-"$$(date +%%Y-%%m-%%d)".tar.gz" "data/pages" "data/meta" "data/media" "data/media_meta" "data/attic" "data/media_attic" "conf"'
 +ExecStartPost='/usr/bin/sync'
 +
 +# End</code>
 +
 +==== Timer ====
 +
 +  * Every day at ''01:30:00''
 +
 +  sudo -e '/etc/systemd/system/wiki-fb.timer' && sudo systemctl daemon-reload && sudo systemctl enable 'wiki-fb.timer' --now && sudo systemctl start 'wiki-fb' && sudo systemctl status 'wiki-fb' -l
 +
 +<code>
 +[Unit]
 +Description=DokuWiki Files Backup
 +
 +[Timer]
 +OnCalendar=*-*-* 01:30:00
 +Persistent=true
 +
 +[Install]
 +WantedBy=timers.target
 +
 +# End</code>
 +
 +====== Backup ======
 +
 +  * Create backup archive on server and transfer to client computer
 +
 +===== Server =====
 +
 +==== Archive Folders ====
 +
 +****
 +
 +  cd '/var/www/wiki' && sudo tar -cvzf ~/'dokuwiki-files-manual-'$(date +%Y-%m-%d)'.tar.gz' 'data/pages' 'data/meta' 'data/media' 'data/media_meta' 'data/attic' 'data/media_attic' 'conf' && cd ~ && sync
 +
 +===== Client =====
 +
 +==== Transfer Archive to Client ====
 +
 +****
 +
 +  scp espionage724@192.168.1.152:~/'dokuwiki-files-'*'.tar.gz' ~/'Downloads' && sync
 +
 +====== Restore ======
 +
 +===== Client =====
 +
 +==== Transfer Archive to Server ====
 +
 +****
 +
 +  scp ~/'Downloads/dokuwiki-files-'*'.tar.gz' espionage724@192.168.1.152:~
 +
 +==== Remove Archive ====
 +
 +****
 +
 +  rm ~/'Downloads/dokuwiki-files-'*'.tar.gz' && sync
 +
 +===== Server =====
 +
 +==== Stop nginx ====
 +
 +****
 +
 +  sudo systemctl stop 'nginx'
 +
 +==== Remove Previous Folders ====
 +
 +****
 +
 +  ls ~/'dokuwiki-files-'*'.tar.gz' && sudo rm -Rf '/var/www/wiki/data/pages' '/var/www/wiki/data/meta' '/var/www/wiki/data/media' '/var/www/wiki/data/media_meta' '/var/www/wiki/data/attic' '/var/www/wiki/data/media_attic' '/var/www/wiki/conf'
 +
 +==== Restore Folders ====
 +
 +****
 +
 +  cd '/var/www/wiki' && sudo tar -xvzf ~/'dokuwiki-files-'*'.tar.gz' 'data/pages' 'data/meta' 'data/media' 'data/media_meta' 'data/attic' 'data/media_attic' 'conf' && sudo restorecon -F -I -R '/var/www/wiki' && sudo chown -R 'nginx':'nginx' '/var/www/wiki' && cd ~ && sync
 +
 +==== Start nginx ====
 +
 +****
 +
 +  sudo systemctl start 'nginx'
 +
 +==== Remove Archive ====
 +
 +  * Verify that DokuWiki works before running
 +
 +  rm -R ~/'dokuwiki-files-'*'.tar.gz' && sync
  
/var/www/wiki/data/pages/servers/nginx/dokuwiki.txt ยท Last modified: 2024/02/07 16:37 by Sean Rhone