====== Prepare RAILS environment for Redmine with SQLite using RVM ======
  * This guide is supposed to make Redmine installation easier
  * No garbage, no harm for the system!
    * RAILS stuff is installed to /home/redmine/.rvm
    * Redmine is installed to /opt/redmine-N.N, where N.N is version of Redmine
===== Prepare environment =====
#!/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 =====
  * Use redmine-shell.sh to prepare for the first start or to upgrade Redmine.
  * Usage: redmine-shell.sh ["command"]
  * Examples: redmine-shell.sh redmine-shell.sh "rake generate_secret_token" redmine-shell.sh "rake db:migrate" redmine-shell.sh "gem list" redmine-shell.sh "bundle install"
#!/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
# 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 =====
  * Place this file to /etc/apache2/sites-available/ (this is just an example generated by 'passenger-install-apache2-module -a', you have to adjust paths for your installation)
        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
        
                # This relaxes Apache security settings.
                #AllowOverride all
                AllowOverride none
                # MultiViews must be turned off.
                Options -MultiViews
        
===== 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 =====
  * Rails environment is installed and configured
  * Apache is installed and configured
  * Now you should use redmine-shell.sh script and follow official guides:
     * to configure Redmine for SQLite database
     * to start Redmine
===== Links =====
  * Check http://www.redmine.org/projects/redmine/wiki/RedmineInstall for more information
Habrahabr link: http://habrahabr.ru/post/140219/\\
**Tested on Ubuntu 12.04 LTS with Redmine 2.2 stable**
{{tag>rails rvm redmine ubuntu}}