File Layout

This document describes how files are laid out in the Silver Lining code base, and on production servers (and how the two relate).

General Patterns

Anything that is a “script” (a file meant to be executed) generally has a - in the name somewhere, to help indicate that it is not a module (since you cannot import names with dashes).

The Silver Lining Code Base

Here are some notable features:

  • The silverlining package is basically for managing the process. It is not installed on the production servers, nor is it generally importable by applications (nor is there anything worth importing).
  • The silversupport is uploaded to the production server, and also used locally. Applications may find it useful to import some routines from this library. There’s also simply pieces here that both silverlining and server management scripts need to use, and this is the one shared codebase for that.
  • silversupport gets uploaded to /usr/local/share/silverlining/lib (this directory is added to sys.path to make it importable).
  • There are a bunch of scripts that are run on the server. Lots of what Silver Lining does is just ssh server "command", with the actual code on the server. All Silver Linings scripts are uploaded from silverlining/mgr-scripts/ to /usr/local/share/silverlining/mgr-scripts/. These are only run on the server, not locally. Each script also adds /usr/local/share/silverlining/lib to its path at the top of the script.
  • Files in silverlining/server-files/ are rsync’d to the server’s root. That is, the file layout under that directory matches the server layout exactly. silversupport and mgr-scripts are rsync’d separately.
  • Some of the files used for setting up a server are in silverlining/server-sync-scripts/. This includes the very important update-from-server.sh script, which does most of the configuration of servers. If there’s anything that needs to be done (or checked, or fixed) every time a server is created or updated, that’s probably the place to look. (Per-service tasks, like installing a database configuration file, go in the service code.)

Services

Services are modules in silversupport.services.*, named after the service. Resource files for services go in that package as well (for instance, the pg_hba.conf that the postgis service uses is in silversupport/services/postgis-pg_hba.conf).

Server Files

The files created by silver setup-node are generally put in /usr/local/share/silverlining/.

Configuration files get put wherever they belong, e.g., /etc/apache2/sites-enabled/wsgi_runner.

Log files go in /var/log/silverlining/.

Individual applications have log files in /var/log/silverlining/apps/APP_NAME, specifically errors.log is anything written to stderr, stdout, or environ['wsgi.errors']. These items are also grouped by request (all content written is buffered, written out in one chunk with a header/footer to help group it to a request).

Table Of Contents

Previous topic

DNS Services

Next topic

Developing Silver Lining Itself

This Page