Table of Contents

Prepare RAILS environment for Redmine with SQLite using RVM

Prepare environment

redmine-2.2-prepare.sh
#!/bin/bash -e
 
# Define common variables
USERNAME=redmine
WWW_USERNAME=redmine
RUN_WITH_USERNAME="sudo -iu $USERNAME http_proxy=$http_proxy https_proxy=$https_proxy"
 
# Create user with $USERNAME
id $USERNAME || sudo useradd -rm $USERNAME
 
# Install apache2
sudo apt-get install apache2
 
# Install RVM and rvm reqirements
sudo apt-get install curl
curl -L get.rvm.io | $RUN_WITH_USERNAME bash -s stable
# Install packages suggested by rvm-installer (try 'rvm requirements')
sudo apt-get install \
     build-essential openssl libreadline6 libreadline6-dev curl \
     git-core zlib1g zlib1g-dev libssl-dev libyaml-dev \
     libsqlite3-dev sqlite3 libxml2-dev libxslt-dev autoconf libc6-dev \
     ncurses-dev automake libtool bison subversion pkg-config
 
# Prepare environment for Redmine
## Define versions
REDMINE_VERSION=2.2
REDMINE_DIR=/opt/redmine-${REDMINE_VERSION}
RUBY_VERSION=1.9.3
GEM_VERSION=1.8.25
## Checkout Redmine
sudo svn co http://svn.redmine.org/redmine/branches/${REDMINE_VERSION}-stable $REDMINE_DIR
## Prepare directory and permissions for the bundler
sudo mkdir -p $REDMINE_DIR/.bundle
sudo chown $USERNAME:$USERNAME $REDMINE_DIR/.bundle
sudo chown $USERNAME:$USERNAME $REDMINE_DIR     # necessary to be able to create Gemfile.lock during installation
## Install packages necessary to build passenger for apache2
sudo apt-get install libcurl4-gnutls-dev apache2-prefork-dev libapr1-dev libaprutil1-dev
## Install packages necessary to build rmagic
sudo apt-get install libmagick++-dev
## Prepare
GEM_INSTALL="gem install --no-rdoc --no-ri"
GEM_VERSION_SHORT=${GEM_VERSION//./}
cat << EOF | $RUN_WITH_USERNAME bash -e
    [[ -s "\$HOME/.rvm/scripts/rvm" ]] && source "\$HOME/.rvm/scripts/rvm" && \
    rvm install $RUBY_VERSION-gems$GEM_VERSION_SHORT && \
    rvm use $RUBY_VERSION-gems$GEM_VERSION_SHORT && \
    rvm rubygems $GEM_VERSION && \
    rvm gemset create redmine$REDMINE_VERSION && \
    rvm use $RUBY_VERSION-gems$GEM_VERSION_SHORT@redmine$REDMINE_VERSION
    ## Install bundler (to make a process of dependencies instalation easier)
    $GEM_INSTALL bundler
    ## Install passenger
    $GEM_INSTALL passenger
    ## Build passenger
    passenger-install-apache2-module -a
    ## Install necessary gems using bundler
    cd $REDMINE_DIR || exit 1
    bundle install --without development test mysql
EOF
 
# Install Redmine
## Fix some permissions
sudo chown root:root $REDMINE_DIR
cd $REDMINE_DIR
sudo mkdir -p tmp public/plugin_assets
sudo chown -R $WWW_USERNAME files log tmp public/plugin_assets db
sudo chmod -R 755 files log tmp public/plugin_assets
sudo chmod 700 db
sudo chmod 600 db/*.sqlite3

Launch redmine shell with RVM

redmine-shell.sh
#!/bin/bash -e
 
# Define common variables
USERNAME=redmine
 
# Define core variables
BASHRC=$(dirname $(readlink -f $0))/redmine-shell.bashrc
RUN_WITH_USERNAME="sudo -iu $USERNAME http_proxy=$http_proxy https_proxy=$https_proxy"
 
# Launch shell
if [[ -z "$@" ]]; then
        $RUN_WITH_USERNAME bash --rcfile $BASHRC
else
        $RUN_WITH_USERNAME bash -c "source $BASHRC; $@"
fi
redmine-shell.bashrc
# Common variables
REDMINE_VERSION=2.2
GEMSET=ruby-1.9.3-gems1824@redmine2.2
export RAILS_ENV=production
 
# Define core variables
REDMINE_DIR=/opt/redmine-${REDMINE_VERSION}
 
# Prepare RVM environment
[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*
PATH=$PATH:$HOME/.rvm/bin # Add RVM to PATH for scripting
 
# Select Redmine gemset
rvm $GEMSET
 
# Go to Redmine directory
cd $REDMINE_DIR

Apache configuration example

/etc/apache2/sites-available/redmine
<VirtualHost *:80>
 
        ServerName redmine.company.lan
 
        # Passenger
        PassengerUser redmine
        LoadModule passenger_module /home/redmine/.rvm/gems/ruby-1.9.3-p362-gems1824@redmine2.2/gems/passenger-3.0.19/ext/apache2/mod_passenger.so
        PassengerRoot /home/redmine/.rvm/gems/ruby-1.9.3-p362-gems1824@redmine2.2/gems/passenger-3.0.19
        PassengerRuby /home/redmine/.rvm/wrappers/ruby-1.9.3-p362-gems1824@redmine2.2/ruby
 
        # Public directory
        DocumentRoot /opt/redmine-2.2/public
        <Directory /opt/redmine-2.2/public>
                # This relaxes Apache security settings.
                #AllowOverride all
                AllowOverride none
                # MultiViews must be turned off.
                Options -MultiViews
        </Directory>
 
</VirtualHost>

Enable redmine site for apache2

# Apache for redmine
sudo a2dissite default
sudo a2ensite redmine
sudo /etc/init.d/apache2 reload

Follow official guides for the next steps

Links

Habrahabr link: http://habrahabr.ru/post/140219/
Tested on Ubuntu 12.04 LTS with Redmine 2.2 stable