In this tutorial, I’m going to work you through all the steps needed to have latest version of DokuWiki up and running on CentOS 7 base system.

DokuWiki is a simple to use and highly versatile Open Source wiki software that doesn’t require a database. The fact that DokuWiki doesn’t use database makes it easier to do maintenance and backups

DokuWiki also has built in access controls and external authentication connectors which makes it useful in the enterprise context. Also, the large number of plugins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki.

Install httpd web server and php packages

To install Apache web server on CentOS 7, use the following command:

sudo yum install httpd* -y

If using firewalld, make sure http port is open on the firewall, also add https is using ssl encryption.

sudo firewall-cmd --permanent --zone=public --add-service={http,https}
sudo firewall-cmd --reload

Now install php 7 and php-gd

sudo rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
sudo yum clean all
sudo yum makecache fast
sudo yum install -y mod_php71w php71w-cli php71w-common php71w-gd php71w-mbstring ph p71w-mcrypt php71w-mysqlnd php71w-xml

Check php version:

# php -v

PHP 7.1.4 (cli) (built: Apr 15 2017 08:07:03) ( NTS )
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

By default, apache rewrite rule is enabled by default on CentOS 7, if you need to redo, just type:

echo LoadModule rewrite_module modules/mod_rewrite.so > /etc/httpd/conf.d/addModule-mod_rewrite.conf

Now download and install DokuWiki

wget https://download.dokuwiki.org/out/dokuwiki-c5525093cf2c4f47e2e5d2439fe13964.tgz -O dokuwiki.tgz
sudo tar zxvf dokuwiki.tgz -C /var/www/html/ --strip-components=1

Above command will download and extract dokuwiki archive to /var/www/html. Replace the path with a valid one if you need to.

Configure httpd and DokuWiki

Next thing to do is secure DokuWiki using .htaccess.

cd /var/www/html
cp .htaccess.dist .htaccess

I’m using the default settings which look similar to below:

# cat .htaccess

<Files ~ "^([\._]ht|README$|VERSION$|COPYING$)">
    <IfModule mod_authz_host>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_host>
        Order allow,deny
        Deny from all
    </IfModule>
</Files>

## Don't allow access to git directories
<IfModule alias_module>
    RedirectMatch 404 /\.git
</IfModule>

Now tell Apache to restrict access to /var/www/html using .htaccess file defined

# vim /etc/httpd/conf/httpd.conf

Modify as below:

<Directory />
    AllowOverride none
    Require all denied
</Directory>

DocumentRoot "/var/www/html"

<Directory "/var/www">
    AllowOverride None
    Require all granted
</Directory>


# Further restrict access to the default document root:
<Directory "/var/www/html">
    Options Indexes FollowSymLinks MultiViews
    AllowOverride all
    Order allow,deny
    allow from all
</Directory>

Set permissions for DokuWiki DocumentRoot:

sudo chown -R apache:apache /var/www/html

If you have selinux in enforcing mode, run the following commands

yum install policycoreutils-python
chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/conf/
chcon -Rv --type=httpd_sys_rw_content_t /var/www/html/data/
semanage fcontext -a -t httpd_sys_rw_content_t /var/www/html/data/
semanage fcontext -a -t httpd_sys_rw_content_t /var/www/html/conf
restorecon -v /var/www/html/conf/
restorecon -v /var/www/html/data/
setsebool -P httpd_can_network_connect on

Start httpd daemon

systemctl start httpd && systemctl enable httpd

You’re done with the installation section, the next thing is to configure DokuWiki.

Open your browser and go to:

http://dokuwiki-server-hostname/install.php

Answer initial questions accordingly, set superuser, enable acl and login to DokuWiki dashboard.

That’s all. You can then add skins and plugins available on admin dashboard.