For information on editing, see the description of Plan 9 wiki syntax.
The Plan 9 web server httpd(8) has some interesting features. It also kept me scratching my head all day getting it going so I thought I'd share a few things. When the httpd runs it sets itself to user "none" and runs newns(2) and then addns(2) using the namespace provided on the command line (or /lib/namespace.httpd if you didn't give it a -n). This means that whatever you supply for the namespace file has to exist in the new namespace. ip/httpd/httpd -n /cfg/$sysname/namespace.httpd was my solution. While experimenting I had the problem of how to kill a process owned by none, here's how to do it : ! p = `{ps | grep httpd} ! chmod 777 /proc/$p(2) ^/note && echo kill > /proc/$p(2) ^/note I'm assuming only one program called httpd is running, of course. For extra fun ip/httpd/mirror was missing from my distribution (Sept 07) and I didn't notice for ages. momo here is a Unix box running u9fs -a none and I'm using a terminal to play on so termrc it is cat /cfg/$sysname/termrc ! fn start_httpd { ! rfork ! bind /n/momo/home/plan9/httpd /usr ! bind /usr/httpd.rewrite /sys/lib/httpd.rewrite ! ip/httpd/httpd -n /cfg/$sysname/namespace.httpd ! } ! ! 9fs momo ! ! start_httpd & The folder /n/momo/home/plan9/httpd has in it : ! bin/ ! web/ ! httpd.rewrite cat /cfg/$sysname/namespace.httpd ! mount /srv/momo /n/momo ! bind /n/momo/home/plan9/httpd/bin /bin/ip/httpd So now my /magic/ files are kept on momo so I don't pollute /bin/ip/httpd I also found a bug with vhosts and submitted a patch(1) httpd-post-port because vhosts running on non-default port were impossible as the :port was being stripped when the vhosts were parsed but not when matching http requests. Leaving the :port on is the correct behaviour according to RFC 2616 14.23.