Amusewiki for system administrators

This guide assumes you installed Amusewiki with the recommended Debian packages, which gives a standard and recommended setup, providing a more straightforward debugging if the need arises. If you have it installed from source, reading this should still be worth of it.

Location

File produced by Amusewiki are located in /var/lib/amusewiki, including the sites repositories under /var/lib/amusewiki/repo

You should backup this directory or mirror the repositories using git.

If you want to setup a static site, serving /var/lib/amusewiki/repo/site-code as document root will do (just add an index.html pointing to titles.html).

Services

The process table for the user running amusewiki should look like this:

# ps -u amusewiki -U amusewiki f
  PID TTY      STAT   TIME COMMAND
26702 ?        Ss     0:02 perl-fcgi-pm
26722 ?        S     18:16  \_ perl-fcgi
 3268 ?        S     16:49  \_ perl-fcgi
15818 ?        S     15:33  \_ perl-fcgi
15980 ?        S     15:19  \_ perl-fcgi
29350 ?        S      5:43  \_ perl-fcgi
26698 ?        Ss     1:18 /usr/bin/perl /usr/bin/amusewiki-jobber

The first process (in this example with PID 26702) is the FCGI process manager, while its children are the workers for the application itself. The web pages are served via Nginx as reverse proxy.

The last process (in this example with PID 26698) is the background daemon in charge for the publishing, indexing, PDF compilation. When active, you will see it spawning forks, while when not under load you should see just one of it.

These two services can operate independently and are controlled by two systemd unit: amusewiki-web and amusewiki-jobber so you can use standard systemd commands like systemctl status etc. here.

There is also a 3rd process, amusewiki-cgit, which is in charge to run cgit on localhost (which Amusewiki serves when you look at the history of a page). You are not supposed to have much to do with this service. When Amusewiki is installed from source, this service may or may be not be present, it could be Nginx directly serving that.

Logs

Application

By default, the application logs are left in /var/lib/amusewiki/log/amw-2019-10-28.log with the timestamp on the filename (so each day is a new log). Errors are instead mailed directly to root@localhost.

The configuration file for the logging is /var/lib/amusewiki/log4perl.conf and explain what to do if you want to change that.

This is how a log4perl.local.conf could look like:

log4perl.logger=INFO,Log
log4perl.logger.main=INFO
# debug individual modules
log4perl.logger.AmuseWikiFarm.Controller.Edit=DEBUG
log4perl.logger.AmuseWikiFarm.Schema.Result.Revision=DEBUG
# define the "Log" logger
log4perl.appender.Log=Log::Dispatch::File::Stamped
log4perl.appender.Log.filename=log/amw.log
log4perl.appender.Log.stamp_fmt=%Y-%m-%d
log4perl.appender.Log.mode=append
log4perl.appender.Log.layout=Log::Log4perl::Layout::PatternLayout
log4perl.appender.Log.layout.ConversionPattern=%d %p - %c - %F:%L - %m%n

Further reading on this topic at https://metacpan.org/pod/Log::Log4perl, but this is more a developer tool, so the default settings should be good enough.

Nginx

To get a grip on the load which the server is taking, you should look at the nginx logs located at /var/log/nginx/*.log. Each virtual host should have its own log.

For Amusewiki, Nginx is controlled by 2 files:

/etc/nginx/amusewikidebian_include

/etc/nginx/sites-enabled/amusewikidebian

They are usually autogenerated by the application, you are usually prompted to run the needed commands as root when e.g. installing new sites.

The same happens when calling amusewiki generate-nginx-conf

The master configuration file /etc/nginx/nginx.conf is your sole responsibility so Amusewiki never touches it. If you need to adjust logging format or global settings, this is usually the place.

Database

Amusewiki can work with MySQL, PostgreSQL and SQLite (not recommended for production). DB installation is managed by the Debian package and should work out of the box. To find out what you are using the configuration file is /var/lib/amusewiki/dbic.yaml which contains the DSN and driver information.

Utilities

If you need to run some Amusewiki command, you should look at the amusewiki executable.

Usage: amusewiki action [ argument1, argument2]

Run the amusewiki scripts as user amusewiki in the correct directory.

Available commands:
amusewiki bootstrap-archive
amusewiki check-compiler
amusewiki clone-site
amusewiki create-doc-site
amusewiki export-titles
amusewiki generate-meta-config
amusewiki generate-nginx-conf
amusewiki import-redirections
amusewiki jobber
amusewiki letsencrypt
amusewiki populate-monthly
amusewiki populate-webfonts
amusewiki reset-password
amusewiki set-site-variable
amusewiki upgrade-db
amusewiki upgrade-lexicon

amusewiki shell

The shell subcommand will start a shell with the amusewiki user

See man amusewiki-<action> for usage of each command
or run amusewiki <action> --help

Other useful commands:

amusewiki [ start | stop | restart ]

start and stop actions simply call systemctl, while the restart action
performs a restart without downtime (so being a bit more useful than
just "systemctl restart amusewiki-web amusewiki-jobber amusewiki-cgit"

Please note that lately the amusewiki restart command fails to kill a process it spawns, so it needs to be killed manually (you are provided the target PID).