Passenger (mod_rails) released
modrails.com
modrails.com
Also, in virtual private server scenarios RAM may be a hot commodity (slicehost, for instance) -- so in theory this should help you run more rails sites with less RAM, since you won't have to spin up individual mongrel clusters for each domain.
2. "touch tmp/restart.txt" seems like an odd way to signal a restart of your app... what's the reason behind this?
In the author's words (http://www.modrails.com), here are the main features:
- Deployment is only a matter of uploading application files. No Ruby on Rails-specific server configuration required!
- Built on the industry standard Apache web server.
- Allows Ruby on Rails applications to use about 33% less memory, when used in combination with Ruby Enterprise Edition (optional).
- Zero maintenance. No port management, server process monitoring or stale file cleanup required. Errors are automatically recovered whenever possible.
- Designed for performance, stability and security. Passenger should never crash Apache even in case of crashing Rails applications.
- Well-documented, for both system administrators and developers!
What I have been wondering is what happens to the memory footprint? It says somewhere on the site it is reduced by 33% - is that a typical reduction?
Also, if this is like mod_perl, deployment wasn't really as simple as it seemed. The general advice on mod_perl was to proxy requests from your front end 'static' webserver to the mod_perl one, because each apache process had to effectively run a Perl interpreter, giving them a big memory footprint. You don't want to use your expensive mod_perl/ruby processes to serve images etc.
I also think there are other advantages to running expensive processes behind a proxy (I may be wrong on this one), but I think that slow clients tend to tied up the front end process as it streams the data to them.
If you have appServer -> proxy -> slow client, the app server sends the data to the proxy at LAN speed, freeing it to serve another request, and the proxy ties up a process streaming the data to the client.
I am not trying to criticize, I am interested in whether they solved these problems (if they even are problems anymore) and how.
btw, switchpipe is going to rule the world in a few months, the support for all the other frameworks looks awesome.
I don't think SwitchPipe will rule anything, but perhaps once it's up on Github (instead of SVN) and I release the next version, more baby steps can be made. I'd love to make it even more simple somehow, and perhaps port it to a much faster base (probably Python).
If so: - SwitchPipe controls backend app server processes. If an app isn't being used, it doesn't need to be running. - If an app is under heavy demand, I want more instances (up to a limit) to be launched to deal with it. - SwitchPipe deals with all of the port numbers. No port numbers to deal with as a user.
Just some minor points, but with big usability gains.