User Tools

Site Tools


install_dokuwiki

This is an old revision of the document!


Install DokuWiki

A FreeBSD 11.2-RELEASE was installed on a PCEngines box to host a DokuWiki server.

Install and configure DokuWiki

Install DokuWiki and Apache.

sudo pkg install dokuwiki
sudo pkg install apache24

Edit the config file of system environment (for booting next time) for Apache (2.4): add in /etc/rc.conf

apache24_enable="YES"

comment out/edit /usr/local/etc/apache24/httpd.conf

#DocumentRoot "/usr/local/www/apache24/data"
DocumentRoot "/usr/local/www/dokuwiki"

<Directory "/usr/local/www/dokuwiki">
	Options Indexes FollowSymLinks
	DirectoryIndex index.php
	AllowOverride None
	Require all granted
</Directory>

Install PHP module

sudo pkg install mod_php71

check if the LoadModule line was added

cat /usr/local/etc/apache24/httpd.conf | grep php

should output

LoadModule php7_module        libexec/apache24/libphp7.so

add in /usr/local/etc/apache24/httpd.conf

<IfModule php7_module>
        DirectoryIndex index.php index.html
        AddType application/x-httpd-php .php
        AddType application/x-httpd-php-source .phps
</IfModule>

change the owner of conf and data in /usr/local/www/dokuwiki/ to the web server.

sudo chown -R www:www /usr/local/www/dokuwiki/conf
sudo chown -R www:www /usr/local/www/dokuwiki/data

restart FreeBSD

For a initial config, open wiki install.php in browser

http://192.168.178.65/install.php

enter data, for example

Wiki Name: nplab
Superuser: admin
E-Mail: timo.voelker@fh-muenster.de
Initial ACL policy: Closed Wiki
license: CC Attribution-Share Alike 4.0 International

after that /usr/local/www/dokuwiki/conf/local.php contains the configuration

It is recommended to separate config and binaries from DokuWiki website files. Create a directory outside of the installation path

sudo mkdir -p /var/dokuwiki/www

move data and conf into /var/dokuwiki/www. Move bin directory into /var/dokuwiki

sudo mv /usr/local/www/dokuwiki/data /var/dokuwiki/www/
sudo mv /usr/local/www/dokuwiki/conf /var/dokuwiki/www/
sudo mv /usr/local/www/dokuwiki/bin /var/dokuwiki/

It is important that the www user (the user that runs apache) has access to these files –> set owner of /var/dokuwiki/www to www

sudo chown -R www:www /var/dokuwiki/www

DokuWiki needs to know where to find these files. Create inc/preload.php

sudo vi /usr/local/www/dokuwiki/inc/preload.php

and add

<?php
// DO NOT use a closing php tag. This causes a problem with the feeds,
// among other things. For more information on this issue, please see:w
// http://www.dokuwiki.org/devel:coding_style#php_closing_tags 
define('DOKU_CONF','/var/dokuwiki/www/conf/');

add in /var/dokuwiki/www/conf/local.php

$conf['savedir'] = '/var/dokuwiki/www/data';

Use https

The server needs a certificate to provide https access. If a certificate in a .p12 file format exist, convert it into a .pem file.

openssl pkcs12 -in certificate.p12 -out certificate.pem -nodes

Copy the .pem file in a .crt and .key file

cp certificate.pem certificate.crt
cp certificate.pem certificate.key

The .crt file should contain the public certificate only. Edit the file and remove everything except the following Block.

-----BEGIN CERTIFICATE-----
...
-----END CERTIFICATE-----

The .key file should contain the private key only. Edit the file and remove everything except the following Block.

-----BEGIN PRIVATE KEY-----
...
-----END PRIVATE KEY-----

Copy both files to /usr/local/etc/apache24/ssl/

mkdir /usr/local/etc/apache24/ssl
cp certificate.crt /usr/local/etc/apache24/ssl/
cp certificate.key /usr/local/etc/apache24/ssl/

Configure apache for SSL access. In /usr/local/etc/apache24/httpd.conf

Uncomment the line

LoadModule ssl_module libexec/apache24/mod_ssl.so

Add

<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>

and add

ServerName nplab.fh-muenster.de:443
SSLEngine on
SSLCertificateFile "/usr/local/etc/apache24/ssl/certificate.crt"
SSLCertificateKeyFile "/usr/local/etc/apache24/ssl/certificate.key"

To apply these changes, restart Apache serivce

sudo service apache24 restart

On error, check /var/log/httpd-error.log for log messages.

Backup

For a automatic backup, the DokuWiki files are compressed in a tar.gz archive and copied to another server (bsd19.fh-muenster.de (console)). This is done by a separate user named wikibackup.

Create user wikibackup on source and destination system (nplab.fh-muenster.de and bsd19.fh-muenster.de).

adduser
  • Username: wikibackup
  • Do not add the user in any group
  • Shell: nologin
  • Use password-based authentication?: no

wikibackup@nplab.fh-muenster.de needs to ssh to bsd19.fh-muenster.de without entering a password. On nplab.fh-muenster.de, switch to user wikibackup and create SSH keys.

sudo su - wikibackup
ssh-keygen

Copy the content of ~/.ssh.id_rsa.pub into ~/.ssh/authorized_keys on wikibackup@bsd19.fh-muenster.de. After that, on nplab.fh-muenster.de as wikibackup

ssh bsd19.fh-muenster.de

should work without entering a password.

Next step is to create the script that performs the backup and copies the backup file to bsd19.fh-muenster.de. The following script (~/backup.sh) is used.

#!/bin/sh

echo $(date)

dayOfYear=$(date +%j)
file=~/wiki-$dayOfYear.tar.gz

echo backup wiki to $file
tar -czf $file -C /var/dokuwiki/ --exclude www/data/cache --exclude www/data/index --exclude www/data/locks --exclude www/data/tmp --exclude www/data/dont-panic-if\* www

echo copy to bsd19 and delete local file
scp $file bsd19.fh-muenster.de:~/
rm $file

echo done

To start the script daily, a cron job was created. On nplab.fh-muenster.de as wikibackup, run

crontab -e

and add

SHELL=/bin/sh
PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin
# Order of crontab fields
# minute	hour	mday	month	wday	command
  0             22      *       *       *       /bin/sh /usr/home/wikibackup/backup.sh > /usr/home/wikibackup/backup.log 2>&1
install_dokuwiki.1548849480.txt.gz · Last modified: by msvoelker