Skip to content
This repository has been archived by the owner on Jan 7, 2019. It is now read-only.

Leitfaden für Entwickler

marians edited this page Apr 9, 2013 · 22 revisions

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.

Lokales Entwickeln

Dies ist eine Work-in-Progress Dokumentation dazu, wie Du lokal an der Webapplikation arbeiten kannst.

Voraussetzungen

  • 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:

Git Repository forken und clonen

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.

Vorbereitung der Datenbank

  1. Richte eine neue Datenbank mit dem Namen offeneskoeln ein.
  2. Lege einen Nutzer mit dem Namen offeneskoeln an
  3. Gib dem neuen Nutzer bis auf GRANT_PRIV alle Rechte für die neue Datenbank, von localhost aus.
  4. Importiere das Datenbank-Schema db/webapp.sql aus Deinem lokalen Clone in die neue Datenbank. Damit wird die Session-Tabelle webapp_sessiondata angelegt.
  5. Importiere das Datenbank-Schema db/geo.sql. Damit werden die Geodaten-Tabellen angelegt.
  6. 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.
  7. Lade und importiere den aktuellsten Daten-Dump von http://offeneskoeln.de/daten/

Virtualenv einrichten

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

Benötigte Python-Module installieren

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 patchen (optional)

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 installieren

Solr ist das Such-Framework hinter der Offenes Köln API. Die auf dem Server vererwendete Version ist 3.4.

  1. 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
    
  2. Entpacke das heruntergeladene Paket an einem Ort Deiner Wahl.

     unzip apache-solr-3.4.0.zip
     cd apache-solr-3.4.0
    
  3. Wechsele in das "conf"-Verzeichnis unter "example/solr".

     cd example/solr/conf
    
  4. 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 wie schema.xml.

     ln -s pfad/zum/clone/solr-conf/* .
    
  5. Wechsele zwei Ebenen nach oben ins "example" Verzeichnis.

     cd ../..
    
  6. 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.

Daten mit Solr indexieren

Solr benötigt einen Index, in dem gesucht werden kann. Diesen bauen wir nun auf.

  1. Wechsele in das Verzeichnis scripts innerhalb Deines lokalen Clones.

  2. Kopiere die Datei config_dist.py in config.py.

     cp config_dist.py config.py
    
  3. Passe gegebenenfalls die Inhalte von config.py an Deine Umgebung an.

  4. 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=*:*

Webapp Konfiguration anpassen

Achtung: Aktuell liegt der Webapp-Code noch nicht im Repository. Diese Doku beschreibt an dieser Stelle nur, wie es demnächst laufen wird.

  1. Wechsele ins Verzeichnis webapp Deines lokalen Clones.

  2. Kopiere die Datei config_dist.py zu config.py.

  3. 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
    

Webapp starten

  1. Falls Du Dich noch nicht dort befindest, wechsele in der Konsole in das webapp Verzeichnis Deines lokalen Clones.
  2. Führe das Kommando python ./dispatch.py aus.
  3. Ö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.