RationalWiki:Server documentation

From RationalWiki
Jump to navigation Jump to search

System overview[edit]

  • 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[edit]

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

cache1[edit]

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

apache3[edit]

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[edit]

  • 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.