Skip to content

Community server: server layout

Duncan Coutts edited this page Apr 19, 2014 · 2 revisions

This page is about the administration of hackage.haskell.org itself.

hackage.haskell.org is a Debian 7 machine. The server instance is predominately located in /srv/hackage. It's proxied by nginx on the frontend. Here's the directory overview:

Note: You must be part of the hackage and hackage-build groups. Ask Austin, Duncan or Herbert about this (or email [email protected].)

/srv/hackage
 +-- bin/  # A set of bash scripts, which conveniently start the server binaries in lib/ with pre-configured arguments. 
 |         # bin/ itself is a symlink to /srv/hackage/git/private/bin
 +-- git/  # Hackage server source code, extra scripts
 |   +-- private/  # Some private scripts facilitating deployment
 |   +-- public/   # The public source code from http://github.com/haskell/hackage-server
 |                 # central-server branch, used for the live server's static data files.
 +-- lib/  # Library directory, containing the raw binary executables
 +-- log/  # Server, builder, and mirror log files
 +-- var/  # State for the hackage server, builder, and mirror

/etc/init.d/
 +-- hackage-server   # Init script for hackage-server process
 +-- hackage-mirror   # Init script for hackage-mirror process
 +-- hackage-builder  # Init script for hackage-builder process

The init scripts automatically run /srv/hackage/bin/hackage-{server,builder} for you, so there's no special configuration needed.

Sometimes things go wrong at the nginx proxy level and so do not appear in the hackage-server logs. For example this can happen if the server runs out of disk space on the partition where nginx keeps its temp files.

The nginx logs live at:

/var/log/nginx/access.log
/var/log/nginx/error.log

TODO: these files belong to the adm group, not the hackage group. Need to work out how to fix that permanently.