.. _4_inbetriebnahme: ############## Inbetriebnahme ############## Scio #### Um Scio auf eine lokalen Maschine in Betrieb zu nehmen, müssen die folgenden Befehle ausgeführt werden. Die Befehle sind für Linux, wer einen Windows-PC hat, muss einige Befehle (beispielsweise den venv-Befehl) leicht anpassen. .. code-block:: sh # Repository clonen git clone ssh://git@r-n-d.informatik.hs-augsburg.de:2222/thetadev/PyWeb-Scio.git cd PyWeb-Scio # Virtuelle Python-Umgebung erstellen und aktivieren. python3 -m venv venv source venv/bin/activate # Abhängigkeiten installieren pip3 install -r requirements.txt Eventuell muss noch die Konfigurationsdatei unter :file:`Scio/settings.py` angepasst werden. Scio benötigt einen Unsplash-API-Key, um Bilder abzurufen. Dieser muss unter dem Variablennamen ``UNSPLASH_ACCESS_KEY`` in der Konfigurationsdatei abgelegt werden. Die Konfigurationsdatei beinhaltet bereits einen API-Key, den ich zum Testen erstellt habe. Möchte man einen neuen API-Key erstellen, kann man sich mit einem kostenlosen Unsplash-Account unter https://unsplash.com/developers anmelden und eine neue Anwendung erstellen. Anschließend kopiert man sich den Access Key und fügt ihn in die Konfigurationsdatei ein. .. code-block:: sh # Datenbank aufsetzen python3 manage.py migrate # Admin-User erstellen (Benutzername und Passwort eingeben) python manage.py createsuperuser # Django-Server starten python manage.py runserver Setup ===== Wenn der Server läuft, kann man sich auf die Admin-Oberfläche begeben (http://127.0.0.1:8000/admin) und sich mit den vorhin angegebenen Zugangsdaten anmelden. In der im Repository befindlichen SQLite-Datenbank befinden sich bereits Kategrorien, Fragen und Bilder, sodass gleich losgespielt werden kann. Möchte man aber mit einer leeren Datenbank starten, kann man die Daten aus csv-Dateien importieren. Dafür geht man zunächst auf :guilabel:`Categorys` > :guilabel:`Importieren` und lädt die CSV-Datei mit den Kategorien :file:`csv/Category-2021-02-03.csv` hoch. Anschließend wiederholt man diese Schritte für :guilabel:`Questions` und :guilabel:`Images`. Um neue Bilder von Unsplash abzurufen, geht man in der Admin-Oberfläche auf :guilabel:`Categorys`, markiert alle Kategorien und wählt aus dem Dropdown-Menü ``(1-5) Unsplash-Abfragen durchführen``. Hierbei ist zu beachten, dass Unsplash ohne Bestätigung nur 50 API-Zugriffe pro Stunde zulässt. Bei einer zu hohen Zahl von Abfragen kann der Vorgang deswegen mit einer Fehlermeldung abbrechen. Heroku ====== Möchte man Scio mit seinen Freunden spielen, so gibt es mit der Heroku-Plattform eine einfache und kostenlose Möglichkeit, seine Python-Webanwendung online zu stellen. Hierfür muss man sich zunächst unter https://dashboard.heroku.com/ kostenlos anmelden. Jetzt kann man eine neue App erstellen und ihr einen Namen geben. Unter diesem Namen ist die App dann über das Internet erreichbar. Meine Heroku-App befindet sich beispielsweise unter https://scio.herokuapp.com. Nun kann man die Anwendung per Git auf den Heroku-Server hochladen. Man beachte hier die Terminalausgabe. Heroku baut nun automatisch die App, installiert alle Abhängigkeiten und veröffentlicht sie. .. code-block:: sh git remote add heroku https://git.heroku.com/.git git push heroku master Jetzt kann die App durch Aufruf der URL getestet werden. Um jetzt Administrationsbefehle auf dem Heroku-Server ausführen zu können und beispielsweise an einen Zugang für die Django-Adminoberfläche zu kommen muss man die Heroku-CLI installieren. Die Anleitung hierfür befindet sich hier: https://devcenter.heroku.com/articles/heroku-cli Mit der Heroku-CLI kann man jetzt die manage.py aufrufen und einen Admin-User erstellen. .. code-block:: sh heroku run -a python manage.py createsuperuser Anschließend kann man mit dem Punkt `Setup`_ fortfahren. Das Gratisangebot von Heroku hat allerdings zwei Nachteile. Zum einen wird die App bei 30 Minuten Inaktivität heruntergefahren und benötigt bei erneutem Aufruf oft über 10 Sekunden, um neu zu starten. Zum anderen gibt es ein Limit von 10.000 Datensätzen in der Datenbank, was bei häufigem Nachladen von neuen Bildern durchaus erreicht werden kann (in einer Testinstallation habe ich bereits über 3k Datensätze erreicht). Dokumentation ############# Der Projektbericht wurde mit Sphinx erstellt und befindet sich im Ordner :file:`docs/`. Um den Bericht im pdf und html-Format zu erzeugen, müssen diese Befehle ausgeführt werden: .. code-block:: sh pip3 install -r requirements-doc.txt cd docs make html latexpdf Um den Bericht in einer Python-IDE zu erstellen, kann auch das Skript ``build_docs.py`` ausgeführt werden. Ich habe auch die LaTeX-Alternative rinohtype für den PDF-Export getestet (``make rinoh``), bin allerdings auf einige Probleme gestoßen. Erstens hat das rinohtype-Projekt seit über einem halben Jahr kein Release veröffentlicht, weswegen ich rinohtype selbst kompilieren musste, um einige Funktionen wie eine anpassbare Titelseite zu erhalten. Zweitens produziert rinohtype einige Fehler wie beispielsweise fehlende Zeilenumbrüche bei der Darstellung von Funktionen. .. figure:: _static/img/rinoh_fail.png :height: 350 Fehlende Zeilenumbrüche bei rinohtype