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.
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
gem update --system
I also had rails fail to install, with
Installing ri documentation for rails-3.0.3... File not found: lib
Which i fixed with rebuilding rdoc:
gem install rdoc-data rdoc-data --install gem rdoc --all --overwrite
Now it's finally time to install and build rails with mysql support (which is how i set my rails application up) and passenger
gem install mysql2 gem install rails gem install passenger
Next, build the passenger apache2 module. I actually killed the install the first time around because
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:
warning: remote HEAD refers to nonexistent ref, unable to checkout.
I don't know how this happened, since other gitosis repos i've created haven't had the same problem, but running
git push --all
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:
* [new branch] master -> master
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.