This article describes mine (the author’s, also known as Gustav) attempts to configure an Ikiwiki lab environment on my laptop computer. The purpose of the experiment is to learn how Ikiwiki functions and how to effectively work with Ikiwiki and offline editing with git.
The components needed are
Table of Contents
What I have in mind is to access my lab wiki through http://localhost/~<name>/lab-wiki for web editing and ~/lab-wiki/wiki-slave for local offline editing.
It should be noted that what is described here probably is a perfectly unsafe usage of a web server. Make sure that the computer does not except requests from Internet.
I can not recall how this was done. Refer to Git’s official website
Refer to ikiwiki setup at ikiwiki’s official website for initial install and configuration and an article on Git for more details on setting up Ikiwiki together with Git.
Install packages referred to in the ansible configuration:
sudo aptitude install \
  ikiwiki \
  libauthen-passphrase-perl \
  highlight-common libhighlight-perl libimage-magick-perl \
  libmail-sendmail-perl libnet-dns-sec-perl \
  fcgiwrap spawn-fcgi \
  pandocI did my best to answer the questions provided in the initial installation and default configuration with the target of ending up with something like this:
url:         http://localhost/~<name>/lab-wiki
srcdir:      ~/lab-wiki/wiki
destdir:     ~/public_html/lab-wiki
repository:  ~/lab-wiki/wiki.git
settings:    ~/lab-wiki/wiki.setupHowever, not all of the above was configurable in the form, for example the configuration file location. I needed to move directories and files around and change the remaining configurations in ~/lab-wiki/wiki.setup and run
$ ikiwiki --setup ~/lab-wiki/wiki.setupI also created the extra Git repository wiki-slave for local edits:
$ cd ~/lab-wiki; git clone wiki.git wiki-slaveThe connectivity chart is now as follows
        Bare Git Repository
        ~/lab-wiki/wiki.git
            /         \
           /           \
          /             \
The Ikiwiki Repository  |
  ~/lab-wiki/wiki       |
          |             |
          |    Repository for Local Edits
          |     ~/lab-wiki/wiki-slave
          |             |
 The Ikiwiki Web Part   |
~/public_html/lab-wiki  |
                        |
           The Preview Ikiwiki Web Part
          ~/public_html/lab-wiki-previewFor installation, follow the instructions in Apache’s official documentation. I got Apache 2.4.6 installed.
I needed to activate the userdir module. Refer to Per-user web directories in Apache’s documentation. For Debian do the following
$ cd /etc/apache2/mods-enabled
$ ln -s ln -s ../mods-available/userdir.load
$ ln -s ln -s ../mods-available/userdir.confAlso CGI execution need to be activated. See Dynamic Content with CGI in Apache’s documentation. My /etc/apache2/mods-available/userdir.conf now looks as follows
<IfModule mod_userdir.c>
        UserDir public_html
        UserDir /home/*/public_html
        UserDir disabled root
        <Directory /home/*/public_html>
                AllowOverride FileInfo AuthConfig Limit Indexes
                Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
                <Limit GET POST OPTIONS>
                        Require all granted
                </Limit>
                <LimitExcept GET POST OPTIONS>
                        Require all denied
                </LimitExcept>
        </Directory>
        <Directory /home/*/public_html>
                Options +ExecCGI
                AddHandler cgi-script .cgi
        </Directory>
        <Directory /home/*/public_html/*>
                Options +ExecCGI
                AddHandler cgi-script .cgi
        </Directory>
</IfModule>A valid web server alternative is Nginx.
For installation and configuration follow Ikiwiki on Dot CGI. sudo aptitude install nginx. Note the alexjj comment that on Debian the package fcgiwrap automatically spwans the FastCGI program.
Now every thing works as work as expected. I can fetch the latest updated to wiki-slave, perform my updates, and whenever those are pushed to origin/master, the post-update hook makes sure that the web version is updated.
But what if I want to inspect and verify my local changes before pushing them to origin/master?
The subject is covered in the article on Git. I did what follows. Copy wiki.setup to wiki-preview.setup and edit those fields:
wikiname: lab-wiki-preview
srcdir: ~/lab-wiki/wiki-slave
destdir: ~/public_html/lab-wiki-preview
url: http://skolem/~<name>/lab-wiki-preview
cgiurl: http://skolem/~<name>/lab-wiki-preview/ikiwiki.cgi
cgi_wrapper: ~/public_html/lab-wiki-preview/ikiwiki.cgi
git_wrapper: ~/lab-wiki/wiki-slave/.git/hooks/post-commit
gitorigin_branch: ''
gitmaster_branch: masterThe idea is that the preview wiki works against wiki-slave, which is my simulated environment for local repository. What always works now is to, at any point, recompile/refresh the wiki:
ikiwiki -setup ~/lab-wiki/wiki-preview.setup -refreshAlso, committing on the local master branch should automatically update the lab-wiki-preview wiki.
Last modified | History | Source | Preferences