Introduction
PmWiki is an open-source wiki-based content management system built in PHP that was started in 2002, and is designed for collaborative creation and maintenance of websites. It allows quick editing as well as appearance changes using skins and templates. PmWiki also provides flexible password-based access control. This guide will explain the installation of PmWiki on a Debian 10 system with Nginx and PHP-FPM.
Prerequisites
- A Debian 10 system.
- Root user access to your server via SSH.
- Optional: A registered domain name and valid SSL certificate.
NOTE: All occurences of example.com
should be replaced with your IP address or with a domain name pointing to that IP.
Installation
Step 1: Update your system
Update your system packages:
apt update
apt upgrade -y
reboot
Step 2: Install Nginx and PHP
apt install -y nginx php7.3-fpm
Verify that PHP-FPM and the Nginx server are enabled and running:
systemctl enable --now nginx.service php7.3-fpm.service
Step 3: Download and unpack PmWiki
You can download the latest stable release of PmWiki with the following command:
wget http://www.pmwiki.org/pub/pmwiki/pmwiki-latest.tgz
Then unpack the tar archive:
tar -xzf pmwiki-latest.tgz
rm pmwiki-latest.tgz
Now move the pmwiki
directory to /var/www/html
:
mv pmwiki*/ /var/www/html/pmwiki
Step 4: Nginx configuration:
Create a new virtual host file pmwiki80.conf
under /etc/nginx/sites-available/
using a text editor of your choice, such as vim or nano, and paste the following configuration (replace example.com with the IP address of your server, or with your domain name if you’re using one):
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www/html/pmwiki;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
}
Note that this is a very basic Nginx configuration file, further configuration may be necessary depending on your specific requirements.
Save and close the file, then create a symbolic link pointing to it in the sites-enabled
directory:
ln -s /etc/nginx/sites-available/pmwiki80.conf /etc/nginx/sites-enabled/
You can now reload the Nginx service to apply those changes:
systemctl reload nginx.service
Step 5: PmWiki Installation
PmWiki needs to have write access in a wiki.d
directory:
cd /var/www/html/pmwiki
mkdir wiki.d
chown www-data:www-data wiki.d
Since there is no index.php file by default, we will create it:
echo "<?php include_once('pmwiki.php');" > /var/www/html/pmwiki/index.php
Using a web browser, nagivate to http://example.com/
. You should see the default PmWiki homepage if you followed the previous steps correctly. We’ll now customize the installation:
Make sure your current working directory is /var/www/html/pmwiki
and copy the sample configuration file for editing:
cd /var/www/html/pmwiki
cp docs/sample-config.php local/config.php
vim local/config.php
We’ll now make the following changes:
$WikiTitle = 'Pmwiki';
to$WikiTitle = 'YourWikiTitle';
#$ScriptUrl = 'http://example.com/pmwiki/pmwiki.php';
to$ScriptUrl = 'http://example.com/';
#$PubDirUrl = 'http://example.com/pmwiki/pub';
to$PubDirUrl = 'http://example.com/pub';
- Uncomment the following line:
#$PageLogoUrl = "$PubDirUrl/skins/pmwiki/pmwiki-32.gif";
and optionally enter the path to a custom logo of your own. # $DefaultPasswords['admin'] = pmcrypt('secret');
to$DefaultPasswords['admin'] = pmcrypt('StrongPasswordHere');
(This sets a site-wide default administrative password).- Optional: If you want to allow browser caching, uncomment the following line:
# $EnableIMSCaching = 1;
.
The other default parameters and values should be reviewed and modified according to your specific needs. Also, all URL schemas should be changed to https://
if you choose to use HTTPS.
Step 6: Nginx HTTPS config
Assuming you have a domain name and a corresponding SSL certificate, you can setup HTTPS:
First create a new configuration file with a text editor of your choice:
vim /etc/nginx/sites-available/pmwiki443.conf
Paste or type the following:
server {
listen 443;
listen [::]:443;
server_name 192.168.2.28;
root /var/www/html/pmwiki;
index index.php;
location ~ \.php$ {
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
}
ssl on;
ssl_certificate /path/to/your/cert.pem;
ssl_certificate_key /path/to/your/key.pem;
}
Enable it and reload the nginx service to apply these changes:
ln -s /etc/nginx/sites-available/pmwiki443.conf /etc/nginx/sites-enabled/
systemctl reload nginx.service
The HTTPS version of your site is now ready. If you wish to permanently redirect all traffic to the secure version, open /etc/nginx/sites-available/pmwiki80.conf
in a text editor and add the following line after the server_name
directive:
return 301 https://example.com$request_uri
Save and exit, then reload Nginx again:
systemctl reload nginx.service
Finally, re-edit /var/www/html/pmwiki/local/config.php
and change the URL schema in all applicable values from http
to https
.
You should now be able to access PmWiki at https://example.com/
.
Further Reading
You can read PmWiki’s documentation on your own instance once you complete the installation. Access it at https://example.com/?n=PmWiki.DocumentationIndex
.
PmWiki’s official website is located at www.pmwiki.org.