diff options
Diffstat (limited to 'create-a-wiki')
| -rw-r--r-- | create-a-wiki/additional.mdwn | 64 | ||||
| -rw-r--r-- | create-a-wiki/create-a-wiki.mdwn | 187 | ||||
| -rw-r--r-- | create-a-wiki/lab-wiki.mdwn | 28 | 
3 files changed, 279 insertions, 0 deletions
diff --git a/create-a-wiki/additional.mdwn b/create-a-wiki/additional.mdwn new file mode 100644 index 0000000..3c912a8 --- /dev/null +++ b/create-a-wiki/additional.mdwn @@ -0,0 +1,64 @@ +--- +title: Additional considerations for a Fripost wiki preview +... + +Here follows a few additional configuration considerations. These are +not mandatory for a naked preview setup. To follow instructions, +however, a setup according +to [Create a Fripost wiki preview](/create-a-wiki-preview) is +presumed. + +[[!toc]] + +Absolute paths +============== + +Many links on the Fripost wiki are absolute. That means that you +sometimes will not be able to follow homepage page and wiki page links +between your local preview wiki. For testing purposes, that can +sometimes be necessary. The best strategy is to edit your */etc/hosts* +table and make *fripost.org* and *wiki.fripost.org* point to +*localhost*. + +Of course your web server need to be configured to serve those +pages: + +``` +cat /etc/nginx/sites-available/localhost.fripost.conf \ + | sed 's/\.localhost/\.org/g' \ + | sudo tee /etc/nginx/sites-available/org.fripost.conf +sudo ln -s -r -t /etc/nginx/sites-enabled/ /etc/nginx/sites-available/org.fripost.conf +sudo nginx -t && sudo systemctl restart nginx.service +``` + +Modify the */etc/hosts* file: + +``` +sed -n '/fripost.localhost/ {s/\.localhost/.org/g; p}' < /etc/hosts | sudo tee /tmp/hosts +grep -q wiki.fripost.org /etc/hosts \ +  || sudo sed -i '/::1.*fripost.localhost/ r /tmp/hosts' /etc/hosts +``` + +You might experience strange effects from that the web-browser has +cached DNS information. Search Internet for how to flush your +browser's DNS cache. + + +Public www locations (userdir) +============================== + +For to be able to access `http://localhost/~user` the "userdir" +functionality is needed. For Nginx, put the following in e.g. +*/etc/nginx/sites-available/localhost*: + +``` +server { +  location ~ ^/~(.+?)(/.*)?$ { +    alias /home/$1/public_html$2; +    index index.html index.htm +    autoindex on; +  } +} +``` + +This is of limited use in the context of Fripost's wiki. diff --git a/create-a-wiki/create-a-wiki.mdwn b/create-a-wiki/create-a-wiki.mdwn new file mode 100644 index 0000000..b6736f1 --- /dev/null +++ b/create-a-wiki/create-a-wiki.mdwn @@ -0,0 +1,187 @@ +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 + +  * Ikiwiki +  * Apache2 or Nginx web server +  * Git + +**Table of Contents** +[[!toc]] + +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. + + +Install and configure Git +========================= + +I can not recall how this was done. Refer to +[Git's official website](https://git-scm.com/) + + +Install and configure Ikiwiki +============================= + +Refer to [ikiwiki setup](https://ikiwiki.info/setup/) at +[ikiwiki's official website](https://ikiwiki.info) for initial +install and configuration and +[an article on Git](https://ikiwiki.info/rcs/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 \ +      pandoc + +I 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.setup + +However, 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.setup + +I also created the extra Git repository `wiki-slave` for local edits: + +    $ cd ~/lab-wiki; git clone wiki.git wiki-slave + +The 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-preview + + +Install and configure Apache 2 +============================== + +For installation, follow the instructions in +[Apache's official documentation](https://httpd.apache.org/docs). I +got Apache 2.4.6 installed. + +I needed to activate the userdir module. Refer to +[Per-user web directories](https://httpd.apache.org/docs/2.4/howto/public_html.html) +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.conf + +Also CGI execution need to be activated. See +[Dynamic Content with CGI](https://httpd.apache.org/docs/2.4/howto/cgi.html) +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> + + +Install and conifgure Nginx +=========================== + +A valid web server alternative +is +[Nginx](http://nginx.org/en/docs/). + +For installation and configuration +follow [Ikiwiki on Dot CGI](https://ikiwiki.info/tips/dot_cgi/). `sudo +aptitude install nginx`. Note the alexjj comment that on +Debian the package *fcgiwrap* automatically spwans the FastCGI +program. + + + +Get preview of local modifications +================================== + +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](https://ikiwiki.info/rcs/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: master + +The 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 -refresh + +Also, committing on the local `master` branch _should_ automatically +update the `lab-wiki-preview` wiki. diff --git a/create-a-wiki/lab-wiki.mdwn b/create-a-wiki/lab-wiki.mdwn new file mode 100644 index 0000000..e3f27f8 --- /dev/null +++ b/create-a-wiki/lab-wiki.mdwn @@ -0,0 +1,28 @@ +--- +title: Create a fresh laboratory Ikiwiki install +... + +*DRAFT! The article [Create a wiki](create-a-wiki) describes an +outdated configuration of a fresh Ikiwiki install for laboratory +purposes. This page is a stab on updating that configuration and +guide. The update is not finished yet.* + +This guide has the history in attempts of the authors to understand +how Ikiwiki is setup in order to write +the [Create a Fripost wiki preview](/create-a-wiki-preview). The case +is useful for those that want to create an fresh Ikiwiki install for +other purposes, taking Fripost's as a starting point or for those that +need a safe sandbox lab environment to really hack away. + +A setup according to [creation of a preview](/create-a-wiki-preview) +presumed for preparation of all components. + +What we have in mind is to access the wiki, call it Lab wiki, through +*http://wiki.lab.localhost` 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. + +*STOP*  | 
