Installing Phusion Passenger on Amazon Linux AMI 1.0
Once again, this is a progression of building out my Amazon Linux AMI, so the pre-requisites might be off, since I've previously installed a number of other things. And once again, this is simply a log of tasks for my own future reference, rather than a build recipe. Maybe this will be useful to someone else as well, so I've gone back and tagged all AMI articles with aws-linux-ami, so you can at least see the history of pre-requisites.
Anyway, this time I'm installing phusion passenger to host the ASP.NET app I ported to Rails last week. The AMI comes with Ruby 1.8.7. I next installed the following repos:
yum install libcurl-devel openssl-devel mysql-devel ruby-devel rubygems
Even tho gems is now installed, it's not current enough for rails, so first thing, upgrade gems
I also had rails fail to install, with
Which i fixed with rebuilding rdoc:
Now it's finally time to install and build rails with mysql support (which is how i set my rails application up) and passenger
Next, build the passenger apache2 module. I actually killed the install the first time around because libcurl-devel
and openssl-devel
were missing. The installer assured me that it would guide me through getting those dependencies resolved, but I wanted to make sure they came in through yum rather than have this installer download and build them from source. Anyway the command was:
This installed flawlessly and ended with instructions to put the following in my apache config:
LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.2
PassengerRuby /usr/bin/ruby
A git diversion
Before getting to the apache setup of my rails app, I ran into this error trying to check the port out from my repo:
I don't know how this happened, since other gitosis repos i've created haven't had the same problem, but running
on my development machine did the job. Apparently it had been pushing changes into the repo, but never set up a branch because that command reported:
Well, fortunately after that all was good :)
Configuring rails in apache
Finally, the apache vhost config was exceedingly simple:
<VirtualHost \*:80>
ServerName www.yourhost.com
DocumentRoot /somewhere/public # <-- be sure to point to 'public'!
<Directory /somewhere/public>
AllowOverride all # <-- relax Apache security settings
Options -MultiViews # <-- MultiViews must be turned off
</Directory>
</VirtualHost>
The important thing is that the DocumentRoot needs to point to the rails public directory not the root of the rails application.
The last task was running
to set up the expected db locally. After that, and an apache restart, the app came up without a hitch.
Of course, while setting all this up, I finally figured out why mod_mono
was leaking semaphores, making all of this likely moot. But i'm glad to have this alternative while I determine whether the mod_mono
behavior is really fixed.