Administratordokumentation - gnuheidix/api.piratenpartei-bw.de GitHub Wiki
Auf dieser Seite sind Einrichtung, Betrieb und Update der Applikation beschrieben.
Derzeit wird zum fehlerfreien Ausführen dieser Applikation folgendes benötigt:
- Apache Webserver mit mod_rewrite und mod_php5
- mindestens PHP 5.2.8
- mindestens MySQL 4
Prinzipiell sollte es auch auf anderen Webservern als Apache funktionieren, jedoch wird hier in den meisten Fällen das manuelle Anpassen der mod_rewrite Anweisungen an die vom jeweiligen Webserver verwendete Syntax erforderlich sein.
Als erstes müssen alle in diesem Repository hinterlegten Dateien in ein beliebiges, über den Webserver erreichbares, Verzeichnis kopiert werden. Hierzu kann entweder der gezippte Download oder git verwendet werden. Das Auschecken via git ist hierbei jedoch stark zu empfehlen, da so auch spätere Updates kein Problem darstellen werden:
git clone "git://github.com/gnuheidix/api.piratenpartei-bw.de.git"
Nachdem die Daten in einem über das Netz erreichbaren Verzeichnis untergebracht sind müssen noch einige weitere Schritte durchgeführt werden.
Das folgende Beispiel dient nur als Anhaltspunkt, wie die vHost-Einstellung in Apache konfiguriert werden muss. Der Pfad muss nicht gegen app/webroot gehen, es ist aber (sicherheits)technisch besser.
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /path/to/api.piratenpartei-bw.de/app/webroot
<Directory /path/to/api.piratenpartei-bw.de/app/webroot>
Options Indexes FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
allow from all
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Bitte prüfen, dass das Modul rewrite aktiviert ist. sudo a2enmod rewrite
- Die Datei
app/Config/database.php.default
nachapp/Config/database.php
kopieren und mit den eigenen Datenbankzugangsdaten versehen. - Die Datei
app/Config/core.php.default
nachapp/Config/core.php
kopieren und dort die Werte der Schlüsseldebug
,Security.salt
undSecurity.cypherSeed
anpassen. - Die Datei
app/Config/config.php.default
nachapp/Config/config.php
kopieren.
In der Konfigurationsdatei unter app/Config/config.php
muss in Zeile Nr. 8 die Baseurl auf den Pfad des Unterverzeichnisses relativ zum Webroot abgeändert werden. Liegt die Software direkt im Webroot kann die Standardeinstellung "/" verwendet werden - liegt die Software beispielsweise im Unterverzeichniss "api.piratenpartei-bw.de" lautet die korrekte Baseurl "/api.piratenpartei-bw.de/".
Die in app/Config/database.php
angegebene Datenbank muss von Hand erstellt werden. Beispiel:
CREATE DATABASE api_piratenpartei_bw_de;
Es wird empfohlen der Applikation ein eigenes Benutzerkonto in DBMS einzurichten. Beispiel:
CREATE USER '<USERNAME>'@'localhost' IDENTIFIED BY '<PASSWORT>';
GRANT ALL PRIVILEGES ON <DATENBANKNAME>.* TO '<USERNAME>'@'localhost';
Als nächstes müssen die Temp-Verzeichnisse erstellt und Dateizugriffsrechte gesetzt werden. Das Skript createTempDirectory.sh
bietet dabei Hilfestellung.
Als letztes müssen die benötigten Tabellen erstellt werden, hierzu reicht es folgende Befehle auf der Konsole auszuführen, wobei Warnungen aufgrund fehlender Schreibrechte auf die Cacheverzeichnisse in Ordnung gehen.
a@b:~/api.piratenpartei-bw.de/app$ ./Console/cake schema create WikiPages
a@b:~/api.piratenpartei-bw.de/app$ ./Console/cake schema create WikiElements
a@b:~/api.piratenpartei-bw.de/app$ ./Console/cake schema create Stammtisches
a@b:~/api.piratenpartei-bw.de/app$ ./Console/cake schema create GeoCoordinates
Für den Fall, dass github bei einer Störung dieser Applikation nicht erreichbar ist, bietet es sich an bei der Installation die Inhalte dieses Wikis herunterzuladen. Beispiel:
git clone git://github.com/gnuheidix/api.piratenpartei-bw.de.wiki.git
Damit Benutzer beim Abruf von bereits einmal angeforderten und inzwischen veralteten Inhalten nicht auf deren erneute Aktualisierung von der Datenquelle warten müssen, ist es ratsam einen Cronjob einzurichten. Dessen Aufgabe ist es, die Aktualisierung der Inhalte unabhängig von Benutzeranfragen durchzuführen.
Der Cronjob-Zeitintervall muss dabei wesentlich kleiner sein als der Wert System.autoupdateage in app/Config/config.php
, da die Aktualisierung der abgefragten Inhalte teilweise während der Benutzerrequests stattfindet. Der Cronprozess wird durch die Ausführung des Skripts app/Console/cron.php
gestartet. Diesem können die folgenden Parameter mitgegeben werden.
- debug - detaillierte Ausgabe, welche Inhalte abgefragt und verarbeitet werden
- querycount - Ausgabe der Anzahl der SQL-Queries
Beispielaufruf:
heidi@anna:~/workspace$ php api.piratenpartei-bw.de/app/Console/cron.php querycount
SQL-Queries: 381
- Sollten einmal Inhalte im Speicher der Applikation liegen, die irgendjemand stört, brauchen lediglich sämtliche Tabellen geleert werden.
- Wenn die Applikation in
app/Config/core.php
im Debugmode 0 (Produktion) läuft, werden sämtliche Datenbankzugriffe inapp/tmp/cache/models
undapp/tmp/cache/persistent
gecacht. - Falls der Plattenspeicher, Netzwerktraffic, ... zu stark beansprucht wird, kann das Zwischenspeichern der Bilder in der
app/Config/config.php
deaktiviert werden. Wenn es aus ist, werden die Bilderpfade auf die Datenquelle gerichtet.
- Wenn die Installation mittels git-clone wie oben durchgeführt wurde, dann reicht
git pull origin
, wenn man im Wurzelverzeichnis der Applikation steht.- Wenn die Codebasis seit dem letzten Update bzw. der Installation eigenmächtig angepasst wurde, sollte man die neue Version in einen neuen Branch pullen und in die eigene Codebasis mergen (lassen).
- Wenn die Installation über das ZIP-Archiv durchgeführt wurde, ist Handarbeit angesagt. :-)
- Die Schemaskripte aus dem Punkt Einrichtung-Datenbank ausführen.
- Die Inhalte der Datei
app/Config/config.php.default
mit derapp/Config/config.php
vergleichen und neue Konfigurationspunkte übertragen. - Der Cache in
app/tmp/cache/models
undapp/tmp/cache/persistent
leeren. - Die Datei
app/webroot/js/stammtisch/data.js
leeren. - Wenn dieses Wiki bei den Einrichtung heruntergeladen wurde, in dessen Wurzelverzeichnis wechseln und ebenfalls
git pull origin
ausführen.