deploy-custom.rst 2.02 KB
Newer Older
Nicolas Joyard's avatar
Nicolas Joyard committed
1 2 3 4 5 6 7 8 9
Deployment on a custom machine
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Prerequisites
=============

You will need the following:

* A clone of the git repository at ``https://github.com/political-memory/political_memory.git``
10
* A dedicated python virtualenv
Nicolas Joyard's avatar
Nicolas Joyard committed
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
* a PostgreSQL>=9.2 database (not necessarily on the same machine)
* a WSGI-capable web server

Setup environment
=================

Set the following environment variables::

    DJANGO_SETTINGS_MODULE=memopol.settings

Customize settings
==================

Create a copy of the example local settings file::

Jamesie Pic's avatar
Jamesie Pic committed
26
    $ cp src/memopol/local_settings.py.example src/memopol/local_settings.py
Nicolas Joyard's avatar
Nicolas Joyard committed
27

Jamesie Pic's avatar
Jamesie Pic committed
28
Edit ``src/memopol/local_settings.py`` to set directories, database settings and
Nicolas Joyard's avatar
Nicolas Joyard committed
29 30 31 32
allowed hosts.  Setup your WSGI server to serve:

* Static files from the directory specified in the ``PUBLIC_DIR`` setting to the
  ``/static`` URL
Jamesie Pic's avatar
Jamesie Pic committed
33
* The ``src/memopol/wsgi.py`` WSGI application
Nicolas Joyard's avatar
Nicolas Joyard committed
34 35 36 37

Initial memopol setup
=====================

38 39 40 41
From the repository root, install python dependencies::

    $ pip install -Ue .

Nicolas Joyard's avatar
Nicolas Joyard committed
42 43
Install client libraries::

Jamesie Pic's avatar
Jamesie Pic committed
44
    $ src/memopol/bin/install_client_deps.sh
Nicolas Joyard's avatar
Nicolas Joyard committed
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61

Setup the database schema::

    $ ./manage.py migrate --noinput

Collect static files::

    $ ./manage.py collectstatic --noinput

Memopol should be ready to go.

Updating
========

To update simply pull the repository and run setup commands again::

    $ git pull
62
    $ pip install -Ue .
Nicolas Joyard's avatar
Nicolas Joyard committed
63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
    $ bin/install_client_deps.sh
    $ ./manage.py migrate --noinput
    $ ./manage.py collectstatic --noinput

Data provisionning
==================

Set up two cron jobs:

* One to update data from parliaments, that runs ``bin/update_all``.  This
  script takes quite some time to run, so you should schedule it once every
  night for example
* One to refresh scores,  that runs ``./manage.py refresh_scores``.  This one
  runs quite quickly (a few seconds), you may want to run it after the update
  job has completed (but you can run it more often).

Ensure that cron jobs get the same environment as the application.


Continue to :doc:`administration`.