Wednesday, March 28, 2007

RSLD? A Really Simple Linux Deployment for WebObjects

I was expecting this to be much harder than it was. I read some of the pages out there on getting WebObjects installed onto Linux systems and looking at them just made my eyes cross. WebObjects is just java, isn't it?

I think the hardest part of this whole process was getting the right version of java onto the Linux box. I started with a RedHat-based system with java 1.4 as the default. Getting 1.5 onto it was a bit of a chore. Mac OS X just, you know, has stuff on it already. The Darwin ports stuff is there for other things. But a lot of things are just not that hard. Ok, working 15+ years at Apple may have given me a bit too much familiarity with it, but I doubt it.

Linux is just quirky. It can be nice. But it can also be deeply frustrating.

But, surprisingly, getting WebObjects to work on Linux was not hard.

First, I went to the /System/Library/Frameworks directory on my Mac. Then I just tarred up the Java* frameworks (sans JavaVM and such). Then I ftp-ed them over, created a /System/Library/Frameworks directory on the Linux system and slammed them down.

Then there was the question of what to do about a WOAdaptor. I tend to delete my /Developer/Examples contents on my various systems, so I could not put my hands on the adaptor sources. But then I realized I might not need them. I am not deploying huge apps. Not building a business on it yet. I just wanted to stop trying to deploy WO apps from my laptop.

I had started up my app by doing:
./myApp -WOPort 55555 &

So, I added some lines to the /etc/httpd/conf/httpf.conf file:

ProxyRequests Off
ProxyPass /cgi-bin/WebObjects/myApp.woa http://myHost:55555/cgi-bin/WebObjects/myApp.woa
ProxyPass /WebObjects/myApp.woa http://myHost:55555/cgi-bin/WebObjects/myApp.woa
ProxyPass /WebObjects/myApp/ http://myHost:55555/cgi-bin/WebObjects/myApp.woa
ProxyPassReverse /cgi-bin/WebObjects/myApp.woa/ http://myHost:55555/cgi-bin/WebObjects/myApp.woa/

And it just worked! Sweet. Wait. Hold on a second. I know what you are going to ask. "Does Apple support this?" OMG, I had not thought of that! Do they? Well, you know what. I do not care whether they support it or not! So, do not ask!