Table of Contents

Dokuwiki

Install

git clone https://github.com/splitbrain/dokuwiki.git
vim dokuwiki/inc/preload.php
 
sudo mkdir -p /var/lib/dokuwiki/default/conf
sudo cp -r dokuwiki/data /var/lib/dokuwiki/default
sudo cp -r dokuwiki/data /var/lib/dokuwiki/default
sudo cp dokuwiki/conf/users.auth.php.dist /var/lib/dokuwiki/default/conf/users.auth.php
sudo cp dokuwiki/conf/acl.auth.php.dist /var/lib/dokuwiki/default/conf/acl.auth.php
 
sudo rsync -avv --exclude=.git* --exclude=/data --exclude=install.php dokuwiki /var/www/
sudo chown -R apache:apache /var/lib/dokuwiki/default/data
sudo chown -R apache:apache /var/lib/dokuwiki/default/conf
 
sudo yum install php
sudo service httpd restart
preload.php
<?php
if(!defined('DOKU_FARMDIR')) define('DOKU_FARMDIR', '/var/lib/dokuwiki/' );
if(!defined('DOKU_CONF')) define('DOKU_CONF', DOKU_FARMDIR.'default/conf/');  ## disableing dynamic path selection
 
include(fullpath(dirname(__FILE__)).'/farm.php');
local.protected.php
<?php
$conf["savedir"]     = DOKU_FARMDIR."default/data";
$conf["useacl"]     = 1;
$conf["autopasswd"]     = 0;
$conf["superuser"]     = "alice,@admin";

rewrites

nginx/conf.d/dokuwiki.inc
  index  index.php index.html;
 
  client_max_body_size 1600m;
  fastcgi_read_timeout 180;
 
  location ~ ^/(data|conf|bin|inc)/ { return 444; }
  location ~ /\.ht { return 444; }
 
  location = /favicon.ico {
    log_not_found off;
    access_log off; }     
  location = /robots.txt {
    allow all;
    log_not_found off;
    access_log off; }
  location ~* \.(txt|log)$ {
    deny all; }
  location ~ \..*/.*\.php$ {
    return 403; }
  location ~ /\.ht {
    deny  all; }
  location / {  
    try_files $uri @rewrite; }       
 
  location @rewrite {
     rewrite ^/$ /doku.php last;
     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;
 
    ## styleimg is a template confhelper feature
     rewrite ^/_img/((.*)/)?(.*)        /lib/exe/fetch.php?mode=styleimg&media=$3&template=$2 last;
     rewrite ^/images/((.*)/)?(.*)      /lib/exe/fetch.php?mode=styleimg&media=$3&template=$2 last;
    ## force styleimage for template images ( out of root templates )
     rewrite ^/lib/tpl/((.*)/)?images/(.*)      /lib/exe/fetch.php?mode=styleimg&media=$3&template=$2 last;
 
     rewrite ^/(.*)?(.*)  /doku.php?id=$1&$2 last;
     break;       
 }

php-fpm

for reverse proxy setup see nginx

/etc/nginx/sites-available-notomorrow.de
client_max_body_size 50m;
fastcgi_read_timeout 180;
 
## needed because of the reverse proxy
## x_forwarded port ans stuff is set there
 
map $http_x_forwarded_port $external_port { 
    default $http_x_forwarded_port; 
    '' $server_port; 
}        
map $http_x_forwarded_proto $external_proto { 
    '' $https; 
    'http' ''; 
    'https' 'on'; 
}        
 
server { 
        listen [::]:80 default;
        server_name notomorrow.de *.notomorrow.de;
 
        error_log  /var/log/nginx/notomorrow.error.log;
        root   /srv/dokuwiki;
        index  index.php index.html;
 
        include        conf.d/status.inc;
        include        conf.d/public.inc;
        include        conf.d/dokuwiki.inc;
        include        conf.d/notomorrow.php.inc;
} 
/etc/nginx/conf.d/php.inc
location ~ \.php$ {
  fastcgi_split_path_info ^(.+\.php)(/.+)$;
  fastcgi_index  index.php;              
 
  #fastcgi_param  PATH_INFO          $fastcgi_path_info;
  #fastcgi_param  PATH_TRANSLATED    $document_root$fastcgi_path_info;
  #fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
 
  include fastcgi_params;                
 
  fastcgi_param  SERVER_PORT          $external_port;
  fastcgi_param  HTTPS                $external_proto; 
 
  fastcgi_intercept_errors on;           
  fastcgi_pass unix:/tmp/php-fpm-notomorrow.de.sock;
 
}    
/etc/php/fpm/pool.d/notomorrow.de.conf
[notomorrow.de]
 
user = notomorrow-de
group = notomorrow-de
listen.owner = notomorrow-de
listen.group = notomorrow-de
listen = '/tmp/php-fpm-notomorrow.de.sock'
pm = dynamic
pm.max_children = 5
pm.start_servers = 2
pm.min_spare_servers = 1
pm.max_spare_servers = 3