Benutzer-Werkzeuge

Webseiten-Werkzeuge


cool:hoodie
Alle Anleitungen in diesem Wiki beziehen sich auf Uberspace 6. Die Dokumentation für U7 findest du im neuen Manual. Im Lab findest du außerdem von Usern erstellte Anleitungen für verschiedene Projekte.

Uberspace 6 basiert auf CentOS 6, welches ab Ende 2020 keine Updates mehr bekommt. Wir raten dir, bis dahin auf Uberspace 7 umzuziehen. Eine Anleitung zum Umzug findest Du hier: uberspace2uberspace

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen gezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung
cool:hoodie [2014/08/13 17:29]
uber kleine Schönheitskorrektur
cool:hoodie [2020/04/14 16:43] (aktuell)
uberspace
Zeile 1: Zeile 1:
-Mit [[http://​hood.ie|Hoodie]] kannst du komplette Webapps in kürzester Zeit bauenohne dir Gedanken um das Backend und Datenbanken machen zu müssenDie Entwickler beschreiben Hoodie als //Offline First and noBackend architecture for frontend-only web apps on the web and on iOS//. Mit ein paar Handgriffen kannst du Hoodie auch auf deinem Uberspace zum Laufen bringen:+Diese Anleitung ist obsoletda Uberspace 6 Ende 2020 ausläuft (siehe oben).
  
-==== Vorarbeit ==== 
  
-Da wir im Laufe der Installation einige Dateien ändern und anlegen müssen, setzen wir hier mal ein paar Variablen. Das hat den Vorteil, dass du über weniger Fallstricke stolpern kannst und außerdem musst du weniger Dateien editieren - sparst also auch noch Zeit. 
-=== Projektname === 
- 
-Nennen wir die App hier im Beispiel mal ''​hoodieApp''​. Den Namen kannst du natürlich anpassen wie du magst. 
- 
-<code bash> 
-[mareike@neon ~]$ HOODIE_PROJECT="​hoodieApp"​ 
-</​code>​ 
- 
-=== Ports === 
- 
-Wir brauchen zwei freie [[https://​wiki.uberspace.de/​system:​ports|Ports]],​ einen für das Admin-Interface und einen für die eigentliche App. Die Ports sind später nach außen nicht erreichbar und werden nur für die Installation benötigt. Mit den folgenden Befehlen kannst du dir zwei Ports generieren lassen, der Aufruf prüft praktischerweise auch gleich, ob die Ports noch frei sind: 
- 
-<code bash> 
-[mareike@neon ~]$ HOODIE_WWW_PORT=$(( $RANDOM % 4535 + 61000)); netstat -tulpen | grep $HOODIE_WWW_PORT && echo "​versuch'​s nochmal"​ 
-[mareike@neon ~]$ HOODIE_ADMIN_PORT=$(( $RANDOM % 4535 + 61000)); netstat -tulpen | grep $HOODIE_ADMIN_PORT && echo "​versuch'​s nochmal"​ 
-</​code>​ 
- 
-... wenn hier keine Ausgabe ''​versuch'​s nochmal''​ erscheint, passt alles. Wenn ''​versuch'​s nochmal''​ kommt - versuch'​s noch mal :-) 
- 
-=== Passwort === 
- 
-... und wir brauchen noch ein Passwort für den CouchDB-Benutzer,​ das generieren wir einfach auch noch, wo wir schon mal dabei sind: 
- 
-<code bash> 
-[mareike@neon ~]$ HOODIE_PASS=$(apg -n 1) 
-</​code>​ 
- 
-=== Ausgabe === 
- 
-Alles generiert? Wunderbar. Jetzt musst du dir nur noch notieren, was du denn da überhaupt generiert hast :-) Also Zettel und Stift (oder Zwischenablage und Editor) und los! 
- 
-<code bash> 
-[mareike@neon ~]$ clear && echo "​Username:​ admin" && echo "​Passwort:​ $HOODIE_PASS"​ && echo "​www-Port:​ $HOODIE_WWW_PORT"​ && echo "​admin-Port:​ $HOODIE_ADMIN_PORT"​ && echo "​Service:​ $HOODIE_PROJECT"​ 
-</​code>​ 
- 
-Dabei sollte dann etwas wie ... 
- 
-<code bash> 
-Username: admin 
-Passwort: <​deinPasswort>​ 
-www-Port: <​deinWWWPort>​ 
-admin-Port: <​deinAdminPort>​ 
-Service: <​deinAppName>​ 
-[mareike@neon ~]$  
-</​code>​ 
- 
-... heraus kommen. 
- 
-==== daemontools einrichten ==== 
- 
-Damit Hoodie persistent läuft und nach einem Absturz oder Serverneustart (oder, oder, oder ...) wieder sauber gestartet wird, bietet es sich an, die [[https://​wiki.uberspace.de/​system:​daemontools|daemontools]] zu nutzen. Wenn du noch keine anderen Dienste benutzt, musst du zuerst das ''​uberspace-setup-svscan''​-Script ausführen: 
- 
-<code bash> 
-[mareike@neon ~]$ uberspace-setup-svscan 
-Creating the /​etc/​run-svscan-mareike/​run script 
-Symlinking /​etc/​run-svscan-mareike to /​service/​svscan-mareike to start the service 
-Waiting for the service to start ... 1 2 3 4 started! 
- 
-Congratulations - your personal ~/service directory is now ready to use! 
-</​code>​ 
- 
-... das sieht doch gut aus! 
- 
-==== CouchDB einrichten ==== 
- 
-Als nächstes richten wir die [[https://​wiki.uberspace.de/​database:​couchdb|CouchDB]] ein, in der Hoodie alle Daten speichert. Auch dafür haben wir ein handliches Script, was uns die Arbeit erleichtert:​ 
- 
-<code bash> 
-[mareike@neon ~]$ uberspace-setup-couchdb ​ 
-Creating the ~/couchdb database directory 
-Creating the ~/​etc/​run-couchdb/​run service run script 
-Creating the ~/​etc/​run-couchdb/​log/​run logging run script 
-Symlinking ~/​etc/​run-couchdb to ~/​service/​couchdb to start the service 
-Waiting for the service to start ... 1 2 
-Congratulations - You can now reach your dedicated CouchDB installation! 
-Please note that your CouchDB uses the NON-standard port number <​deinPort>​. 
- 
-Hostname: localhost 
- ​Portnum:​ <​deinPort>​ 
-Username: mareike_couchadmin 
-Password: <​deinPasswort>​ 
- 
-Settings: /​home/​mareike/​couchdb.ini 
- ​Logfile:​ /​home/​mareike/​couchdb/​couch.log 
-</​code>​ 
- 
-Soweit, so gut. Da wir den Port später noch brauchen, legen wir uns auch den in eine Variable: 
-<code bash> 
-[mareike@neon ~]$ COUCHDB_PORT=$(cat /​home/​$USER/​couchdb.ini | grep port | cut -d" " -f3) 
-</​code>​ 
- 
-An Vorarbeit hätten wir dann hier alles erledigt. Weiter geht's mit ... 
-==== Hoodie einrichten ==== 
- 
-Aber bevor wir etwas einrichten können, müssen wir erst mal ... 
- 
-=== Hoodie runterladen === 
- 
-Nichts leichter als das - ''​npm'',​ der [[https://​wiki.uberspace.de/​development:​nodejs#​npm|Node Package Manager]] hilft weiter und erledigt die Arbeit für uns: 
- 
-== node.js == 
- 
-Falls du mit deinem Uberspace noch nicht mit ''​npm''​ gearbeitet hast, musst du wie auf der ''​nodejs''​-Seite [[https://​wiki.uberspace.de/​development:​nodejs|beschrieben]] eine ''​.npmrc''​-Datei anlegen: 
- 
-<code bash> 
-[mareike@neon ~]$ cat > ~/.npmrc <<​__EOF__ 
-prefix = $HOME 
-umask = 077 
-__EOF__ 
-</​code>​ 
- 
-Erledigt? Gut. Dann kommen wir zur eigentlich Installation:​ 
- 
-== Installation mit npm == 
- 
-Und die ist wirklich einfach: 
- 
-<code bash> 
-[mareike@neon ~]$ npm install -g hoodie-cli 
-</​code>​ 
- 
-Das war's schon. Nun steht dir ''​hoodie''​ auf deinem Uberspace zur Verfügung. 
- 
-=== Hoodie-App anlegen === 
- 
-Als nächstes legen wir ein Projekt an, da wir ganz am Anfang die Variable ''​$HOODIE_PROJECT''​ gesetzt haben, brauchen wir uns hier um nichts weiter kümmern: 
- 
-<​code>​ 
-[mareike@neon ~]$ hoodie new $HOODIE_PROJECT 
- 
-.d$b.  .d$b.  .d$$$$$$b. ​   .d$$$$$$b. ​ .d$$$$$$b. ​ .d$b..d$$$$$$$$b. 
-$$$$$..$$$$$.$$$$$$$$$$$b .$$$$$$$$$$$b $$$$$$$$$$b $$$$$$$$$$$$$$$P'​ 
-$$$$$$$$$$$$d$$$$$$$$$$$$bd$$$$$$$$$$$$b$$$$$$$$$$$b$$$$$$$$$$$$$$$b. 
-$$$$$$$$$$$$Q$$$$$$$$$$$$PQ$$$$$$$$$$$$P$$$$$$$$$$$P$$$$$$$$$$$$$$$P'​ 
-$$$$$´`$$$$$'​$$$$$$$$$$$$''​$$$$$$$$$$$$'​$$$$$$$$$$P $$$$$$$$$$$$$$$b. 
-'​Q$P' ​ '​Q$P' ​ '​Q$$$$$$P' ​   '​Q$$$$$$P' ​ '​Q$$$$$$$P ​ '​Q$P''​Q$$$$$$$$P'​ 
- 
-Version: 0.6.0 (node v0.10.30, npm 1.5.0-alpha-4,​ platform: linux) 
- 
-[hoodie] Fetching template via npm. This may take some time. 
-</​code>​ 
- 
-Zeit für einen Kaffee oder Tee. 
-=== Hoodie konfigurieren === 
- 
-Hoodie hätte gerne den Usernamen ''​admin''​ in der ''​CouchDB''​ - das passt also leider nicht mit dem Usernamen, den unser ''​uberspace-setup-couchdb''​-Script angelegt hat. Aber kein Problem, du hast ja deine eigene ''​couchdb.ini''​-Datei und kannst dir dort auch neue Admin-User anlegen. Dazu stoppen wir erst mal den ''​CouchDB''​-Service:​ 
- 
-<code bash> 
-[mareike@neon ~]$ svc -d ~/​service/​couchdb 
-</​code>​ 
- 
-Und nun kannst du die ''​~/​couchdb.ini''​ anpassen. Das geht z.B. mit: 
- 
-<code bash> 
-[mareike@neon ~]$ sed -i "/​\[admins\]/​a admin = $HOODIE_PASS"​ ~/​couchdb.ini 
-</​code>​ 
- 
-Der Befehl sucht nach der Zeile ''​[admins]''​ und fügt direkt darunter eine neue Zeile ein: ''​admin = $HOODIE_PASS'',​ wieder zahlen sich die Variablen vom Anfang aus. 
- 
-Außerdem mag hoodie die Option ''​require_valid_user''​ nicht, also setzen wir den auch noch von ''​true''​ auf ''​false''​ (wir haben ja eh schon einen Admin-User, die Sicherheit ist also gewährleistet). Auch das geht am schnellsten mit ''​sed'':​ 
- 
-<code bash> 
-[mareike@neon ~]$ sed -i "​s/​require_valid_user = true/​require_valid_user = false/​g"​ ~/​couchdb.ini 
-</​code>​ 
- 
-Nachdem du die Konfiguration angepasst hast, kannst du den Service wieder starten... 
- 
-<code bash> 
-[mareike@neon ~]$ svc -u ~/​service/​couchdb ​ 
-</​code>​ 
- 
-... und zur Sicherheit mal einen Blick in das Log werfen: 
- 
-<code bash> 
-[mareike@neon ~]$ tail ~/​service/​couchdb/​log/​main/​current | tai64nlocal 
-2014-08-05 18:​01:​49.109147500 Apache CouchDB 1.5.0 (LogLevel=info) is starting. 
-2014-08-05 18:​01:​49.251196500 Apache CouchDB has started. Time to relax. 
-2014-08-05 18:​01:​49.251450500 [info] [<​0.31.0>​] Apache CouchDB has started on http://​127.0.0.1:<​deinPort>/​ 
-</​code>​ 
- 
-Na das sieht doch gut aus. 
- 
-== Service einrichten == 
- 
-Nachdem wir anfangs mit ''​uberspace-setup-svscan''​ die daemontools installiert haben, können wir nun einen Daemon für die eben erstellte Hoodie-App einrichten. Das geht z.B. so: 
- 
-<code bash> 
-[mareike@neon ~]$ mkdir ~/​etc/​run-$HOODIE_PROJECT 
-</​code>​ 
- 
-Herzstück eines jeden Daemons ist die ''​run''​-Datei,​ die sollte folgendermaßen aussehen. Auch hier greifen uns die Variablen, die wir ganz am Anfang gesetzt haben, unter die Arme (den folgenden Absatz kannst du einfach so per copy und paste übernehmen):​ 
- 
-<code bash> 
-[mareike@neon ~]$ cat <<​__EOF__ > ~/​etc/​run-$HOODIE_PROJECT/​run 
-#!/bin/sh 
- 
-export HOME="/​home/​$USER/​$HOODIE_PROJECT"​ 
-cd \$HOME 
- 
-export COUCH_URL="​http://​127.0.0.1:​$COUCHDB_PORT"​ 
-export HOODIE_ADMIN_USER="​admin"​ 
-export HOODIE_ADMIN_PASS="​$HOODIE_PASS"​ 
-export HOODIE_WWW_PORT="​$HOODIE_WWW_PORT"​ 
-export HOODIE_ADMIN_PORT="​$HOODIE_ADMIN_PORT"​ 
- 
-# Include the user-specific profile 
-. $HOME/​.bash_profile 
- 
-# Now let's go! 
- 
-exec node \$HOME/​node_modules/​hoodie-server/​bin/​start --custom-ports \$HOODIE_WWW_PORT,​\$HOODIE_ADMIN_PORT,​9999 2>&1 
-__EOF__ 
-</​code>​ 
- 
-Die Datei braucht noch die korrekten Rechte und wir kümmern uns gleich mal um das Logging: 
- 
-<code bash> 
-[mareike@neon ~]$ chmod +x ~/​etc/​run-$HOODIE_PROJECT/​run 
-[mareike@neon ~]$ mkdir ~/​etc/​run-$HOODIE_PROJECT/​log 
-</​code>​ 
- 
-Auch das Logging braucht eine ''​run''​-Datei ... 
- 
-<code bash> 
-[mareike@neon ~]$ cat <<​__EOF__ > ~/​etc/​run-$HOODIE_PROJECT/​log/​run 
-#!/bin/sh 
-exec multilog t ./main 
-__EOF__ 
-</​code>​ 
- 
-... und die korrekten Rechte: 
- 
-<code bash> 
-[mareike@neon ~]$ chmod +x ~/​etc/​run-$HOODIE_PROJECT/​log/​run 
-</​code>​ 
- 
-Nachdem alles soweit eingerichtet ist, kannst du den Daemon nun in dein ''​service''​-Verzeichnis linken und damit aktivieren: 
- 
-<code bash> 
-[mareike@neon ~]$ ln -s ~/​etc/​run-$HOODIE_PROJECT ~/​service/​$HOODIE_PROJECT 
-</​code>​ 
- 
-... und mal in die Logs gucken: 
- 
-<code bash> 
-[mareike@neon ~]$ tail ~/​service/​$HOODIE_PROJECT/​log/​main/​current | tai64nlocal 
-2014-08-05 18:​16:​50.913686500 Initializing... 
-2014-08-05 18:​16:​50.917305500 Using remote CouchDB: http://​127.0.0.1:<​deinCouchDBPort>​ 
-2014-08-05 18:​16:​50.938513500 Waiting for CouchDB [-*----] SUCCESS ​ 
-2014-08-05 18:​16:​51.422584500 WWW:    http://​127.0.0.1:<​deinWWWPort>​ 
-2014-08-05 18:​16:​51.422842500 Admin: ​ http://​127.0.0.1:<​deinAdminPort>​ 
-2014-08-05 18:​16:​51.481292500 Starting Plugin: '​hoodie-plugin-appconfig'​ 
-2014-08-05 18:​16:​51.482575500 Starting Plugin: '​hoodie-plugin-email'​ 
-2014-08-05 18:​16:​51.483772500 Starting Plugin: '​hoodie-plugin-users'​ 
-2014-08-05 18:​16:​51.499821500 All plugins started. 
-</​code>​ 
- 
-Das sieht doch gut aus! Damit ist der Teil der Arbeit, den du erledigen kannst, abgeschlossen. Fehlt nur noch eins: 
-==== Den Dienst nach außen erreichbar machen ==== 
- 
-Im Gegensatz zu anderen ''​nodejs''​-Anwendungen geht das nicht einfach mit einer [[https://​wiki.uberspace.de/​webserver:​htaccess#​rewriterule_mit_proxy|RewriteRule mit Proxy]] über den Apache, da Hoodie ''​encoded slashes''​ benutzt. Wir müssen deinen Dienst also direkt an unser HTTP(S)-Frontend,​ Pound, anbinden und den Apachen damit umgehen. Dazu schicke uns eine Mail an [[hallo@uberspace.de|hallo@uberspace.de]] mit folgenden Informationen:​ 
- 
-  * Dein Username (das sollte eigentlich klar sein :-)) 
-  * Dein WWW-Port (den solltest du dir ja notiert haben) 
-  * Dein Admin-Port (auch den solltest du dir notiert haben) 
-  * 1. URL für das Admin-Interface ​ 
-  * 2. URL für das WWW-Interface 
- 
-Beide URLs müssen natürlich auf deinen Uberspace aufgeschaltet sein, schaue im Zweifelsfall [[https://​wiki.uberspace.de/​domain:​verwalten|noch mal nach]]. 
-==== Wie geht es weiter? ==== 
- 
-Unser Part bei der Sache ist, wie du Hoodie bei Uberspace zum Laufen bekommst, also sozusagen der administrative Teil. Dein eigener Job ist es nun, Hoodie-Applikationen zu entwickeln - da legen wir dir die [[http://​hood.ie/#​docs|offizielle Dokumentation]] ans Herz. Viel Erfolg! 
cool/hoodie.txt · Zuletzt geändert: 2020/04/14 16:43 von uberspace