eva/README.md

2.3 KiB

eva

A simple tool for on- and offboarding people in a mid sized organisation.

"EVA" is an german acronym for "Eintritt, Veränderung, Austritt", meaning "Onboarding, Change, Offboarding"

development

  • install gettext for instance via apt install gettext for translations
  • set up a virtual environment with virtualenvwrapper or some other environment managing tool
  • use this environment and do
pip install django django-multiselectfield django-formtools django-allauth
  • clone this repository
  • ln -sr eva/settings_development.py eva/settings.py
  • initialise your database with python manage.py migrate
  • start your development server with python manage.py runserver

oauth

  • You need to add oauth information in the django backend via .../admin in "Social Accounts"

production

  • you can use gunicorn as server for example instead of the django development server.
  • we use whitenoise for serving static files
  • we still use the development SQLITE database from django

do the following in the project main directory:

  ln -sr eva/settings_production.py eva/settings.py

edit /secrets.json to contain something similar to

  {
    "SECRET_KEY": "THIS IS ANOTHER SECRET!"
  }

run the following commands:

  python3 manage.py migrate
  python3 manage.py collectstatic
  django-admin compilemessages

As root create a file /etc/systemd/system (it's already deployed by puppet when the corresponding manifest is applied):

# /etc/systemd/system/eva.service
#

[Unit]
Description=gunicorn EVA daemon
After=network.target

[Service]
Type=simple
User=eva
Group=eva
RuntimeDirectory=eva
WorkingDirectory=/home/eva/eva
Environment=PYTHONUNBUFFERED=TRUE
ExecStart=/usr/bin/gunicorn  --forwarded-allow-ips='*' -b '0:8000' eva.wsgi
ExecReload=/bin/kill -s HUP $MAINPID
KillMode=mixed
TimeoutStopSec=5
PrivateTmp=true

[Install]
WantedBy=multi-user.target

Adapt the paths in the file accordingly. Then, still as root, run:

systemctl enable --now eva.service

This enables the service to start at boot time and starts it immediately now. The daemon logs to the journal. You can see the last 10 lines by running systemctl status eva.service or the whole log by running journalctl -u eva.service. The usual switches to manipulate that output are available.