documentation on how to use systemctl (or service)

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
This commit is contained in:
Masin Al-Dujaili 2024-11-11 10:58:00 +00:00
parent a7774f6a41
commit 1cc2a50df8
1 changed files with 79 additions and 61 deletions

140
README.md
View File

@ -1,61 +1,79 @@
# eva # eva
A simple tool for on- and offboarding people in a mid sized organisation. A simple tool for on- and offboarding people in a mid sized organisation.
"EVA" is an german acronym for "Eintritt, Veränderung, Austritt", "EVA" is an german acronym for "Eintritt, Veränderung, Austritt",
meaning "Onboarding, Change, Offboarding" meaning "Onboarding, Change, Offboarding"
# development # development
- install gettext for instance via "apt install gettext" for translations - install gettext for instance via `apt install gettext` for translations
- set up a virtual environment with virtualenvwrapper or some other environment managing tool
- set up a virtual environment with virtualenvwrapper or some other - use this environment and do
environment managing tool ```
pip install django django-multiselectfield django-formtools django-allauth
- use this environment and do ```
- clone this repository
pip install django django-multiselectfield django-formtools django-allauth - `ln -sr eva/settings_development.py eva/settings.py`
- initialise your database with `python manage.py migrate`
- clone this repository - start your development server with `python manage.py runserver`
- ln -sr eva/settings_development.py eva/settings.py # oauth
- initialise your database with - You need to add oauth information in the django backend via .../admin in "Social Accounts"
python manage.py migrate # production
- start your development server with - you can use gunicorn as server for example instead of the django development server.
- we use whitenoise for serving static files
python manage.py runserver - we still use the development SQLITE database from django
# oauth do the following in the project main directory:
```
- You need to add oauth information in the django backend via .../admin in "Social Accounts" ln -sr eva/settings_production.py eva/settings.py
```
# production edit /secrets.json to contain something similar to
```
- you can use gunicorn as server for example instead of the django development server. {
"SECRET_KEY": "THIS IS ANOTHER SECRET!"
- we use whitenoise for serving static files }
```
- we still use the development SQLITE database from django run the following commands:
```
do the following in the project main directory: python3 manage.py migrate
python3 manage.py collectstatic
ln -sr eva/settings_production.py eva/settings.py django-admin compilemessages
```
edit /secrets.json to contain something similar to
As root create a file `/etc/systemd/system` (it's already deployed by puppet when the corresponding manifest is applied):
{
"SECRET_KEY": "THIS IS ANOTHER SECRET!" ```
} # /etc/systemd/system/eva.service
#
run the following commands:
[Unit]
python3 manage.py migrate Description=gunicorn EVA daemon
python3 manage.py collectstatic After=network.target
django-admin compilemessages
[Service]
server starts with Type=simple
User=eva
export PYTHONUNBUFFERED=TRUE; nohup gunicorn --forwarded-allow-ips="*" -b '0:8000' eva.wsgi &> logfile & 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.