staging.inyokaproject.org

Sinple - kleine Notiz-Webapp

Status: Ungelöst | Ubuntu-Version: Ubuntu 11.04 (Natty Narwhal)
Antworten |

dAnjou

Avatar von dAnjou

Anmeldungsdatum:
8. Oktober 2007

Beiträge: 872

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

  • Flask (ab Maverick als Paket python-flask in den Quellen)

  • optional, aber empfehlenswert: Apache + mod_wsgi (als Paket libapache2-mod-wsgi in den Quellen)

  • nur zur Installation: git

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.

Bilder

randombits

Anmeldungsdatum:
14. Januar 2009

Beiträge: Zähle...

Stell doch mal die App irgendwo ins Netz, damit man damit rumspielen kann! Obwohl mich Deine WebApp schon interessieren würde, bin ich ehrlich gesagt zu faul alles erst auf meinem Rechner zu installieren. Ich könnte mir vorstellen, dass es anderen ähnlich geht. Also, wenn Du Feedback haben willst, mache es den Leuten ein bisschen einfacher. ☺

VG, rb

dAnjou

(Themenstarter)
Avatar von dAnjou

Anmeldungsdatum:
8. Oktober 2007

Beiträge: 872

randombits schrieb:

Stell doch mal die App irgendwo ins Netz, damit man damit rumspielen kann! Obwohl mich Deine WebApp schon interessieren würde, bin ich ehrlich gesagt zu faul alles erst auf meinem Rechner zu installieren. Ich könnte mir vorstellen, dass es anderen ähnlich geht. Also, wenn Du Feedback haben willst, mache es den Leuten ein bisschen einfacher. ☺

VG, rb

Da hast du schon recht, aber ich weiß nicht wirklich, wo ich das machen könnte. Webspace mit Python ist selten. Mal sehen, vielleicht greif ich mir von der Arbeit einen Server.

Übrigens hier noch eine Quick'n'Dirty-Installation:

1
2
3
4
sudo apt-get install python-flask
git clone https://code.google.com/p/sinple/
cd sinple/
python sinple.py
Antworten |