====== Dokuwiki Install and Upgrade ====== DokuWiki is a simple to use and highly versatile Open Source [[wp>Wiki]] software that doesn't require a database. It is loved by users for its clean and readable syntax. The ease of maintenance, backup and integration makes it an administrator's favorite. Built in access controls and authentication connectors make DokuWiki especially useful in the enterprise context and the large number of plug-ins contributed by its vibrant community allow for a broad range of use cases beyond a traditional wiki. ===== Directory Structure ===== The Dokuwiki installation is stored in a dedicated directory typically under the /opt directory. /opt | +-- dokuwiki | +-- current -> dokuwiki-nnnn-nn-nn | +-- data | +-- dokuwiki-pppp-pp-pp | +-- dokuwiki-nnnn-nn-nn | +-- template ===== Installation ===== Before installing dokuwiki, you'll need a [[webserver|web server and the PHP application engine]] to serve the application. === Configure The Web Server === Once you have a NGINX and PHP installed, you'll need to configure it to serve the application: cat > /tmp/dokuwiki << EOF server { listen 127.0.0.1:8080; root /opt/dokuwiki/current; access_log off; error_page 404 /lib/tpl/dokuwiki/404.html; location /lib/tpl/dokuwiki/404.html { internal; } location / { index doku.php; 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; } location ^~ /(bin|conf|data|inc/ { deny all; } location ~ /\.ht { deny all; } location ~ \.php\$ { include fastcgi_params; fastcgi_pass unix:/run/php/php7.0-fpm.sock fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; fastcgi_param PATH_INFO \$uri; # necessary for URL rewrite fastcgi_index doku.php; } } EOF sudo mv /tmp/dokuwiki /etc/nginx/sites-available/ sudo ln -s /etc/nginx/sites-available/dokuwiki /etc/nginx/sites-enabled/dokuwiki sudo service nginx reload === Install The Software === sudo apt-get install php-xml cd /tmp wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-nnnn-nn-nn.tgz tar xzvf dokuwiki-nnnn-nn-nn.tgz sudo mkdir -p /opt/dokuwiki sudo mv dokuwiki-nnnn-nn-nn /opt/dokuwiki/ rm /tmp/dokuwiki-nnnn-nn-nn.tgz sudo ln -s /opt/dokuwiki/dokuwiki-nnnn-nn-nn /opt/dokuwiki/current sudo mv /opt/dokuwiki/current/data /opt/dokuwiki/data sudo mv /opt/dokuwiki/current/lib/tpl/dokuwiki /opt/dokuwiki/template sudo chown -R www-data:www-data /opt/dokuwiki/dokuwiki-nnnn-nn-nn sudo chmod -R u-w,g-w,o-w /opt/dokuwiki/dokuwiki-nnnn-nn-nn sudo chown -R www-data:www-data /opt/dokuwiki/data sudo chmod -R u+rw,g+rw /opt/dokuwiki/data sudo chown -R www-data:www-data /opt/dokuwiki/template sudo chmod -R u-w,g-w,o-w /opt/dokuwiki/template sudo ln -s /opt/dokuwiki/template /opt/dokuwiki/current/lib/tpl/dokuwiki After the core software is installed, remove and add the plug-ins using the instruction below. === Complete Dokuwiki Configuration Using Dokuwiki's Editor === When setting up a wiki server that will use the built-in editing, I run through Dokuwiki's installer. You'll need to give the web server user write access long enough to complete the configuration: sudo chmod -R u+w /opt/dokuwiki/current/conf sudo chmod -R u+w /opt/dokuwiki/data sudo ln -s /opt/dokuwiki/data /opt/dokuwiki/current/data Open web browser to install Dokuwiki. ''http://url.domain.tld/install.php'' Complete the intial configuration, then restrict the write access of the web server: sudo chmod -R u-w /opt/dokuwiki/current/conf sudo /bin/rm /opt/dokuwiki/current/data === Complete Dokuwiki Configuration Using External Editor === When setting up a wiki server that will use a separate system to edit/maintain the pages and then have the resulting text files copied over, I configure the server to have a locked down configuration: cat > /tmp/acl.auth.php << EOF # acl.auth.php # # Don't modify the lines above * @ALL 1 * @user 8 EOF sudo mv /tmp/acl.auth.php /opt/dokuwiki/current/conf/acl.auth.php cat > /tmp/users.auth.php << EOF # users.auth.php # # Don't modify the lines above user:!:User:user@localhost:user EOF sudo mv /tmp/users.auth.php /opt/dokuwiki/current/conf/users.auth.php cat > /tmp/local.php << EOF EOF sudo mv /tmp/local.php /opt/dokuwiki/current/conf/local.php sudo touch /opt/dokuwiki/current/conf/plugins.local.php ===== ===== At this point, you should have a running configured Dokuwiki site ready for content to be added. ===== Upgrading ===== These are the steps I used to upgrade the installation in case I decide to do it again... ''pppp-pp-pp -> previous \\ nnnn-nn-nn -> next'' === Install The Software === cd /tmp wget http://download.dokuwiki.org/src/dokuwiki/dokuwiki-nnnn-nn-nn.tgz tar xzvf dokuwiki-nnnn-nn-nn.tgz sudo mv dokuwiki-nnnn-nn-nn /opt/dokuwiki/ rm /tmp/dokuwiki-nnnn-nn-nn.tgz sudo chown -R www-data:www-data /opt/dokuwiki/dokuwiki-nnnn-nn-nn/ sudo chmod -R u-w,g-w,o-w /opt/dokuwiki/dokuwiki-nnnn-nn-nn/ After the core software is installed, remove and add the plug-ins using the instruction below. === Create a link to the "upgrade" version === sudo ln -s /opt/dokuwiki/dokuwiki-nnnn-nn-nn /opt/dokuwiki/upgrade === Copy Configuration === sudo /bin/rm -R /opt/dokuwiki/upgrade/data sudo /bin/rm -R /opt/dokuwiki/upgrade/lib/tpl/dokuwiki sudo ln -s /opt/dokuwiki/template /opt/dokuwiki/upgrade/lib/tpl/dokuwiki sudo /bin/cp /opt/dokuwiki/current/conf/acl.auth.php /opt/dokuwiki/upgrade/conf/ sudo /bin/cp /opt/dokuwiki/current/conf/users.auth.php /opt/dokuwiki/upgrade/conf/ sudo /bin/cp /opt/dokuwiki/current/conf/local.php /opt/dokuwiki/upgrade/conf/ sudo touch /opt/dokuwiki/upgrade/conf/plugins.local.php === Move the "current" link to the new installation === sudo /bin/rm /opt/dokuwiki/current sudo ln -s /opt/dokuwiki/dokuwiki-nnnn-nn-nn /opt/dokuwiki/current === Remove the "upgrade" link === sudo /bin/rm /opt/dokuwiki/upgrade ===== ===== After the applications runs for a while (depending on how active the installation is), execute: sudo /bin/rm -Rf /opt/dokuwiki/dokuwiki-pppp-pp-pp ===== Plug-Ins ===== === Create a link to the "new" version === sudo ln -s /opt/dokuwiki/dokuwiki-nnnn-nn-nn /opt/dokuwiki/new === Remove These Plug-Ins === sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/authad sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/authldap sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/authmysql sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/authpgsql sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/popularity sudo /bin/rm -Rf /opt/dokuwiki/new/lib/plugins/plugin === Install These Plug-Ins === - Install [[https://www.dokuwiki.org/plugin:wrap|wrap]] Plugin wget https://github.com/selfthinker/dokuwiki_plugin_wrap/archive/master.zip unzip master.zip sudo mkdir -p /opt/dokuwiki/new/lib/plugins/wrap sudo cp -R /tmp/dokuwiki_plugin_wrap-master/* /opt/dokuwiki/new/lib/plugins/wrap/ rm -R /tmp/dokuwiki_plugin_wrap-master rm master.zip - Install [[https://www.dokuwiki.org/plugin:nspages|nspages]] Plugin wget https://github.com/gturri/nspages/tarball/master tar zxvf master sudo mkdir /opt/dokuwiki/new/lib/plugins/nspages sudo cp -R /tmp/gturri-nspages-*/* /opt/dokuwiki/new/lib/plugins/nspages rm -R /tmp/gturri-nspages-* rm master - Install [[https://www.dokuwiki.org/plugin:columns|columns]] Plugin wget https://github.com/dwp-forge/columns/zipball/master unzip master sudo mkdir -p /opt/dokuwiki/new/lib/plugins/columns sudo cp -R /tmp/dwp-forge-columns-*/* /opt/dokuwiki/new/lib/plugins/columns/ rm -R /tmp/dwp-forge-columns-* rm master - Install [[https://www.dokuwiki.org/plugin:gallery|gallery]] Plugin wget https://github.com/splitbrain/dokuwiki-plugin-gallery/zipball/master unzip master sudo mkdir -p /opt/dokuwiki/new/lib/plugins/gallery sudo cp -R /tmp/splitbrain-dokuwiki-plugin-gallery-*/* /opt/dokuwiki/new/lib/plugins/gallery/ rm -R /tmp/splitbrain-dokuwiki-plugin-gallery-* rm master === Update Permissions for the Plug-In Directory === sudo chown -R www-data:www-data /opt/dokuwiki/new/lib/plugins sudo chmod -R u-w,g-w,o-w /opt/dokuwiki/new/lib/plugins === Remove the "new" link === sudo /bin/rm /opt/dokuwiki/new