/docs/filelayout.txt
Plain Text | 80 lines | 62 code | 18 blank | 0 comment | 0 complexity | defcbbb49bf561f09ff1fe1d8ecc6d5e MD5 | raw file
Possible License(s): GPL-2.0
- 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).