I've been watching some screen-cast stuff my buddy at Pivotal lent me and the first thing to do was to install the stuff. Looks like it's pretty much dominated by people that develop on their Mac, then push apps to some public Rails hosting company. That's fine but I have a hankerin to install in my own CentOS 5 environment. It was actually a lot more tinkering than it should be, which is weird. So, I figured I'd better lay it out so I don't forget how it's done. Hopefully this'll help others. The latest version of ruby comes with ruby gems, the ruby package manager. So you don't need to install that separately.
Something that is interesting to note, Passenger is really mod_ruby - an apache module. They don't call it mod_ruby but that's what it is. Similar in theory to mod_perl and mod_php.
You'll get the latest stable ruby as of this writing (ruby-1.9.2-p136) + rails 3.0.3.
Another note, I'm using MySQL as my back end database but to do default 'bundle installs', you need sqlite so I'm installing that as well.
# # Install deps # Install the latest version of Ruby and Rails and Git to run in Apache + Passenger. # Includes MySQL and sqlite. yum -y install httpd zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel wget ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz tar -xvf ruby-1.9.2-p136.tar.gz cd ruby-1.9.2-p136 ./configure --enable-shared --enable-pthread make && make install cd ext/zlib ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib64 cd ../.. make make install ruby --version # Installing sqlite wget http://www.sqlite.org/sqlite-autoconf-3070400.tar.gz tar -zxf sqlite-autoconf-3070400.tar.gz cd sqlite-autoconf-3070400 ./configure && make && make install gem install rails gem install passenger gem install mysql -- --with-mysql-conf=/usr/bin/mysql --with-mysql-lib=/usr/lib64/mysql wget http://kernel.org/pub/software/scm/git/git-126.96.36.199.tar.bz2 tar xvf git*.* cd git* make prefix=/usr/local all make prefix=/usr/local install # run this by hand because you have to answer some questions. # passenger-install-apache2-module
Next, you'll want to configure a hosting environment with a custom http config:
<VirtualHost *:80> ServerName www.domain.com DocumentRoot /opt/rails/myapp/public <Directory /opt/rails/myapp/public> Allow from all Options -MultiViews </Directory> </VirtualHost>