deploy-custom.rst 1.99 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
26
27
28
29
30
31
32
33
34
35
36
37
* 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::

    $ cp memopol/local_settings.py.example memopol/local_settings.py

Edit ``memopol/local_settings.py`` to set directories, database settings and
allowed hosts.  Setup your WSGI server to serve:

* Static files from the directory specified in the ``PUBLIC_DIR`` setting to the
  ``/static`` URL
* The memopol/wsgi.py WSGI application

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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Install client libraries::

    $ bin/install_client_deps.sh

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`.