Redmine installation on Ubuntu 18.04

This manual will help you to install a fresh Redmine version from sources to the Ubuntu server.

1. Installing RVM (Ruby Version Manager)

$ sudo apt-get install curl mysql-server libmysqlclient-dev git-core subversion imagemagick libmagickwand-dev libcurl4-openssl-dev
$ sudo apt-get update
Install RVM as non-root
$ command curl -sSL | gpg --import -
$ curl -L | sudo bash -s stable
Now, you should load the RVM
$ sudo su
# source /usr/local/rvm/scripts/rvm
# echo '[[ -s "/usr/local/rvm/scripts/rvm" ]] && source "/usr/local/rvm/scripts/rvm"' >> ~/.bashrc
and install Ruby
# command curl -sSL | gpg --import -
# rvm get head
# rvm install ruby-2.3

2. Installing Phusion Passenger and Nginx

# sudo apt-get install libcurl4-gnutls-dev
# gem install passenger --no-ri --no-rdoc
# passenger-install-nginx-module

Configuring Nginx

# systemctl stop nginx
# curl > /lib/systemd/system/nginx.service
# systemctl daemon-reload
# systemctl enable nginx
# nano /opt/nginx/conf/nginx.conf

Replace server section for port 80

server {
  listen  80;
  server_name [your_server_domain_name] #;
  root /var/data/redmine/public;
  passenger_enabled on;
  client_max_body_size      10m; # Max attachemnt size

Restart Nginx

# systemctl stop nginx
# systemctl start nginx

Setting a secure connection (HTTPS) in Nginx

Using HTTPS may provide better information privacy. Here we give an instruction how to create a self-signed SSL certificate for Nginx in Ubuntu 18.04. This self-signed certificate will encrypt communication between your server and any users.

In order to be able to perform the setting, you need a non-root user with sudo privileges.

To create a self-signed key and certificate pair with OpenSSL, use this command:

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
  • openssl: basic OpenSSL tool for creating and managing keys, certificates etc.
  • req: request X.509 certificate signing; creates a new X.509 certificate
  • -x509: creates a self-signed certificate instead of generating a certificate signing request
  • -nodes: skips the option to secure the new certificate with a passphrase. Nginx should read the file without user intervention at server startup. A passphrase would prevent this, as you would have to enter it after every restart.
  • -days 365: certificate validity period
  • -newkey rsa:2048: to generate the new certificate and the new key simultaneously. Key needs to be created along with the certificate. (The rsa:2048 results in an RSA key that is 2048 bits long.)

-keyout: path for the generated private key file

-out: path for the generated certificate file

During the process, you will have to type answers of some questions. These would be like the shown below:

Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

The most important question is Common Name (e.g. server FQDN or YOUR name), where you type the server domain name or public IP Address.

3. Installing Redmine

# mkdir /var/data
# cd /var/data/
# svn co redmine
# cd /var/data/redmine

Database configuration

# nano config/database.yml

Add following lines

  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8

  adapter: mysql2
  database: redmine 
  host: localhost
  username: redmine
  password: redmine
  encoding: utf8

4. Plugins installation

Unarchive plugins to /plugins/ folder and execute

# cd /var/data/redmine
# gem install bundler --no-ri --no-rdoc
# bundle install

5. Configuring redmine

Setup redmine folder permissions

# cd /var/data/redmine
# mkdir public/plugin_assets
# chown -R www-data:www-data files log tmp public/plugin_assets
# chmod -R 755 files log tmp public/plugin_assets

Create database

# mysql -u root -p

Execute following lines to MySQL

CREATE DATABASE redmine character SET utf8;
CREATE user 'redmine'@'localhost' IDENTIFIED BY 'redmine';
GRANT ALL privileges ON redmine.* TO 'redmine'@'localhost';

Migrate database

# cd /var/data/redmine
# bundle exec rake db:migrate
# bundle exec rake redmine:plugins

If you want to, you can download some default data (statuses, workflows, trackers) to be able to start to work with your Redmine right after the first login. To do this, run the following command:

# bundle exec rake redmine:load_default_data RAILS_ENV=production

It will ask you about the preferable language and then download some default package of data to your Redmine.

Generate session store

# bundle exec rake generate_secret_token 

Start web server

# service nginx start

Restart Redmine

# touch /var/data/redmine/tmp/restart.txt
Was this article helpful? Yes  No
228 from 274 found this helpful