DE:FOSSGIS/Server/Rules
Projekte, die auf den FOSSGIS-Servern laufen sollten einige Regeln beachten. Das macht die Zusammenarbeit zwischen den Projekten einfacher und erleichtert die Arbeit der Admins. Diese Regeln sind aber nicht in Stein gemeisselt. Wenn eine Regel irgendwo keinen Sinn macht, dann besprecht das am besten auf der Mailingliste.
Wichtig bei den Projekten ist, dass sie nicht nur der private Spielplatz einige User sind, sondern mittelfristig auch von der Community gemeinsam getragen werden können. Dazu ist es aber nötig, das auch mehr Leute mitmachen können und dass man sich gegenseitig helfen kann. Das soll durch ein bischen Struktur unterstützt werden.
Dateisystem
Für jedes Projekt wird unter /osm/PROJEKTNAME ein Verzeichnis angelegt. Alle Dateien, die zu diesem Projekt gehören, gehören hier rein. Das gilt auch für Logfiles, Webseiten, usw. Alle Dateien sollten der Gruppe osm zugeteilt sein. Alle Dateien und Verzeichnisse müssen für alle lesbar sein (a+r), schreibbar nur für den User und die Gruppe, nicht für die Allgemeinheit (ug+w, o-w).
Wie ein Projekt sich innerhalb seines Dateisystembereiches organisiert, bleibt dem Projekt überlassen. Auf jeden Fall muss es auf der obersten Ebene eine Datei README geben (siehe unten).
Es empfiehlt sich eine Aufteilung der Dateien zu machen nach solchen, die mehr oder weniger statisch sind und solchen, die sich häufig und automatisiert ändern. Dateien, die sich nur ändern, wenn man sie manuell editiert, sollten in ein Versionsverwaltungssystem (wie Subversion oder Git) eingecheckt werden.
Eine weitere Aufteilung könnte z.B. so aussehen:
Verzeichnis/Datei | Bedeutung |
---|---|
/osm/PROJEKTNAME | Projekt-Verzeichnis |
/osm/PROJEKTNAME/README | Projekt-Beschreibung |
/osm/PROJEKTNAME/PROJEKTNAME | Hier liegen alle Dateien, die aus der Versionsverwaltung ausgecheckt wurden. |
/osm/PROJEKTNAME/bin | Programme und Skripte |
/osm/PROJEKTNAME/log | Logdateien |
/osm/PROJEKTNAME/web | Webseiten |
/osm/PROJEKTNAME/tmp | Temporäre Dateien |
/osm/PROJEKTNAME/download | Verzeichnis für den Download-Server (siehe unten) |
Wenn, wie empfohlen, eine Versionsverwaltung verwendet wird, dann können Dateien wie README und Verzeichnisse wie bin auch in diesen Bereich verlinkt werden.
Wenn man nur "mal eben" privat etwas testen will, was zu keinem Projekt gehört, dann gehören die passenden Dateien dazu ins eigene Home-Verzeichnis.
In der Regel werden außerhalb von /osm und /home sonst keine Dateien angelegt, z.B. auch nicht in /usr/local. Ausnahmen gibt es, wenn das System bestimmte Dateien an bestimmten Orten erwartet. Das können sein:
- Webserver-Konfiguration
- Webserver-Logfiles
- Cronjobs
Ansonsten sollte das Projekt ohne "externe" Dateien auskommen, insbesondere sollte es nicht von Dateien in dem Home-Verzeichnissen einzelner User abhängen.
Datenbanken
Auf allen FOSSGIS-Servern gibt es eine PostgreSQL-Datenbank und, wenn nötig, auch eine MySQL. Die Server werden von verschiedenen Projekten gemeinsam benutzt. Projekte sollten bevorzugt die PostgreSQL verwenden, weil sie mit der PostGIS-Erweiterung geographische Daten besser unterstützt als die MySQL. Wenn Software aber besser mit der MySQL läuft, geht das auch.
Auf Anfrage an die Admins, bekommt ihr Accounts für den gewünschte Datenbank-Server eingerichtet. Datenbanken darin könnt ihr dann selbst einrichten. Sie sollten nach dem Projektnamen heißen. Wenn ihr mehrere Datenbanken braucht, dann sollten sie mit den Projektnamen anfangen. Testdatenbanken, die nicht länger leben müssen, sollten mit test_ anfangen.
Software
Projekte sollten alle benötigte Software in genau der Version, die sie brauchen, in ihrem eigenen Verzeichnis installieren. Ausnahme ist Standard-Software, die vom Admin auf Anfrage per apt-get install installiert wird. Software, die von verschiedenen Projekten genutzt wird, wie z.B. Osmosis, sollte trotzdem von jedem Projekt selbst installiert werden, weil sonst keiner sein Projekt updaten kann, ohne auf andere Rücksicht zu nehmen.
README
Jedes Projekt muss unter /osm/PROJEKTNAME/README einige Dinge über das Projekt beschreiben:
- Wo liegen welche Dateien?
- Welche Datenbank(en) wird/werden verwendet?
- Wie ist das Projekt im Internet erreichbar?
- Link zu weiterführenden Informationen, wie z.B. Wikiseiten
- Informationen zur Lizenz (welche Open-Source-Lizenz wird verwendet?)
- Wo liegt der Source-Code?
- Welche cronjobs werden verwendet?
- Welche langlaufenden daemons werden verwendet?
Das README ist vorallem für Admins und andere auf dem Server gedacht, um sich schnell einen Überblick zu verschaffen, was da so läuft und wo man ggf. eingreifen kann, wenn etwas schiefgeht und niemand erreichbar ist, der sich mit dem Projekt auskennt.
Domain
Für Projekte, die eine eigene Webseite haben, wird ein Domainname/Rechnername PROJEKTNAME.openstreetmap.de von den Admins eingerichtet. Darunter ist das Projekt dann zu erreichen. Durch den eigenen Domainnamen ist es ggf. leichter, das Projekt auf einen anderen Rechner umzuziehen. (Ausnahme siehe "Download-Server" unten.)
Derzeit gibt es noch einige Projekte, die unter dev.openstreetmap.de/PROJEKTNAME erreichbar sind. Das soll mittelfristig umgestellt werden.
Download-Server
Viele Projekt generieren sehr große Dateien und bieten die zum Download an (z.B. Garmin-Karten und dergl.). Diese Dateien sollten nicht auf den "normalen" Webserver des Projektes, sondern auf dem Download-Server abgelegt werden. Damit wird es einfacher, diese Dateien zu mirrorn (also auf andere Server zu kopieren, von denen die User die Dateien dann runterladen können).
Um die Dateien über den Download-Server zugreifbar zu machen, werden sie im Verzeichnis /osm/PROJEKTNAME/download abgelegt. Dieses Verzeichnis wird dann von /osm/download/web/PROJEKTNAME verlinkt.
Der Download-Server ist unter download.openstreetmap.de zu erreichen.
Infrastrukturprojekte
Manchmal gibt es Dinge, die man für mehrere Projekte braucht und nicht doppelt machen will, z.B. die Bereitstellung von aktuellen Planet-Extrakten. Sowas wird dann als "Infrastrukturprojekt" eingestuft und quasi wie jedes andere Projekt auch behandelt. D.h. es bekommt ein Unterverzeichnis in /osm usw.