Hamsa K
10 min read | 5 months ago

How to Install and Configure Redmine on Centos 7

How to Install  and configure Redmine on Centos 7

Redmine is an open source web application for project management and issue tracker. Redmine is based on the Ruby on Rails Framework, it has cross-platform and cross-database support.

In this page, we will install Redmine  with Nginx as the web server, MySQL as the database server on a CentOS 7 (64 bit) operating system.

Step 1: Install packages

[root@lampblogs ~]# yum install curl zlib-devel curl-devel openssl-devel httpd-devel apr-devel apr-util-devel mysql-devel ftp wget ImageMagick-devel gcc-c++ patch readline readline-devel zlib libyaml-devel libffi-devel make bzip2 autoconf automake libtool bison subversion sqlite-devel

Step 2: Install Ruby using RVM

We will install the latest version of Ruby using Ruby Version Manager, or RVM. It is used to install and manage multiple versions of Ruby.

curl -sSL https://rvm.io/mpapis.asc | gpg --import -
curl -L get.rvm.io | bash -s stable
source /etc/profile.d/rvm.sh
rvm reload
rvm requirements run
rvm install 2.6
rvm list known
ruby -v 
rvm -v

sample output

[root@centos ~]# ruby -v
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-linux]
[root@centos ~]# rvm -v
rvm 1.29.9 (latest) by Michal Papis, Piotr Kuczynski, Wayne E. Seguin [https://rvm.io]

Step 3: Install Mysql

rpm -Uvh  https://repo.mysql.com/mysql80-community-release-el7-3.noarch.rpm
yum install mysql-server
systemctl start mysqld
systemctl enable mysqld
grep "A temporary password" /var/log/mysqld.log


[root@centos ~]# mysql --version
mysql  Ver 8.0.18 for Linux on x86_64 (MySQL Community Server - GPL)

By default, MySQL 8 sets the default password policy to "caching_sha2_password".change the default policy in MySQL config file (likely /etc/my.cnf) by uncommenting the line


and restart mysql service by follwing command

systemctl restart mysqld

Next, create a new database called "redmine" and create a new user 'redmineuser' with password as strong password (use secure password). Then grant all privilages for the user to the 'redmine' database.

mysql> create database redmine;
Query OK, 0 rows affected (0.01 sec)
mysql> create user redmineuser@localhost identified by 'strong password';
Query OK, 0 rows affected (0.01 sec)
mysql> grant all privileges on redmine.* to redmineuser@localhost;
Query OK, 0 rows affected (0.03 sec)
Query OK, 0 rows affected (0.04 sec)

still if you face any issue with password policy while creating user then follow below command

mysql> ALTER USER 'redmineuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Query OK, 0 rows affected (0.01 sec)

Step 4: Install phusion Passenger

Phusion Passenger is web application server that can be used together with apache and nginx. It supports multiple languages like Ruby, Python and Nodejs. It  can handle more traffic.

we will install the Phusion Passenger and integrate it with our nginx web server. Install passenger with the gem command, then run the command passenger-nginx-module.

gem install passenger

The command will ask which programming language shall be used, select Ruby

Which languages are you interested in?
Use <space> to select.
If the menu doesn't display correctly, press '!'
 > (*)  Rubyy
   ( )  Python
   ( )  Node.js
   ( )  Meteor

Next it will ask about nginx installation 

Enter your chioce : 1

It will download and install nginx as default path /opt/nginx. press enter

Step 5: Configure Nginx 

Edit nginx configuration file as below

vi /opt/nginx/conf/nginx.conf
Paste the configuration below at line 24 and save it.
include vhost/*.conf;

Create a new 'vhost' directory for the virtual host configuration

mkdir -p /opt/nginx/conf/vhost
vi /opt/nginx/conf/vhost/redmine.conf

paste below content to above file.

server {
        listen       80;
        server_name  redmine.me;
        root /var/www/redmine/public;
        passenger_enabled on;
        client_max_body_size      10m; # Max attachemnt size
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;

Next we configure nginx for systemd. Go to the systemd directory and create new service file named 'nginx.service'.

vi /lib/systemd/system/nginx.service

paste below content to above file

Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
ExecStartPre=/opt/nginx/sbin/nginx -t
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID

save and exit the file. Now reload systemd service and start nginx as below

[root@centos ~]# systemctl daemon-reload
[root@centos ~]# systemctl start nginx
[root@centos ~]# netstat -plntu | grep nginx
tcp        0      0    *               LISTEN      22748/nginx: master

Step 6: Install Redmine

Go to /var/www directory and download Redmine with the svn command

[root@centos ~]# cd /var/www/
[root@centos www]# svn co https://svn.redmine.org/redmine/branches/4.0-stable redmine

you can go to Redmine directory and copy the configuration file and database configuration file as below

[root@centos redmine]# cp config/configuration.yml.example config/configuration.yml
[root@centos redmine]# cp config/database.yml.example config/database.yml
[root@centos redmine]# vi config/database.yml

In production section you can give database username and password

sample output:

[root@centos redmine]# cat config/database.yml
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmineuser
  password: "password"
  encoding: utf8

save the file.create few directories and change permissions 

[root@centos redmine]# mkdir -p tmp tmp/pdf public/plugin_assets
[root@centos redmine]# chown -R nobody:nobody files log tmp public/plugin_assets
[root@centos redmine]# chmod -R 775 files log tmp public/plugin_assets

Step 7: Install bundler 

gem install bundler
bundle install --without development test

Note: If you face any errors related to mysql or rmagic while bundle install refer below commands and run them if required (For your reference)

 yum install mysql-community-devel
 gem install mysql2 -v '0.5.2'
 bundle install --without development test
 gem install rmagick -v '2.16.0
 yum install ImageMagick-devel
 gem install rmagick -v '2.16.0
 bundle install --without development test

Once bundle install run successfully, then generate the secret token, then generate the database with below commands

bundle exec rake generate_secret_token
RAILS_ENV=production bundle exec rake db:migrate
RAILS_ENV=production bundle exec rake redmine:load_default_data

Then restart nginx service and check redmine in yourbrowser with ip.

once loggedin, you can create new project and add users etc.

Warning! This site uses cookies
By continuing to browse the site, you are agreeing to our use of cookies. Read our terms and privacy policy