Panther, Webware, Bootstrap

This post was updated on April 5, 2007 to fix broken links.

Completely geeked-out Mac, Python, web development and systems administration stuff. Skip it if you don’t give a shit about any of these.

If you just want some hardcore, step-by-step instructions on how to get Webware on your Panther box, check ’em out.

It’s not really all that difficult to get Webware/WebKit to run on an OS X box. I first did it… hrm… probably over a year ago, in the days of the Cube. But, even today, it’s fuck-all hard to get the Webware/WebKit application server to launch on boot.

Back in the day, I had a helluva time getting Apple’s StartupItems bullshit to work. I tried and tried, but couldn’t get it; I went through the entire rigmarole with Gregg, but we couldn’t get it. Fast-forward to this week.

After hours of pounding the ever-loving-fuck out of StartupItems over the past two days, I still don’t get it. I tried every imaginable permutation of configurations, scripts, paths, permissions, ownerships, syntactics, and religious pursuits… to no motherfucking avail; shit just wouldn’t launch on boot. Then, almost as an afterthought, I found the “Bootstrap Daemons” info on ADC last night.

Once I changed the startup script called by the /etc/mach_init.d .plist file to use absolute paths (after the first try) the bootstrapped-daemon shit actually worked. Lo and behold: AppServer launches on boot! Yet another extension of Occam’s razor!

But, wait a sec.

There are, currently, two ways to bootstrap your daemon in OS X Panther: 1) Do it system-wide, and it runs as root, or, 2) Do it user-specific so it runs as that user, but only when that user is logged in. At this time, there is no way to make a system-wide, “always on” daemon run as a particular user… other than root.

Additionally, Webware/WebKit doesn’t allow you to hardcode the system user under which its AppServer should be run. Zope does, but that doesn’t matter. What I’m left with is Occam’s razor.

Don’t bootstrap the AppServer; it will not launch on boot; specify a cronjob in the desired user’s crontab to see if the AppServer is running. If it’s not, then launch the mofo already.

That’s not really all that bad a tactic. The AppServer–as a long-running process–takes a shit from time to time.

Any of y’all that have made it this far (probably only Gregg) have any input?