Installing Redmine with Passenger and Apache on Centos 6.3

1. Install prerequisite / dependencies :

yum install subversion make gcc gcc-c++ zlib-devel ruby-devel rubygems ruby-libs apr-devel apr-util-devel httpd-devel mysql-devel mysql-server automake autoconf ImageMagick ImageMagick-devel curl-devel

 

2. Go to the directory where you want to download Redmine Code and check out the files using svn command :

svn co http://svn.redmine.org/redmine/branches/2.1-stable redmine

3. Install the ruby gem named bundle :

gem install bundle

4. Now go to the redmine directory and  install the redmine’s ruby dependencies using the bundler :

bundle install --without postgresql sqlite test development

Now Lets Setup the MySQL Database

Now Create the MySQL Database for the redmine and create a user with access to that database :

mysql

create database redmine character set utf8;

grant all privileges on redmine.* to ‘redmineUser’@’localhost’ identified by redminePassword;

flush privileges;

quit;

Now create the database configuration file for redmine :

cd /path/to/redmineDir/config

cp database.yml.example database.yml

vi database.yml

Now in the database.yml  file enter the database information in the production section as shown below :

production:
  adapter: mysql
  database: redmine
  host: localhost
  username: redmineUser
  password: redminePassword
  encoding: utf8

Now populate the database using the rake command :

cd /path/to/redmineDir

rake generate_secret_token rake db:migrate RAILS_ENV="production" rake redmine:load_default_data RAILS_ENV="production"

Configure outgoing Email :

cd /path/to/redmineDir/config
cp configuration.yml.example configuration.yml

Please read the email configuration section at the end for setting up outgoing email configuration, for now we will proceed and come back to email configuration at the end.

As of now you should be able to test the redmine in standalone mode. Run the following command to run redmine in the standalone mode  :

ruby script/server webrick -e production

Note : You need to be inside your redmine dir to run above command .

Now open the following URL and you should see the redmine  in your browser :

http://serverIp:3000

 

Now let’s Install Passenger module for apache  which will allow us to browse ruby application using apache . We will install phusion passenger for this and we will need to install the gem first :

gem install passenger

Now install the apache module for passenger :

passenger-install-apache2-module

 

Now we create the apache configuration for redmine :

vi /etc/httpd/conf.d/redmine.conf

Now paste the following content into the redmine.conf , please adjust the configuration to suite your environment :

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-3.0.18
PassengerRuby /usr/bin/ruby
<VirtualHost *:80>
    ServerName redmine.hostname.com
    DocumentRoot /path/to/redmineDir/public
    <Directory /path/to/redmineDir/public>
        AllowOverride all #loosen apache security
        Options -MultiViews #turn of multi views allow from all
    </Directory>
    ErrorLog "| /usr/sbin/rotatelogs /etc/httpd/logs/redmine-error.%Y-%m-%d.log 86400"
    CustomLog "| /usr/sbin/rotatelogs /etc/httpd/logs/redmine-access.%Y-%m-%d.log 86400" "%h %l %u %t %D \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\""
</VirtualHost>

Make sure that these directories are writable by the web user :  (nobody user is used for rack )

chown -R apache:nobody files/ log/ tmp/ tmp/pdf/

chmod -R 770 files/ log/ tmp/ tmp/pdf/

Now Change the ownership of the directory, test the configuration and start / restart apache :

chown -R apache:root /path/to/redmineDir/

service httpd configtest

service httpd restart

 

Quick Tips :

Clean up all the devel packages that were installed during installation :

yum remove '*-devel' make automake autoconf

Restarting Redmine :

touch /path/to/redmineDir/tmp/restart.txt

Migrating restored data from previous  version :

First Backup the database from old Redmine install, restore into the new database, sync the files directory from old installation to new installation and then run the migrate command :

cd /path/to/redmineDir

rake db:migrate RAILS_ENV=”production”

 

Email Settings :

Using Gmail as outbound SMTP :

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      enable_starttls_auto: true
      address: "smtp.gmail.com" 
      port: '587'
      domain: "smtp.gmail.com" 
      authentication: :plain
      user_name: "your_email@gmail.com" 
      password: "your_password" 

Using your own SMTP with authentication :

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.yourdomain.com
      port: 25
      domain: example.net
      authentication: :login
      user_name: redmine@yourdomain.com
      password: redmine

Your own SMTP without authentication :

production:
  email_delivery:
    delivery_method: :smtp
    smtp_settings:
      address: smtp.yourdomain.com
      port: 25
      domain: yourdomain.com
      authentication: :none

Using Local Sendmail :

production:
  email_delivery:
    delivery_method: :sendmail

 

Common Issues and Resolutions :

Error while sending mail notificaiton  “ hostname was not match with the server certificate”

Add this line to the email settings :

openssl_verify_mode: none
  • mysql2 is not part of the bundle. Add it to Gemfile

If you get the above error, that means, mysql2 adapter has not been included in your Gem file , open the gem file in your redmine root directory and add it to the list :

gem 'rails', '3.2.8'
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"

Make it look like :

gem 'rails', '3.2.8'
gem "jquery-rails", "~> 2.0.2"
gem "i18n", "~> 0.6.0"
gem "coderay", "~> 1.0.6"
gem "fastercsv", "~> 1.5.0", :platforms => [:mri_18, :mingw_18, :jruby]
gem "builder", "3.0.0"
gem "mysql2", "~> 0.3.11"

Now run the bundle installer again with the following command :

bundle install --without postgresql sqlite test development

Now verify that the mysql2 adapter has been installed :

 bundle show mysql2

Now you should be good.. continue with the other steps from where you got this issue.

 

Clearing Redmine Cache

rake tmp:cache:clear RAILS_ENV=production
rake tmp:sessions:clear RAILS_ENV=production