Web-Anwendung zur einfachen Erfassung von Geodaten, die auf Django aufsetzt
- Python (v3.x)
- Virtualenv (für Python v3.x)
- pip (für Python v3.x)
- PostgreSQL mit den Erweiterungen PostGIS und uuid-ossp
- npm
-
neue virtuelle Python-Umgebung erstellen via Virtualenv, zum Beispiel:
virtualenv /srv/www/htdocs/datenerfassung/virtualenv
-
Projekt klonen:
git clone https://github.com/rostock/datenerfassung /srv/www/htdocs/datenerfassung/datenerfassung
-
virtuelle Python-Umgebung aktivieren:
source /srv/www/htdocs/datenerfassung/virtualenv/bin/activate
-
benötigte Python-Module (unter anderem Django) installieren via pip:
pip install -r /srv/www/htdocs/datenerfassung/datenerfassung/requirements.txt
-
Konfigurationsdatei
/srv/www/htdocs/datenerfassung/datenerfassung/settings.py
entsprechend anpassen -
weitere Konfigurationsdatei erstellen auf Basis der entsprechenden Vorlage:
cp /srv/www/htdocs/datenerfassung/datenerfassung/secrets.template /srv/www/htdocs/datenerfassung/datenerfassung/secrets.py
-
weitere Konfigurationsdatei
/srv/www/htdocs/datenerfassung/datenerfassung/settings.py
entsprechend anpassen
-
in PostgreSQL-Datenbank (mit den Erweiterungen PostGIS und uuid-ossp) Schema
django
für die Anwendungsadministration und Schemadaten
für die Datenbasis anlegen -
virtuelle Python-Umgebung aktivieren:
source /srv/www/htdocs/datenerfassung/virtualenv/bin/activate
-
Anwendungsadministration initialisieren:
cd /srv/www/htdocs/datenerfassung/datenerfassung python manage.py migrate
-
Administrator initialisieren:
python manage.py createsuperuser
-
Dateien-Upload-Verzeichnis erstellen (und dessen Besitzer sowie Gruppe entsprechend des genutzten HTTP-Servers anpassen – siehe unten):
mkdir /srv/www/htdocs/datenerfassung/datenerfassung/uploads chown -R wwwrun:www /srv/www/htdocs/datenerfassung/datenerfassung/uploads
-
Webseiten für Hilfe bauen:
cd /srv/www/htdocs/datenerfassung/datenerfassung/hilfe mkdir source/_static make html
-
JavaScript-Module via npm installieren:
cd /srv/www/htdocs/datenerfassung/datenerfassung/assets npm install
-
statische Dateien initialisieren:
cd /srv/www/htdocs/datenerfassung/datenerfassung python manage.py collectstatic -c
Deployment (am Beispiel des Apache HTTP Servers)
Wenn das Deployment mittels Apache HTTP Server realisiert werden soll, muss dessen Modul mod_wsgi (für Python v3.x) installiert sein, das ein Web Server Gateway Interface (WSGI) für das Hosting von Python-Anwendungen zur Verfügung stellt.
Konfigurationsdatei des Apache HTTP Servers öffnen und in etwa folgenden Inhalt einfügen (in diesem Beispiel nutzt die virtuelle Python-Umgebung einen Python-Interpreter der Version 3.6):
Alias /datenerfassung/static /srv/www/htdocs/datenerfassung/datenerfassung/static
Alias /datenerfassung/uploads /srv/www/htdocs/datenerfassung/datenerfassung/uploads
WSGIDaemonProcess datenerfassung processes=2 threads=128 python-path=/srv/www/htdocs/datenerfassung/datenerfassung:/srv/www/htdocs/datenerfassung/virtualenv/lib/python3.6/site-packages
WSGIProcessGroup datenerfassung
WSGIScriptAlias /datenerfassung /srv/www/htdocs/datenerfassung/datenerfassung/datenerfassung/wsgi.py process-group=datenerfassung
<Directory /srv/www/htdocs/datenerfassung/datenerfassung/datenerfassung>
<Files wsgi.py>
Order deny,allow
Require all granted
</Files>
</Directory>
<Directory /srv/www/htdocs/datenerfassung/datenerfassung/static>
Order deny,allow
Require all granted
</Directory>
<Directory /srv/www/htdocs/datenerfassung/datenerfassung/uploads>
Order deny,allow
Require all granted
</Directory>
Der Python-Quellcode ist nach der Stylekonvetion PEP8 verfasst. Für die Entwicklung wird ein Tool wie pycodestyle zur Überprüfung des Quellcodes gemäß PEP8 empfohlen.
Die Dokumentation wird mittels Docstrings in reStructuredText geschrieben und mit Sqhinx kompiliert.