PowerBook:~ michael$ cat /Users/michael/public_html/index.html
Hello Forth-Web
Hello Forth-Web
PowerBook:~ michael$
Ok, das Verzeichnis stimmt. Die Test-Indexdatei liegt richtig, kann entziffert werden.
Netpipes faucet wird gestartet. Hier musste der vollständige Pfad angegeben werden, da sudo nicht überall nachschaut.
PowerBook:~/gforth michael$ sudo /opt/local/bin/faucet 81 --in --out ./httpd.fs
Password:
Im browser nun: ''http://127.0.0.1:81/index.html''
Damit wird bei der Rechnereigenen ''URL'' (127.0.0.1) der Port 81 benutzt.
Hier hatte ich einen Tippfehler drin, was zur Fehlermeldung 404 file not found führte: Wer findet den typo? ''http://127.0.0.1/:81/index.html'' :-( Als der weg war gings! :-)
===== Vorspiel =====
Doch bevor das alles so schön ging, gabs Verwirrung. Ich habe gestaunt was man alles falsch machen kann. ;-)
Leicht war es das faucet tool für den Mac zu instalieren.
Quelle: DarwinPorts-1-1.5.0-10.4.dmg
...
Downloaded MacPorts base version 1.600
The MacPorts installation is not outdated and so was not updated
DEBUG: Setting ownership to root
selfupdate done!
[PowerBook:~] michael% sudo port install netpipes
...
PowerBook:~/gforth michael$ sudo /opt/local/bin/faucet http --in --out ./httpd.fs
faucet: error binding stream socket http (Address already in use)
PowerBook:~/gforth michael$
Hm, statt hier ''faucet http'' anzugeben, wurde dann der Port 81 genommen, weil der apple gerade den port 80 nicht her geben wollte - komisch eigentlich. Eigentlich hätte es einfach so gehen sollen:
sudo /opt/local/bin/faucet http --in --out ./httpd.fs
Überlappung mit der Systemsteuerung? - sharing - ja von wem oder was denn? Hm, file sharing und windows sharing mal abgeschaltet -- wofür war das überhaupt an gewesen?
Komische Meldung: "Address already in use" ?? Ja von wem denn? Auch nix in der Aktivitätsanzeigen? Ok, na gut, "alle Prozesse anzeigen" auswählen statt "meine Prozesse" hilft dann schon. ;-) Und da wars dann auch zu sehen, faucet lief 2x für den root. Aha, ein Prozess war übrig geblieben beim herumprobieren. Und war nicht ordentlich beendet worden - einfach das Terminalfenster zumachen reicht nicht, der Prozess geht trotzdem weiter. Das ''ctrl-C'' um das ''faucet'' zu benden wäre schon nötig gewesen.
===== Richtige httpd.fs Version? =====
Das die Version vom httpd.fs, die mit meinem gforth-0.6.2 vor einiger Zeit mal gekommen war, es so nicht mehr tun wollte, war im nachhinein eigentlich verständlich. Ulli schickte seine neuere Version, die lief dann auch durch. Allerdings mussten auch da Anpassungen vorgenommen werden.
In der älteren Version war das Wort ''compact-filename'' in der Definition vom''rework-htmldir'' dem gforth nicht (mehr?) bekannt gewesen. In Ullis Version wurde an der Stelle etwas anderes benutzt. Hier gilt es also wirklich Versionsunterschiede in den Paketen zu beachten. So sah die Fehlermeldung aus:
PowerBook:~/gforth michael$ gforth ./httpd.fs
in file included from *the terminal*:0
httpd.fs:119: Undefined word
htmldir $! htmldir $@ compact-filename htmldir $!len drop
^^^^^^^^^^^^^^^^
Backtrace:
$100CDCC throw
$10187F0 no.extensions
Außerdem ging es in meiner Version des httpd.fs nicht weiter in der Zeile:
''s" /etc/mime.types" mime-read''
PowerBook:~/gforth michael$ gforth ./httpd.fs
in file included from *the terminal*:0
httpd.fs:188: No such file or directory
s" /etc/mime.types" mime-read
^^^^^^^^^
Backtrace:
$1027D8C throw
Der work around war:
s" /etc/mime.types" ' mime-read catch [IF] 2drop
\ no /etc/mime.types found on this machine,
\ generating the most important types:
s" text/html" transparent: html
s" image/gif" transparent: gif
s" image/png" transparent: png
s" image/jpg" transparent: jpg
[THEN]
So dann musste die letzte Zeile im httpd.fs auskommentiert werden, sonst versucht gforth den proxy selbst zu machen. Es soll aber ja das ''faucet'' verwendet werden, so dass der Standard-output und Standard-input des gforth verwendet werden können:
\ proxy auskommentiert; wird per faucet von netpipes gemacht. mk10.05.08
\ include ./proxy.fs
Und damit gings dann. Das ersehnte "Hello Forth-Web" erschien im browserfenster.
Hier noch ein Test um das httpd.fs zu prüfen:
PowerBook:~/gforth michael$ ./httpd.fs
qwert
HTTP/1.1 404 Not Found
Server: Gforth httpd/0.1 (unix)
Connection: close
Content-Type: text/html
404 Not Found
Not Found
The requested URL /nosuchfile
was not found on this server
Gforth httpd 0.1
PowerBook:~/gforth michael$
Der Test, das Kommando ''./httpd.fs'' direkt auszuführen, gelang dann auch, als das file wie beschreiben abgewandelt worden war. Gforth startete den web-server korrekt. Nach einer Dummyeingabe ''qwert'' gefolgt von zwei Leerzeilen beendete Gforth mit seiner Fehlermeldung seinen web-server so wie es sein sollte, ok.
Und das hier ist auch eine Stelle im httpd.fs die natürlich passend gemacht werden muss:
Variable DocumentRoot s" /Users/michael/public_html/" DocumentRoot $!
Variable UserDir s" /Users/michael/public_html/" UserDir $!
In das Verzeichnis ''public_html'' kommt das ''index.html'' hin, das angezeigt werden soll, sonst tut sich ja nix. (Das index.thml file im .html-data zu verstecken macht in der Probephase keinen Sinn und wurde nun wieder entfernt.)
So, das wars an Notizen zu dem Event. Möge es nützlich sein.
Michael