Content

Performance and correct functioning of Easy Redmine depends quite strongly on server configuration. It is important to host the application on a tidy and well-organized environment to ensure that no misconfiguration is blocking Easy Redmine from any particular operations, or even worse, from running altogether.

The manuals below are intended for experienced server administrators. We do not teach how to run a server altogether - there are tons of manuals for general server administration all over the web. We are merely providing insight on the most crucial parts needed to run the application. A certain level of skill is always required for running any web application.

Recommended configuration for running Easy Redmine is nginx + unicorn.

Supported configurations are nginx (apache) + unicorn (passenger, puma, thin).

Webrick is not supported. Other servers were not tested.

Linux/Unix platform.

Tested distributions:

  • Debian 8+
  • CentOS 7+ (older versions don't allow railsexpress)
  • Ubuntu

Nginx

We recommend to use nginx as the webserver because of its speed.

Set configuration for upstream, not for TCP.

Example:

upstream unicorn { 

    # for UNIX domain socket setups: 
    # server unix:/tmp/.sock fail_timeout=0; 
    server unix:/tmp/easysredmine.sock fail_timeout=0; 

  } 
server { 
  listen    80; 
  server_name   easysredmine; 
  error_log /var/log/nginx/easysredmine_error.log; 
  access_log /srv/log/nginx/easysredmine_access.log; 
  
  location / { 

    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; 

    proxy_set_header Host $http_host; 

    proxy_redirect off; 
 
    proxy_pass http://unicorn; 
  }   
} 

Notice sections upstream and location.

Unicorn

Unicorn is recommended for its speed and simplicity. It is an application server optimized speed.

Configuration:

worker_processes X

Set number according to number of processors of the server. Setting higher doesn't help.

listen '/tmp/easyredmine.sock'

Setting of unicorn on socket.

Timeout 300

Some oparations may take longer, so it is better to use a higher number. 300 should be a minimum.

Ruby

We recommend to install Ruby 2.3.3 with railsexpress patches, by RVM.

RVM

RVM installation for multi-user:

curl -sSL https://get.rvm.io | sudo bash -s stable

RVM patches

After installing RVM, you need to prepare patches for ruby railsexpress

  1. git clone https://github.com/skaes/rvm-patchsets.git
  2. cd rvm-patchsets
  3. ./install.sh 2.3.3

Install ruby after installing the patches.

Railsexpress

rvm install 2.3.3 --patch railsexpress

After ruby installation, set ruby 2.3.3 as default:

rvm use 2.3.3 –default

Before running unicorn, it is good to change settings of default values for Ruby Garbage Collector:

export RUBY_GC_HEAP_INIT_SLOTS=1800000; 
export RUBY_HEAP_FREE_MIN=18000; 
export RUBY_GC_MALLOC_LIMIT=120000000; 
export RUBY_HEAP_SLOTS_INCREMENT=144000; 
export RUBY_HEAP_SLOTS_GROWTH_FACTOR=1; 

MySQL

Optimizing database setting to the level of caching all requests.

Example of my.cnf setting:

[mysqld]
bulk_insert_buffer_size = 64M 
tmp_table_size      = 512M 
max_heap_table_size = 512M 
query_cache_limit       = 128K 
query_cache_size        = 512M 
...

Recommended encoding is utf8mb4 and collation utf8mb4_unicode_ci

collation_server        = utf8mb4_unicode_ci
character_set_server    = utf8mb4

In config/database.yml

development: &development
 adapter: mysql2
 database: mydatabase
 host: localhost
 username: mydblogin
 password: "RealySUpeRSEEEEcurepAssword!!!!"
 encoding: utf8mb4
 pool: 256

production:
  <<: *development

Step by step manual for server configuration

If this info is still not enough, we have prepared an even more detailed manual on how to configure your server for running Easy Redmine. The example is for CentOS configuration, but with minor modifications it can be used for other Linux distributions as well.

It is always necessary to think about the content before simply copying and using it in production. You will find steps for guaranteed functioning of the application, unless no other dependency or service blocks it. The manual can also help you with troubleshooting, to verify your configuration (permissions, limits, gem versions, etc.)

The manual is available here.

External sources

Additional information
Free Trial

Easy Redmine 2018 upgrade
Top plugins & features
New & mobile design
Server upgrades
Global cloud

Start Free Trial

Easy Redmine 2018 Free Trial

Full-featured, 30 Days, SSL protected, Daily Backups, In your Geo Location

or