Крутость веб-сервера 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 и получаем вот такую красоту