HowTo install Redmine on Debian with Passenger

This is work in progress. Please see the guide on HowTo_Install_Redmine_on_Debian_with_Ruby-on-Rails_and_Apache2-Passenger for now.

This guide is going to explain how to install Redmine 0.9.x, 1.0.x, or trunk for a production setup on a Debian 5.0.x "Lenny".

Although, there exists a Redmine package in lenny-backports and above, I would recommend to not use it for now, as it patches Redmine to run on various older libraries (foremost Rails). If you run Squeeze, it should be easier to use the provided package. However, you are more flexible and probably get better support in the forums or in IRC when you use the provided package. This is obviously the preferred method of deployment here.

What we are going to do here?

At first, we need to make sure to meet the general requirements on RedmineInstall. At the time of writing, this included:

  • Ruby 1.8.7 (preferred), 1.8.6 is also okay. Redmine is still not fully compatible with Ruby 1.9.x and JRuby
  • Rubygems 1.3.1 or higher
  • Rails 2.3.5 with dependencies
  • Rack 1.0.1. Version 1.1 is not supported with Rails 2.3.5

Finally, we are going to install Apache 2.2 or Nginx together with passenger and set them up with redmine.

We are now walking through to install all these packages.

Install Ruby

At first, we install the base ruby. Luckily, Debian Lenny ships with ruby 1.8.7 by default:

aptitude install ruby1.8 irb1.8 rdoc1.8 ri1.8 libreadline-ruby1.8 libopenssl-ruby1.8

Setup lenny-packports to install passenger and some requirements from debian packages

This step is not necessary if you run a newer Debian distribution than Lenny. So if you run Squeeze or Sid, just skip this.

At first, we are adding the official lenny-backports repository to our sources.list. This repository provides newer or additional packages compiled to run with Debian Lenny. Most of the time, it will include the software versions from the current testing distribution.

echo "deb lenny-backports main" >> /etc/apt/sources.list
aptitude reload

Next we are going to instruct APT to prefer the current Debian stable release over the backports packages. Additionally, we are pinning some packages from backports such that these are installed and preferred over the stable release versions.

cat <<EOF > /etc/apt/preferences
Package: *
Pin: release o=Debian,a=stable
Pin-Priority: 101

Package: *
Pin: release a=lenny-backports
Pin-Priority: 1

Package: rubygems
Pin: release a=lenny-backports
Pin-Priority: 999

Package: rubygems1.8
Pin: release a=lenny-backports
Pin-Priority: 999

Package: rake
Pin: release a=lenny-backports
Pin-Priority: 999

Package: librack-ruby1.8
Pin: release a=lenny-backports
Pin-Priority: 999