HOWTO: Install Subversion, Ruby on Rails and Redmine on CentOS5 (& RHEL5)

NOTES
Install and set up Subversion
yum install mod_dav_svn subversion
Add the group [user] to the user apache and make the subversion base URL readable and writable...
usermod -aG [user] apache
chmod g+x /home/[user]
mkdir /home/[user]/subversion
chmod g+rwx /home/[user]/subversion
Make the web directory:
mkdir /var/www/svn
chown apache.apache /var/www/svn
Put the following into /etc/httpd/conf.d/svn.conf (this is for a sub-repo called 'example-repo')
NameVirtualHost *:80
<VirtualHost *:80>
        DocumentRoot "/var/www/svn" 
        ServerName [FQDN]
        <Location /example-repo>
                DAV svn
                SVNPath /home/[user]/subversion/example-repo
                AuthType Basic
                AuthName "Subversion repo" 
                AuthUserFile /var/www/passwd
                Require valid-user
        </Location>

        <Directory "/var/www/svn">
        allow from all
        Options +Indexes
        </Directory>
</VirtualHost>
Add an HTTP auth user...
htpasswd -cm /var/www/passwd [user]

Create a proper SVN repository
cd /home/[user]/subversion
su [user] -c "svnadmin create example-repo" 

Import any SVN repos by doing:
su [user] -c "svnadmin load example-repo < /path/to/repo/dump/file" 
Make sure the permissions are correct
chmod g+rwx /home/[user]/subversion
chown -R [user].[user] /home/[user]

Install Ruby on Rails

*NOTE: Ruby on Rails installation requires the EPEL yum repository (at time of writing).
su -c 'rpm -Uvh http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm'
Let's get Ruby up and running first... [NOTE: not on an SElinux environment cba with that]
yum install httpd httpd-devel apr make gcc-c++ mysql-server mysql ruby ruby-devel ruby-docs ruby-ri \
ruby-libs ruby-mode ruby-tcltk ruby-irb ruby-rdoc fcgi fcgi-devel mod_fcgid rubygems subversion-ruby
Now we'll install passenger (aka mod_rails)
gem install passenger
passenger-install-apache2-module
Create and insert this text into /etc/httpd/conf.d/rails.conf (or alternatively edit the existing svn.conf created when we set up subversion)
NOTE:
   LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6/ext/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-2.0.6
   PassengerRuby /usr/bin/ruby

NameVirtualHost *:80

   <VirtualHost *:80>
     ServerName 192.168.10.17
     DocumentRoot /var/www/rails/redmine/public
   </VirtualHost>

Now on to Redmine itself

Get Redmine 0.8 from http://www.redmine.org/wiki/redmine/Download
cd /usr/src
svn co http://redmine.rubyforge.org/svn/branches/0.8-stable redmine-0.8
mkdir /var/www/rails/
cd /var/www/rails/
cp -r /usr/src/redmine-0.8/ redmine/
chown -R apache.apache redmine
cd redmine
Create a clean backup of source files
tar czf Redmine0.8-clean.tar.gz .
Initialise mySQL:
service mysqld start
To secure mysql:
mysql_secure_installation
Create a mysql database for redmine...
mysql -u<username> -p
At the prompt enter:
create database redmine character set utf8;
Quit with:
quit
Copy the example database file to the "live" location
cd /var/www/rails/redmine
cp config/database.yml.example config/database.yml
Enter the appropriate settings for the [production] section ensuring that host is set to 127.0.0.1
vim /var/www/rails/redmine/config/database.yml
Set up email
cd /var/www/rails/redmine
cp config/email.yml.example config/email.yml
Enter the appropriate settings for the [production] section ensuring that "address" is set to the IP address of the SMTP host
vim /var/www/rails/redmine/config/email.yml
Install rails for redmine using gem...
cd /var/www/rails/redmine/app/
gem install -v=2.1.2 rails
Import the redmine database into the live database specified in the above config file
cd /var/www/rails/redmine/app/
rake db:migrate RAILS_ENV="production" 
Install default configuration data in database (this is entirely optional, but recommended).
cd /var/www/rails/redmine/app/
rake redmine:load_default_data RAILS_ENV="production" 
Bring up the testing webserver, once loaded check your config by browsing to http://[FQDN]:3000
cd /var/www/rails/redmine/
ruby script/server -e production
Make sure your apache config file edits are ok and that the services will start at boot by doing:
service httpd configtest
service httpd restart
chkconfig httpd on
chkconfig mysqld on
Add the following to your crontab which will create a database backup in the /home/[user] directory
/usr/bin/mysqldump -u <user> -p <password> <database> | gzip > /home/[user]/redmine_`date +%y_%m_%d`.gz