-
Notifications
You must be signed in to change notification settings - Fork 9
Leitfaden für Entwickler
ACHTUNG: Diese Seite beschreibt Funktionen, wie sie vor Version 2 in Gebrauch waren. Sie sollte demnächst aktualisiert werden, sobald Version 2 fertig ist.
Hier wird alles gesammelt, was Du als Entwickler wissen solltest und was Dir die Arbeit erleichtern könnte.
Dies ist eine Work-in-Progress Dokumentation dazu, wie Du lokal an der Webapplikation arbeiten kannst.
- git Client zum Aus- und Einchecken der Sourcen
- Python Umgebung. Auf dem offeneskoeln.de Server läuft der Code unter der Python-Version 2.5.2, es können aber auch andere Versionen wie z.B. 2.7 funktionieren.
- virtualenv
- MySQL Server. Auf dem Server läuft Version 5.0.51a.
- Java Runtime Environment
- Festplatten-Platz: Etwa 650 MB für die MySQL-Datenbank und 400 MB für den Solr Index. Solltest Du auch die Dokumente und Thumbnails lokal ablegen wollen, benötigst Du zusätzlich mind. 15 GB für die Dokumente und 18 GB für die Thumbnails (Stand Februar 2012).
Für den Import von OpenStreetMap Daten sowie für das Erzeugen einer Liste aller Straßen im Stadtgebiet (mehr dazu unte [OpenStreetMap-Datenimport]) benötigt man außerdem:
- multipoligon.py aus dem python-osm (Python-Modul)
- osmosis (Java tool)
- osmfilter (Java tool)
- imposm.parser (Python-Modul)
Zunächst mal erstellst Du Dir, wenn Du noch keinen hast, einen Github Account. Dann loggst Du Dich mit diesem Account ein und forkst dieses Repository (marians/offeneskoeln). Alle Änderungen, die Du beisteuerst, nimmst Du nämlich zuerst an Deinem eigenen Fork vor. Wenn diese Änderungen funktionieren, kannst Du sie als Pull Request an das ursprüngliche Repo (marians/offeneskoeln) senden.
Wenn Du also Dein Fork eingerichtet hast, erstellst Du einen lokalen Clone auf Deinem Entwicklungssystem. Dazu führst in dem Ordner, in dem Du die Daten des Repositories ablegen möchtest, dieses Kommando aus:
git clone https://<dein_github_benutzername>@github.com/<dein_github_benutzername>/offeneskoeln.git
Ersetze dabei <dein_github_benutzername>
durch Deinen github.com Benutzernamen.
- Richte eine neue Datenbank mit dem Namen
offeneskoeln
ein. - Lege einen Nutzer mit dem Namen
offeneskoeln
an - Gib dem neuen Nutzer bis auf
GRANT_PRIV
alle Rechte für die neue Datenbank, von localhost aus. - Importiere das Datenbank-Schema
db/webapp.sql
aus Deinem lokalen Clone in die neue Datenbank. Damit wird die Session-Tabellewebapp_sessiondata
angelegt. - Importiere das Datenbank-Schema
db/geo.sql
. Damit werden die Geodaten-Tabellen angelegt. - Importiere das Datenbank-Schema des Scrapers von https://github.com/marians/cologne-ris-scraper/blob/master/setup_mysql.sql. Damit werden die eigentlichen RIS-Datentabellen angelegt.
- Lade und importiere den aktuellsten Daten-Dump von http://offeneskoeln.de/daten/
Du benötigst virtualenv nicht zwingend. Wenn Du es nutzt, erlaubt es Dir, die Python-Module für Offenes Köln in einer eigenen Umgebung zu installieren und damit nicht Deine globale Python-Umgebung aufzublähen.
Um Deine virtuelle Python-Umgebung für Offenes Köln einzurichten, gibst Du an der Kommandozeile im obersten Ordner des repositories folgendes ein:
virtualenv venv
Um die virtuelle Umgebung zu aktivieren:
. venv/bin/activate
Wenn Du die virtuelle Umgebung wie oben beschrieben nutzen möchtest, musst Du sie vorher aktiviert haben. Nun kannst Du die benötigten Module wie folgt installieren:
pip install web.py
pip install mysql-python
pip install solrpy
web.py hat ein Problem, das sich nur bemerkbar macht, wenn man die Applikation unter FastCGI und mit URL-Rewriting betreibt. Hierbei wird der Pfad von HTTP-Cookies falsch gesetzt, was dazu führt, dass das Session-Management nicht funktioniert.
TODO: Link zum Patch
Solr ist das Such-Framework hinter der Offenes Köln API. Die auf dem Server vererwendete Version ist 3.4.
-
Lade Solr 3.4 von http://mirror.netcologne.de/apache.org/lucene/solr/3.4.0/ herunter, z.B. so:
wget http://mirror.netcologne.de/apache.org/lucene/solr/3.4.0/apache-solr-3.4.0.zip
-
Entpacke das heruntergeladene Paket an einem Ort Deiner Wahl.
unzip apache-solr-3.4.0.zip cd apache-solr-3.4.0
-
Wechsele in das "conf"-Verzeichnis unter "example/solr".
cd example/solr/conf
-
Kopiere aus Deinem lokalen Clone die Dateien
solr-conf/*
in dieses Verzeichnis. Alternativ kannst Du auch symbolische Links setzen. Dabei überschreibst Du bereits vorhandene Dateien wieschema.xml
.ln -s pfad/zum/clone/solr-conf/* .
-
Wechsele zwei Ebenen nach oben ins "example" Verzeichnis.
cd ../..
-
Starte Solr über dieses Kommando:
java -server -jar start.jar
Du solltest nach erfolgreichem Start auf der Konsole diesen Hinweis sehen:
[...] INFO::Started [email protected]:8983
Damit läuft Solr auf dem vorkonfigurierten Port 8983. Die Konsole bleibt offen, auf ihr werden Infos und Fehlermeldungen geloggt.
Solr benötigt einen Index, in dem gesucht werden kann. Diesen bauen wir nun auf.
-
Wechsele in das Verzeichnis
scripts
innerhalb Deines lokalen Clones. -
Kopiere die Datei
config_dist.py
inconfig.py
.cp config_dist.py config.py
-
Passe gegebenenfalls die Inhalte von
config.py
an Deine Umgebung an. -
Starte den Import mit dem Script
solr_import.py
.python ./solr_import.py
Das kann je nach Rechenleistung ca. eine Stunde dauern. Der Fortschritt wird an der Konsole ausgegeben.
Nach dem Import solltest Du eine Suche direkt über den Webservice ausführen, um sicher zu stellen, dass der Index Daten enthält. Rufe dafür diese URL auf:
http://127.0.0.1:8983/solr/select?q=*:*
Dies sollte Dir eine JSON-Ausgabe liefern, in der unter anderem status: 0
und numFound
mit einer Zahl jenseits von 0 enthalten sein sollte. Falls Dir Dein Browser hierzu keine lesbare Ausgabe anzeigt, kannst Du alternativ auf XML-Ausgabe umschalten:
http://127.0.0.1:8983/solr/select?wt=xml&q=*:*
Achtung: Aktuell liegt der Webapp-Code noch nicht im Repository. Diese Doku beschreibt an dieser Stelle nur, wie es demnächst laufen wird.
-
Wechsele ins Verzeichnis
webapp
Deines lokalen Clones. -
Kopiere die Datei
config_dist.py
zuconfig.py
. -
Bearbeite die Datei
config.py
und sorge dafür, dass diese Einstellungen passend zu Deiner Umgebung gesetzt sind:BASE_URL = 'http://localhost:8080/' BASE_PATH = '/pfad/zum/lokalen/clone/webapp' SOLR_URL = 'http://localhost:8983/solr' cache = False
- Falls Du Dich noch nicht dort befindest, wechsele in der Konsole in das
webapp
Verzeichnis Deines lokalen Clones. - Führe das Kommando
python ./dispatch.py
aus. - Öffne die URL http://localhost:8080/ im Browser.
Nun müsstest Du im Browser die Startseite von Offenes Köln, gehostet auf Deinem Rechner, vorfinden.