Unter anderem, weil ich diverse Dinge lernen und vor allem kennenlernen wollte, habe ich diese kleine Webapp geschrieben und sie in Ermangelung von Kreativität Sinple (ja, mit n) genannt. Einen Screenshot gibt's im Anhang.
Voraussetzungen¶
Installation¶
Man checkt den Code aus dem Repository aus.
1 | git clone https://code.google.com/p/sinple/ |
Folgende Dateien und Ordner befinden sich nun im Ordner sinple
:
sinple.py # Programmlogik, die sich u.a. um das HTTP-Gedöns kümmert settings.py # Einstellungen - selbsterklärend sinple # Skript zum Erstellen von Notizen mit den entsprechenden Rechten sinple.wsgi # WSGI-Skript für das Zusammenspiel mit Apache apache-virtualhost-file # Beispiel-Konfiguration für einen VirtualHost notes/ # Standardverzeichnis für Notizen 2011-09-05_22-43-34.note # -\ 2011-09-05_23-51-51.note # --\ 2011-09-06_00-49-32.note # ---> Beispielnotizen first.note # --/ second.note # -/ static/ # Verzeichnis für Dinge wie Bilder, Stylesheet- und JavaScript-Dateien less.js # siehe http://lesscss.org/ style.less # less-Stylesheet templates/ # Verzeichnis für Templates, die in der Flask-Anwendung verwendet werden index.html # Haupt-Template
Aus Sicherheitsgründen sollte der Server mit einem eigenen Nutzer laufen. Dieser kann zum Beispiel wie folgt angelegt werden:
1 | sudo useradd -r sinple # -r, damit der Nutzer nicht beim Login auftaucht |
Jetzt müssen dem Ordner notes
noch Schreibrechte für den neuen Nutzer gegeben werden. Das geschieht am besten, indem man die Gruppe ändert. Außerdem sollten die Notizen entsprechende Rechte haben, damit Besitzer und Gruppe sie schreiben können. Letztendlich muss noch die set-group-ID für Benutzer und Gruppe gesetzt werden, damit neu erstellte Dateien immer den Benutzer und die Gruppe haben, die auch der Ordner notes
hat. Das alles kann wie folgt erledigt werden:
1 2 3 4 5 6 | # Gruppe des Notizordners ändern sudo chgrp -R sinple notes/ # alle Notizen für Besitzer und Gruppe schreibbar machen chmod 664 notes/* # Schreibrechte und set-group-ID des Notizordners anpassen sudo chmod ug+ws notes/ |
Benutzung¶
Es gibt zwei Optionen, die Webapp zu starten:
1. Option¶
Man startet den Server, der von Flask zur Verfügung gestellt wird, als Nutzer sinple
:
1 | sudo -u sinple python sinple.py |
Dieser ist nun unter der Adresse http://0.0.0.0:5000/ erreichbar und somit von außen sichtbar. Host und Port für diese Option können in der Datei settings.py
geändert werden.
2. Option¶
Man schaltet Apache vor die Webapp und lässt sie mithilfe von WSGI ausführen. Dazu muss ein virtueller Host eingerichtet werden. Eine Beispielkonfiguration befindet sich in der Datei apache-virtualhost-file
. Dort müssen nur die Pfade anpasst werden und dafür gesorgt werden, dass der Nutzer sinple
Leserechte in diesen hat. Bei dieser Option ist die Webapp unter http://localhost/sinple/, aber auch von außen erreichbar.
weitere Anmerkungen¶
Notizen erstellen und bearbeiten¶
Ich habe diese Webapp mit der Idee geschrieben, dass Notizen sowohl über das Webinterface als auch durch den Benutzer erstellt und bearbeitet werden können sollen. Gesagt werden muss allerdings, dass Notizen bislang leider nicht mit einem normalen Editor erstellt werden können, da ihnen dann die Schreibrechte für die Gruppe fehlen. Somit könnte die Webapp nicht die Notizen, die der Benutzer erstellt hat, bearbeiten. Workaround ist das beiliegende Skript, welches einfach nur die umask verändert und dann den Standardeditor öffnet. Es sollte natürlich im PATH
sein und mit Dateinamen von Notizen als Argumente im Notizordner auf der Konsole ausgeführt werden, also beispielsweise so:
1 2 3 4 | # in den Notizordner wechseln cd notes/ # zwei Notizen ggf. erstellen und bearbeiten sinple foo.note bar.note |
Server¶
Die Webapp kann in beiden Optionen natürlich auch mit dem eigenen Nutzer laufen. Dadurch erspart man sich den gesamten letzten Teil der Installation ab und inklusive der Erstellung des neuen Nutzers. Außerdem können Notizen dann mit jedem beliebigen Editor (auch grafischen) erstellt und bearbeitet werden. Allerdings geht man so natürlich ein Sicherheitsrisiko ein.