Guild Server - Consensus

Guild Server

Specification and Goals

The guild's web server is run on a virtual private server hosted by Slicehost. Allowances provided by the hosting plan include:

  • 256MB of RAM
  • 10GB of storage
  • 100GB per month of bandwidth

In the spirit of the founding principles of the guild, the goal of the Consensus server is to make it as easy as possible for anyone to create useful WoW-related web services and applications while ensuring stability for the users of the website. Novices will also have access to the guidance of experienced developers when implementing their projects.

Structure

All users on the server belong to the consensus group. The main directory that contains everything Consensus-related is in /var/consensus. This directory is structured as follows:

  • servers.py is a script in the root directory used to start and stop various minor server processes. The more major server processes are controlled by scripts in the /etc/init.d directory.
  • www is a directory that contains all static files and PHP content. In particular:
  • www/w contains the MediaWiki wiki software,
  • www/forum contains the Vanilla forum software,
  • www/robots.txt tells search engines what not to spider based on the robots.txt standard.
  • wsgi-scripts contains all Python scripts for WSGI-based web applications.

Undoing Mistakes

In order for the server to be an environment that promotes learning and experimentation, it needs to be resilient against errors. To that end, we've taken the following steps:

  • We've enrolled in Slicehost's backup plan, so that any really major mistakes can be rolled back to the previous day, the previous week, or another point in time.
  • We're also using an undoable version of Unix's rm command: if you accidentally delete something you didn't mean to, just use rm -u to undo it. All the files you've deleted in the past 48 hours will be kept in ~/.Hades, so poke around there if you need a particular file.
  • Major directories are under revision control by Mercurial:
  • /etc
  • /var/consensus
If you ever edit anything in these directories, just run hg commit to checkpoint your changes, with a log message describing your alteration. Before committing, you can also use hg add to add new files and hg rm to remove them. Check out the Mercurial documentation for more information.