How to: Setup Redmine 2.1.4 on Ubuntu 12.10

Redmine is the best software package I've come across when dealing with software development and I highly recommend its use to everyone, however quite a few people have issues setting it up. Especially those who are new to Ruby or Rails. This guide walks you through the basics of setting it up on a fresh Ubuntu 12.10 installation.

  1. Install Ubuntu 12.10 (this guide uses Ubuntu Server 12.10 64-Bit). I would recommend installing this on it's own server or virtual machine.
  2. Update the system
    sudo apt-get update
    sudo apt-get upgrade
    If any kernel upgrades are required, this would be a good time to restart the server.
  3. Install the packages we will require, this may take some time as the list is quite long.
    sudo apt-get install ruby rubygems libruby libapache2-mod-passenger ruby-dev zip unzip libmysqlclient-dev libmagickcore-dev libmagickwand-dev mysql-server mysql-client
    You will be prompted for a MySQL root password. Usual decent password practices apply.
  4. Download Redmine v2.1.4 from RubyForge. http://rubyforge.org/frs/?group_id=1850 You can download either the tar or zip version. Download the MD5 Sum of the file as well (it will have the same file name but with '.MD5' at the end and will be quite small.
    wget http://rubyforge.org/frs/download.php/76495/redmine-2.1.4.tar.gz
    wget http://rubyforge.org/frs/download.php/76495/redmine-2.1.4.tar.gz.md5
  5. Confirm the MD5 of the file you downloaded matches the one in the md5 file
    md5sum redmine-2.1.4.tar.gz
    cat redmine-2.1.4.tar.gz.md5
    If the strings do not match, one of the two files is corrupted.
  6. Untar or Unzip the file and move the folder to an appropriate location
    tar -xzvf redmine-2.1.4.tar.gz
    unzip redmine-2.1.4.tar.gz
    sudo mv redmine-2.1.4 /usr/local/share
    cd /usr/local/share/redmine-2.1.4/
  7. Install appropriate gems
    sudo gem install bundler
    sudo gem install rdp-mysql2
  8. Install the Redmine 'bundle' without dev / test environments and other database components
    sudo bundle install --without development test postgresql sqlite
  9. Create a MySQL user and Database for Redmine (using the local server) In these steps should be replaced by a password different from the root account. Connect to the MySQL Server Daemon:
    mysql -u root -p
    Create the new user:
    CREATE USER 'redmine'@'localhost' IDENTIFIED BY  '';
    Create the new database:
    CREATE DATABASE IF NOT EXISTS redmine;
    Grant the user rights over the database:
    GRANT ALL PRIVILEGES ON  redmine . * TO 'redmine'@'localhost';
  10. Create the Database configuration file
    sudo nano config/database.yml
    Enter the following text, replacing your password as per above
    production:
      adapter: mysql2
      database: redmine
      host: localhost
      username: redmine
      password: **
  11. Generate the session secret:
    sudo rake generate_secret_token
  12. Create the empty Redmine Database structure
    sudo RAILS_ENV=production rake db:migrate
  13. Populate the database with default data (optional: Only skip this step if you know what you're doing in terms of configuring workflows / etc in Redmine)
    sudo RAILS_ENV=production redmine:load_default_data
    When prompted, select the appropriate language.
  14. Configure Apache
    sudo nano /etc/apache2/sites-available/default
    Delete all the existing data in the file and insert the following base config:
    <Virtualhost :80>
    DocumentRoot /usr/local/share/redmine-2.1.4/public
    <Directory /usr/local/share/redmine-2.1.4/public>
    AllowOverride all
    Options -MultiViews
    </Directory>
    </VirtualHost>
  15. Restart Apache2
    sudo service apache2 restart
  16. Open Redmine: http://<server_IP>/ Default details: Username - admin Password - admin
Other steps you should take:
  • Configure Redmine to send emails
  • Enable the Ubuntu Firewall (UFW)
  • Create a backup script that backs up uploaded files and the MySQL database
  • Tweak the Apache2 configuration to be more secure
  • Install the Nagios monitoring client
  • Setup rsyslogd to log to a remote location
Depending on demand I may create some How To guides for the above.