Redmine на Debian с NGinx + Passenger + RVM

Крутость веб-сервера NGinx уже давно не вызывает никаких сомнений. Легкость, производительность и гибкость — эти 3 кита помогают этому продукту завоевывать всё большую аудиторию. При любой возможности отказаться от каких либо веб-серверов и заменить из NGinx-ом я использую эту самую возможность. При очередной установке трекера задач Redmine решил не использовать ни Puma ни Thin, а обойтись исключительно NGinx. Далее пошаговая инструкция.
Установка некоторых пакетов, которые нам понядобятся

# apt-get install curl unzip vim

Разработка на Ruby легкая и приятная, но к ней нужно привыкнуть. Большое количество версий Ruby и gem-ов могут ввести в ступор. Но это только до того момента, пока вы не познакомитесь с RVM — Ruby Version Manager. Установим его

# gpg2 --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3
# \curl -sSL https://get.rvm.io | bash -s stable --ruby
# source /usr/local/rvm/scripts/rvm

Посмотрим список установленных версий

# rvm list
rvm rubies
=* ruby-2.4.0 [ i686 ]
# => - current
# =* - current && default
#  * - default

Не подходит. Будем использовать 2.3

# rvm install 2.3
# rvm remove 2.4.0
# rvm use 2.3

Наш редмайн будем запускать с mysql-бекендом. Установка пакетов проста

# apt-get install git subversion imagemagick libmagickwand-dev mysql-server libmysqlclient-dev

Создаём базу и пользователя для Redmine

mysql> create database redmine;
Query OK, 1 row affected (0.00 sec)

mysql> grant all privileges on redmine.* to redmine@localhost identified by 'redminepass';
Query OK, 0 rows affected (0.00 sec)

Скачиваем Redmine, распаковываем и кладем в нужный каталог

# wget http://www.redmine.org/releases/redmine-3.3.3.zip
# unzip redmine-3.3.3.zip
# mv redmine-3.3.3 /var/www/redmine

Создаём конфигурацию для связи с БД

# cd /var/www/redmine/
# cp config/database.yml.example config/database.yml

Подготовительные работы и наполнение БД

# gem install bundler
# bundle install --without development test
...
Bundle complete! 30 Gemfile dependencies, 55 gems now installed.

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

Займемся установкой Passenger и NGinx. Добавляем репозиторий и ключ

# apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys 561F9B9CAC40B2F7
# apt-get install -y apt-transport-https ca-certificates
# sh -c 'echo deb https://oss-binaries.phusionpassenger.com/apt/passenger jessie main > /etc/apt/sources.list.d/passenger.list'
# apt-get update

Устанавливаем NGinx c Passenger-ом

# apt-get install -y nginx-extras passenger

Теперь необходимо получить два значения что бы подружить NGinx и Passenger

# /usr/bin/passenger-config --root
/usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini

Вывод этой команды нужен для добавления в файл /etc/nginx/nginx.conf
Добавляем следующую строку в секцию http

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini

Сюжа же ниже добавляем следующие строки:

passenger_friendly_error_pages on;
passenger_user www-data;
passenger_group www-data;

И получаем путь к ruby интерпретатору

# passenger-config --ruby-command
passenger-config was invoked through the following Ruby interpreter:
  Command: /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby
  Version: ruby 2.3.3p222 (2016-11-21 revision 56859) [i686-linux]
  To use in Apache: PassengerRuby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby
  To use in Nginx : passenger_ruby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby
  To use with Standalone: /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby /usr/bin/passenger start

Эту строку можно добавить к настройке хоста

# cat /etc/nginx/sites-enabled/redmine.conf
server	{
	listen 80 default;
	root /var/www/redmine/public/;
	passenger_enabled on;
	passenger_ruby /usr/local/rvm/gems/ruby-2.3.3/wrappers/ruby;
	}

Перезапускаем NGinx и получаем вот такую красоту

Добавить комментарий