Installieren

Produktivsystem

Um MySQL als Datenbank zu nutzen muss folgendes Paket installiert werden:

apt install default-libmysqlclient-dev

In dem Ordner welcher genutzt werden soll folgende Befehle ausführen

git clone git@github.com:demostat/demostat.git
pip3 install -r demostat/requirements.txt # Abhängigkeiten installieren
django-admin startproject mysite # Hierfür muss vorher(!) pip3 install django als **root** ausgeführt werden damit der Befehl global verfügbar ist
cd mysite
ln -s ../demostat/demostat

In der mysite/settings.py müsen folgende Zeilen zu INSTALLED_APPS hinzugefügt werden:

INSTALLED_APPS = [
  'demostat',
  ...
  ]

In der mysite/settings.py müsen nun die demostat Routen geladen werden:

from django.urls import include

urlpatterns = [
  path('', include('demostat.urls')),
  ...
]

Wenn MySQL als Datenbank genutzt werden soll müssen folgende änderungen in der mysite/settings.py vorgenommen werden:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'demostat',
        'USER': 'demostat',
        'PASSWORD': '<password>',
        'HOST': 'localhost',
        'PORT': '3306',
        'OPTIONS':  {
          'init_command': "SET sql_mode='STRICT_TRANS_TABLES'", # Sicherheitsmaßnahme um das Schreiben von Fehlerhaften Daten zu verhindern https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-sql-mode
        },
    }
}

# Falls MySQL genutzt werden soll # Dies ist ein Workarround um Probleme mit dem Filtern nach dem Datum zu beheben. Siehe https://stackoverflow.com/a/22043578/7142167

USE_TZ = False

# Damit statische files ordentlich ausgelagert werden

STATIC_URL = '/static/'
PROJECT_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_DIR, '../static')

Nun müssen die migrations ausgeführt werden:

python3 manage.py migrate

Statische Dateien auslagern:

python3 manage.py collectstatic

Superuser werden über folgenden Befehl angelegt:

python3 manage.py createsuperuser

Unter Apache zum Laufen bringen

_Diese sektion orrientiert basiert mehr oder weniger auf Justin Ellingwood’s [How To Serve Django Applications with Apache and mod_wsgi on Ubuntu 14.04 ](https://www.digitalocean.com/community/tutorials/how-to-serve-django-applications-with-apache-and-mod_wsgi-on-ubuntu-14-04)_

Vorrausgesetzt ist dabei, dass bereits apache2 installiert ist.

apt install libapache2-mod-wsgi-py3

Virtual host für Apache:

<VirtualHost *:80>
    . . .

    Alias /static /path/to/mysite/static
    <Directory /path/to/mysite/static>
        Require all granted
    </Directory>

    <Directory /path/to/mysite/mysite>
        <Files wsgi.py>
            Require all granted
        </Files>
    </Directory>

    WSGIDaemonProcess myproject python-path=/path/to/mysite python-home=/home/user/myproject/myprojectenv ## auskommentieren wenn ein virtual env verwendet werden soll
    WSGIDaemonProcess myproject python-path=/path/to/mysite
    WSGIProcessGroup mysite
    WSGIScriptAlias / /path/to/mysite/mysite/wsgi.py
</VirtualHost>
a2ensite mysite.conf
systemctl reload apache2

Wenn änderungen in der `mysite/settings.py` vorgenommen werden, muss apache neu geladen werden!

systemctl reload apache2

Eigenständige Entwicklungsversion

Demostat Entwicklungsversion herunterladen:

git clone -b dev https://github.com/demostat/demostat.git

Abhängigkeiten installieren:

pip3 install -r demostat/requirements.txt

Neues Django Projekt starten:

django-admin startproject mysite
cd mysite

Demostat einbinden:

ln -s ../demostat/demostat

Füge in mysite/settings.py Demostat zu INSTALLED_APPS hinzu:

INSTALLED_APPS = [
  'demostat',
...
]

Beachte, dass Django-Admin ebenfalls geladen wird. (In der Standartinstallation sollte das schon geschehen sein)

Binde in mysite/urls.py Demostat-Urls ein:

from django.urls import include

urlpatterns = [
  path('', include('demostat.urls')),
  ...
]

Datenbank-Migrieren:

python3 manage.py migrate

Erstelle Administrationsaccount:

python3 manage.py createsuperuser

Starte Webserver:

python3 manage.py runserver

Website ist erreichbar über: http://127.0.0.1:8000/

Administration über: http://127.0.0.1:8000/admin/