Установка Redmine

Дисклеймер

В статье предполагается, что у вас есть сервер с установленной ОС Ubuntu не ниже 12.04 версии. А так же наличие у вас базовый знаний по работе в unix системах.

Установка Ruby

Есть много способов установить Ruby на ваш сервер, большинство из них описано тут.

Я предпочитаю использовать RVM о нем дальше и пойдет речь.

RVM

Для установки нам понадобится установить curl:

#apt-get install curl

А так же установить public key для скачивания RVM

#gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB

Теперь установим RVM, что бы можно было использовать любые версии Ruby и наборы Gem-ов в дальнейшем.

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

Устанавливаем Ruby ruby-2.4.1

$rvm install ruby-2.4.1

$rvm use ruby 2.4.1 --default
$rvm gemset create redmine
$rvm use 2.4.1@redmine --default

Возможные проблемы в процессе 

Если во время установки curl вы получите такое сообщение:

curl: (60) SSL certificate problem: unable to get local issuer certificate

More details here: http://curl.haxx.se/docs/sslcerts.html

То вам нужно выполнить:

#apt-get install ca-certificates 

 При попытки установить Ruby вы можете получить сообщение:

RVM is not a function, selecting rubies with 'rvm use ...' will not work.

 В этом случае вам нужно выполнить команду:

/bin/bash --login

 Если у вас возникнут какие то другие проблемы с работой RVM, то большинство из них решается установкой зависимостей.

 Для получения зависимостей RVM выполните команду:

$rvm requirements

Установка MySQL

 Выбор базы данных, которую вы будете использовать остается за вами. Redmine поддерживает следующие базы данных:

  •  MySQL 5.0 - 5.5
  •  MySQL >= 5.6 и MariaDB
  •  PostgreSQL 8.2 или выше
  •  Microsoft SQL Server 2012 или выше

В своей компании мы используем MariaDB, о ее установки я и расскажу.

Для этого заходим на страницу: https://downloads.mariadb.org/mariadb/repositories/ и выбрав нужные поля вы получите команды для установки.

Для примера, если выбрать Ubuntu 12.04, то получите:

#apt-get install python-software-properties 
#apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xcbcb082a1bb943db 
#add-apt-repository 'deb [arch=amd64,i386] http://mirror.mephi.ru/mariadb/repo/10.1/ubuntu precise main'
#apt-get update #apt-get install mariadb-server

Если при установке выходит ошибка 

The following packages have unmet dependencies:

mariadb-server : Depends: mariadb-server-5.5 but it is not going to be installed

 

E: Unable to correct problems, you have held broken packages.

то переходим на страницу: https://mariadb.com/kb/en/library/installing-mariadb-deb-files/#installation-issues и решаем проблему одним из предложенных методов. 

После установки  мы можем создать БД для Redmine, для этого подключитесь к MySQL:

#mysql -ulogin -ppassword

B выполните команды по созданию БД, пользователя который будет с ней работать и привелегий для него:

create database redmine character set utf8;
create user 'redmine'@'localhost' identified by 'my_password';
grant all privileges on redmine.* to 'redmine'@'localhost';
exit;

Установка Redmine

Выберите директорию в которой у вас будет размещен Redmine, перейдите в нее и клонируйте репозиторий, с помощью команды:

#git clone https://github.com/redmine/redmine.git

И переключите ветку git на последнюю стабильную версию:

#git checkout 3.4-stable

После необходимо выдать права на директорию Redmine:

#chmod 775 -R /your_redmine_directory/redmine
#chown -R user:www-data /your_redmine_director/redmine

 Далее редактируем файл конфигурации базы данных  /your_redmine_director/redmine/config/database.yml и вписываем в него следущие строки:

production:
  adapter: mysql2
  database: redmine
  host: localhost
  username: redmine
  password: "[password]"
  encoding: utf8

Устанавливаем Rmagic и пакет без которого не поставится gem:

#apt-get install graphicsmagick-libmagick-dev-compat
#apt-get install libmagickwand-dev

Устанавливаем все необходимые gem с помощью бандлера:

$cd /your_redmine_directory/redmine
$gem install bundler

 Если вы установли MySql то, вам нужно будет выполнить команду:

#apt-get install libmysqlclient-dev

Устанавливаем все необходимые гемы:

$bundle install --without development test
$bundle exec rake generate_secret_token

 Проведем миграции и загрузим данные необходимые для работы системы:

$RAILS_ENV=production rake db:migrate
$RAILS_ENV=production REDMINE_LANG=ru rake redmine:load_default_data

Установка и настройка Application-сервера

Стандартный WebRick сервер крайне медлителен, поэтому разумно будет установить сторонний Application-сервер. Из огромного их числа, я предпочитаю Puma.

Для этого создадим в корневой директории Redmine файл с названием Gemfile.local. Внутри него напишем:

gem 'puma'

Снова выполним команду bundle install, что бы gem установился.

Создадим файл puma.rb

touch /your_redmine_directory/redmine/config/puma.rb

И запишем в него следующие содержимое:

# Change to match your CPU core count
workers 2

# Min and Max threads per worker
threads 1, 6

worker_timeout 600

app_dir = File.expand_path("../..", __FILE__)
shared_dir = "#{app_dir}/tmp"
directory app_dir

# Default to production
rails_env = ENV['RAILS_ENV'] || "production"
environment rails_env

# Set up socket location
bind "unix://#{shared_dir}/sockets/puma.sock"

# Logging
stdout_redirect "#{app_dir}/log/puma.stdout.log", "#{app_dir}/log/puma.stderr.log", true

# Set master PID and state locations
pidfile "#{shared_dir}/pids/puma.pid"
state_path "#{shared_dir}/pids/puma.state"

on_worker_boot do require "active_record" ActiveRecord::Base.connection.disconnect! rescue ActiveRecord::ConnectionNotEstablished ActiveRecord::Base.establish_connection(YAML.load_file("#{app_dir}/config/database.yml")[rails_env]) end

Для systemd

Создайте файл puma.service  в директрии /etc/systemd/system. И добавьте в него следующте содержимое:


[Unit]
Description=Puma HTTP Server
After=network.target

# Uncomment for socket activation (see below)
# Requires=puma.socket

[Service]
# Foreground process (do not use --daemon in ExecStart or config.rb)
Type=simple

# Preferably configure a non-privileged user
User=user
#Group=www

# Specify the path to your puma application root
WorkingDirectory=/your_redmine_directory/redmine
# Helpful for debugging socket activation, etc. # Environment=PUMA_DEBUG=1 # EnvironmentFile=/home/deployer/app/.env # The command to start Puma # ExecStart=<WD>/sbin/puma -b tcp://0.0.0.0:9292 -b ssl://0.0.0.0:9293?key=key.pem&cert=cert.pem # ExecStart=/usr/local/bin/bundle exec --keep-file-descriptors puma -e production ExecStart=/home/user/.rvm/wrappers/ruby-2.4.1@redmine/puma -C /your_redmine_directory/redmine/config/puma.rb
Restart=always [Install] WantedBy=multi-user.target

После этого выполняем следущие команды:

   # После установки или изминения puma.service
$systemctl daemon-reload

# Включаем автозагрузку
$systemctl enable puma.service

# Стартуем puma
$systemctl start puma.service

# Проверяем, что puma запустилась
$systemctl status puma.service

Для Upstart

Дальше установим upstart script для управления puma.

cd ~
wget
https://raw.githubusercontent.com/puma/puma/master/tools/jungle/upstart/puma-manager.conf
wget https://raw.githubusercontent.com/puma/puma/master/tools/jungle/upstart/puma.conf

Откройте файл puma.conf, найдите там строчки setuid и setgid, замените "apps" на имя вашего пользователя из под которого будет запускаться puma.

Теперь скопируем файлы в рабочую директория Upstart script:

sudo cp puma.conf puma-manager.conf /etc/init 

puma-manager.conf скрипт ссылается на /etc/puma.conf, этот файл  необходим для управления puma. Давайте создадим его:

sudo touch /etc/puma.conf

 И укажем в нем директрию, в которой лежит redmine.

Установка и настройка WEB-сервера

В зависимости от ваших предпочтений вы можете выбрать любой web-сервер на ваше усмотрение. Но чаще всего выбирают между Apache и Nginx. Статья Apache vs Nginx: практический взгляд поможет вам выбрать между ними, а если не сможете, то ничего страшного, берите любой. Для случаев когда в Redmine работает менее 500 человек, любой web-сервер будет работать хорошо. Я вам расскажу, как настроить Nginx.

Установка и настройка Nginx

sudo apt-get install nginx

 Переходим в каталог /etc/nginx/conf.d и создаем там файл redmine.conf со следующим содержимым:

upstream redmine {
    # Path to Puma SOCK file, as defined previously
    server unix:/your_redmine_directory/redmine/tmp/sockets/puma.sock fail_timeout=0;
} server { listen 80; server_name your_domain_name; root /your_redmine_directory/redmine/public;
try_files $uri/index.html $uri @redmine; location @redmine { proxy_pass http://redmine; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_redirect off; proxy_read_timeout 1800; proxy_send_timeout 1800; send_timeout 1800; }
# error_page 500 502 503 504 /500.html; # client_max_body_size 4G; # keepalive_timeout 10; }

После этого перезагружаем nginx:

sudo service nginx restart

Или 

sudo systemctl restart nginx

Перезапустите puma.


Поздравляю, вы установли Redmine. Вам осталось установить плагины и наслаждаться работой в удобной системе.

 

 

Label_tags Redmine, Установка, Install