RationalWiki:Server documentation

System overview

 * DNS registration is handled exclusively by Tmtoulouse
 * The DNS nameserver is at Linode, as are the servers. Tmtoulouse, David Gerard and Tim Starling have access to the Linode dashboard.
 * David Gerard and Tim Starling have root access to the servers.
 * rationalwiki.org, ru.rationalwiki.org and staging.rationalwiki.org go to cache1, which is a caching proxy which forwards to apache3
 * Various minor domain names, and MX mail handling, go to apache1.

apache1
apache1 is the old server. It is handling some miscellaneous services that we haven't yet migrated off it.

cache1
cache1 runs Varnish. There's also Apache, which serves only to accept SSL connections and forward them to Varnish.

apache3
apache3 is the MediaWiki server. It is running Ubuntu 16.04.


 * Partitioned with the bulk of available space in /bulk
 * Apache 2.4
 * PHP 7 as apache module
 * php7.0-bcmath php7.0-curl php7.0-intl php7.0-mbstring php7.0-mcrypt php7.0-mysql php7.0-readline php7.0-tidy php7.0-xml php-zip
 * post_max_size = 60M
 * upload_max_filesize = 50M
 * composer
 * imagemagick
 * Images aliased to /bulk/images/$host
 * ElasticSearch 1.7.6 from deb (not apt) since that version is required by the version of elastica pulled in by CirrusSearch in the REL1_27 branch
 * DATA_DIR=/bulk/elasticsearch
 * openjdk-8-jre-headless (tried 9, didn't work)
 * memcached
 * texvc locally compiled
 * MariaDB
 * innodb_buffer_pool_size = 6G, as in apache1
 * innodb_log_file_size = 160M to prevent errors on import
 * datadir=/bulk/mysql
 * postfix
 * inet_interfaces = loopback-only
 * /etc/rsyslog.d/11-postfix-rwlocal.conf makes /var/log/mail.log, this was broken in the default rsyslog config
 * librsvg2-bin
 * big list of fonts, in rw-config

MediaWiki

 * MW 1.27 (LTS)
 * /srv/rw_common/config holds RationalWiki configuration, it is a git checkout of the rw-config GitHub repository
 * contains server config and Apache config
 * /srv/rw_common/core has the MediaWiki core
 * /srv/rw_common/public_html has the document root of both rationalwiki.org and ru.rationalwiki.org. It is a git checkout of the rw-docroot GitHub repository. But hardly anything is actually in here, most things are aliased to different directories.
 * /srv/rw_common/extensions has separate git checkouts for each MediaWiki extension
 * /srv/rw_common/skins has separate git checkouts for each MediaWiki skin
 * Some of the extension repos have local commits (e.g. bugfix cherry picks), so you can't trivially wipe them out and rebuild them. But you can run git pull --rebase.
 * Running config/bin/minor-update will run a git pull --rebase on core, extensions, skins and config. If there is a security update of MediaWiki, running this should be sufficient to update to it.
 * /srv/rw_staging has a complete and separate MediaWiki installation, mostly identical to /srv/rw_common. It is used for staging.rationalwiki.org. So you can test minor changes and branch merges by first pulling them to rw_staging, then testing staging.rationalwiki.org, then pulling to rw_common. Theoretically we could have git remotes pointing from one to the other, a couple of these already exist.
 * Job queue runs via cron: cron.d/mw-job-runner. Runs once per minute, with flock to prevent multiple execution.