I installed Redmine v0.9.4 on a 32-bit CentOS 5.5 box. The following versions were used:
* Ruby v1.8.7
* RubyGems 1.3.7
* Rails v2.3.5
* Passenger v2.2.14
You'll need a MySQL database ready, so set it up and make a note of the username and password. There are quite a few steps involved, so let's go!
## Pre-Flight
yum install httpd-devel openssl-devel zlib-devel gcc gcc-c++ curl-devel expat-devel gettext-devel ImageMagick ImageMagick-devel mysql-devel
You *may* have issues with `mysql-devel`. In this case,
yum remove mysql
yum install mysql mysql-devel mysql-server
## Step 1: Compile and Install Ruby
The FTP site is at
wget ftp://ftp.ruby-lang.org//pub/ruby/1.8/ruby-1.8.7.tar.gz
tar -xzvf ruby-1.8.7.tar.gz
sudo ./configure --enable-shared --enable-pthread
make
make install
The weird thing is that you now have to tell Ruby about `zlibs` and re-compile. In the compilation folder:
cd ext/zlib
ruby extconf.rb --with-zlib-include=/usr/include --with-zlib-lib=/usr/lib
cd ../../
sudo make
sudo make install
Test this:
[root@pdb-d rubygems-1.3.7]# ruby --version
ruby 1.8.7 (2009-06-12 patchlevel 174) [i686-linux]
## Step 2: Install [RubyGems](http://rubygems.org/pages/download)
wget http://production.cf.rubygems.org/rubygems/rubygems-1.3.7.tgz
sudo tar xzvf rubygems-1.3.7.tgz
cd rubygems-1.3.7
sudo ruby setup.rb
Now check with:
[root@pdb-d rubygems-1.3.7]# gem -v
1.3.7
## Step 3: Install Rails
Note the version! Redmine requires Rails 2.3.5. So:
gem install rails -v=2.3.5
## Step 4: Install the MySQL gem
gem install mysql -- --with-mysql-config=/usr/bin/mysql_config
## Step 5: Install Passenger
Any Rails application can use a bunch of servers. [Mongrel](http://rubyforge.org/projects/mongrel/) is an example; it runs completely independent of Apache. [Passenger](http://www.modrails.com/) runs Rails apps on top of Apache (as a module) is amazing w.r.t. the simplicity of its setup and debugging.
gem install passenger
passenger-install-apache2-module
Now add an `httpd` directive called `/etc/httpd/conf.d/passenger.conf`. Here are the contents:
LoadModule passenger_module /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.8/gems/passenger-2.2.14
PassengerRuby /usr/local/bin/ruby
Restart the `httpd` service.
## Step 6: Install Redmine
I'm choosing to install Redmine in `/opt`.
svn checkout http://redmine.rubyforge.org/svn/tags/0.9.3/ /opt/redmine
chmod 777 /opt/redmine/files
* Configure `/opt/redmine/config/database.yml` to reflect your
database parameters.
* Configure `/opt/redmine/config/email.yml` to reflect your
email parameters.
## Tell Passenger to run Redmine!
AFAIK, any Rails app will have a `public` folder that 'kickstarts' the application (again, don't know anything about this; seems like it to me.) I created a `/opt/redmine/public/.htaccess` file and added this:
PassengerAppRoot /opt/redmine
Now I just symlinked the `/opt/redmine/public` to my Apache root, restarted `httpd`, and was good to go at
ln -s /opt/redmine/public /var/www/html/redmine
## Sources
* [Installing Rails on CentOS
5](http://www.catapult-creative.com/2009/02/04/installing-rails-on-centos-5/)
* [Deploying a Rails Application with
Passenger](http://wiki.ocssolutions.com/Deploying_a_Rails_Application_With_Passenger)