This is an old revision of the document!
Table of Contents
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
