Django

Siehe auch

Installation und Konfiguration

Django benötigt Python 3.6+.

dnf -y install python3-pip

Virtuelles Environment erzeugen, z.B. django-venv:

python3 -m venv django-venv
source django-venv/bin/activate

Django und einige Module im Virtual Environment installieren:

pip install --upgrade pip
pip install django django-appconf requests

Ein neues Projekt erstellen:

django-admin startproject mvc
cd mvc/

Django mit MariaDB, Allow access from everywhere:

nano mvc/settings.py

ALLOWED_HOSTS = [ '*' ]

DATABASES = {
   'default': {
       'ENGINE': 'django.db.backends.mysql',
       'NAME': 'mvc',
       'USER': 'mvc-user',
       'PASSWORD': 'password',
       'HOST': '10.80.32.60',
       'PORT': '3306',
   }
}
python manage.py migrate
python manage.py createsuperuser
python manage.py runserver 0.0.0.0:80

Später genügt:

source django-venv/bin/activate
cd mvc/
python manage.py runserver 0.0.0.0:80

Reset Migrations

Frische Datenbank gewünscht?

find . -path "*/migrations/*.py" -not -name "**init**.py" -delete
find . -path "*/migrations/*.pyc" -delete

Anschliessend Datenbank löschen.

Datenbank neu erzeugen:

python manage.py makemigrations
python manage.py migrate
python manage.py createsuperuser

Systemd Unit-File

Wenn man Django direkt durch Python statt durch einen Webserver ausführen lassen möchte (also per python manage.py runserver 0.0.0.0:8000), kann man sich folgendes Unit-File erstellen:

/etc/systemd/system/django.service
[Unit]
Description=My Django App
Requires=network.target
After=network.target syslog.target

[Service]
ExecStart=/bin/bash -c 'cd /path/to/venv; source django-venv/bin/activate; cd /path/to/django; python manage.py runserver 0.0.0.0:8000'
KillSignal=SIGQUIT
NotifyAccess=all
Restart=always
RestartSec=10
RuntimeDirectory=/path/to/django
StandardError=syslog
TimeoutStartSec=0
Type=simple

[Install]
WantedBy=multi-user.target

Built on 2022-06-03