53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Setup werc with Plan 9's httpd
 | 
						|
==============================
 | 
						|
 | 
						|
 | 
						|
There are two main options, you can use Russ Cox's magic to cgi translator
 | 
						|
(found in his contrib dir as cgi.c), or you can use the following script which
 | 
						|
while simpler, it also lacks some features at the moment.
 | 
						|
 | 
						|
Thanks to soul9 for the original idea of wrapping werc in a shell script that
 | 
						|
would setup a cgi-like environment!
 | 
						|
 | 
						|
 | 
						|
    #!/bin/rc
 | 
						|
 | 
						|
    SERVER_NAME=$2
 | 
						|
    REQUEST_URI=`{echo $*(15)}
 | 
						|
    REQUEST_URI=$REQUEST_URI(2)
 | 
						|
    REQUEST_URI=/
 | 
						|
    REQUEST_METHOD=$*(16)
 | 
						|
    PLAN9=/
 | 
						|
 | 
						|
 | 
						|
    echo 'HTTP/1.0 200 Ok
 | 
						|
    Connection: close
 | 
						|
    Server: werc/9.9.9' # This is whatever you like
 | 
						|
 | 
						|
 | 
						|
    cd /usr/web/bin/
 | 
						|
    rfork
 | 
						|
    /bin/rc < ./werc.rc >[2]/usr/glenda/tmp/w/log # Use whatever location you like to log stderr, but make sure it is writable by none.
 | 
						|
 | 
						|
Call this script werc-wrap, and put it in /rc/bin/ip/httpd/
 | 
						|
 | 
						|
Then in your /sys/lib/httpd.rewrite  add a line like:
 | 
						|
 | 
						|
    /w @/magic/werc-wrap
 | 
						|
 | 
						|
And this will run werc for all stuff under /w. Note that apparently httpd is
 | 
						|
incapable of internally remapping the root directory, so until a solution is
 | 
						|
found for this, you will have to keep your site in a sub-directory of the web
 | 
						|
server root.
 | 
						|
 | 
						|
In your /lib/namespace.httpd you probably will want to add something along the
 | 
						|
following lines to bind the werc directory into the httpd's namespace:
 | 
						|
 | 
						|
    bind -b /usr/glenda/src/werc/ /usr/web/
 | 
						|
    bind /usr/glenda/src/werc/bin/ /usr/web/magic/
 | 
						|
 | 
						|
 | 
						|
**Notes**: This is experimental and work in progress, there are a couple of issues
 | 
						|
with the werc code itself that might need fixing, in particular you will need
 | 
						|
to replace the '%($"extraHeaders%)' in lib/headers.tpl with '% echo
 | 
						|
$"extraHeaders' no clue why.
 |