Masin Al-Dujaili
1cc2a50df8
Puppet deploys a service unit file so EVA can be started at boot time and logs go the journal instead of some logfile at some opaque location |
||
---|---|---|
eva | ||
evapp | ||
locale/en/LC_MESSAGES | ||
.gitignore | ||
LICENSE | ||
README.md | ||
TODO | ||
manage.py |
README.md
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.