mirror of
https://gitlab.science.ru.nl/technicie/MarietjeDjango.git
synced 2025-12-08 06:02:23 +01:00
97 lines
3.7 KiB
Markdown
97 lines
3.7 KiB
Markdown
# Marietje
|
|
Welcome to the repository of Marietje! Marietje is the system that provides music in the South canteen of the Huygens
|
|
building. Students of the faculty of science can request an account at the administrators and then upload and queue
|
|
music.
|
|
|
|
## Getting started
|
|
This project is built using the [Django](https://github.com/django/django) framework.
|
|
[Poetry](https://python-poetry.org) is used for dependency management.
|
|
|
|
### Development setup
|
|
1. Get at least [Python](https://www.python.org) 3.9 installed on your system.
|
|
2. Clone this repository.
|
|
3. If ```pip3``` is not installed on your system yet, execute ```apt install python3-pip``` on your system.
|
|
4. Also make sure ```python3-dev``` is installed on your system, execute ```apt install python3-dev```.
|
|
5. Install Poetry by following the steps on [their website](https://python-poetry.org/docs/#installation). Make sure
|
|
poetry is added to ```PATH``` before continuing.
|
|
6. Make sure `poetry` uses your python 3 installation: `poetry env use python3`.
|
|
7. Run `poetry install` to install all dependencies.
|
|
8. Run `poetry shell` to start a shell with the dependencies loaded. This command needs to be run every time you open a
|
|
new shell and want to run the development server.
|
|
9. Run ```cd marietje``` to change directories to the ```website``` folder containing the project.
|
|
10. Change the `DATABASES` setting in `marietje/marietje/settings/settings.py` to the following:
|
|
```
|
|
"default": {
|
|
"ENGINE": "django.db.backends.sqlite3",
|
|
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
|
|
}
|
|
```
|
|
11. Install [berthad](https://github.com/bertha/berthad) on your system by following the README file. berthad is used
|
|
for storing the music files.
|
|
12. Start a bertad service by following the berthad README file.
|
|
13. Adjust the `BERTHA_HOST` setting in `marietje/marietje/settings/settings.py` to the host you created previously.
|
|
14. Run ```./manage.py migrate``` to initialise the database and run all migrations.
|
|
15. Run ```./manage.py createsuperuser``` to create an administrator that is able to access the backend interface later
|
|
on.
|
|
16. Run ```./manage.py runserver``` to start the development server locally.
|
|
|
|
Optionally you can enable debug mode by changing the boolean setting `DEBUG` in `marietje/marietje/setting/settings.py`
|
|
to `TRUE`.
|
|
|
|
## Production setup
|
|
For a production environment, the steps for the development setup can be followed up until running the actual server.
|
|
In a production environment, usage of uWSGI is recommended, so this needs to be installed.
|
|
Then, using the snippet below, a service file can be used to start the uWSGI in the Poetry environment.
|
|
|
|
```systemd
|
|
[Unit]
|
|
Description=MarietjeDjango website
|
|
After=syslog.target
|
|
|
|
[Service]
|
|
ExecStart=poetry run uwsgi \
|
|
--socket /run/uwsgi/MarietjeDjango.socket \
|
|
--uid=www-data \
|
|
--gid=www-data \
|
|
--module=marietje.wsgi \
|
|
--workers 2 --master \
|
|
--disable-write-exception
|
|
WorkingDirectory=/srv/MarietjeDjango/marietje
|
|
Restart=always
|
|
KillSignal=SIGQUIT
|
|
Type=notify
|
|
StandardError=syslog
|
|
NotifyAccess=all
|
|
|
|
ProtectSystem=full
|
|
ProtectHome=yes
|
|
RuntimeDirectory=uwsgi
|
|
PrivateTmp=no
|
|
PrivateDevices=yes
|
|
ProtectControlGroups=yes
|
|
RemoveIPC=yes
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
```
|
|
|
|
The current production environment uses Nginx as webserver that connects to this WSGI socket.
|
|
Static files are served from `marietje/static`.
|
|
They can be loaded using `./manage.py collectstatic`.
|
|
A minimal Nginx configuration for both IPv4 and IPv6 as default would be the following.
|
|
|
|
```nginx
|
|
server {
|
|
listen 80 default_server;
|
|
listen [::]:80 default_server;
|
|
|
|
location /static {
|
|
alias /srv/MarietjeDjango/marietje/static;
|
|
}
|
|
location / {
|
|
uwsgi_pass unix:///run/uwsgi/MarietjeDjango.service;
|
|
include uwsgi_params;
|
|
}
|
|
}
|
|
```
|