Чиним Redmine после обновления Debian до Jessie

После обновления Debian с Wheezy до Jessie перестал работать Redmine, настроенный по заметке Установка Redmine в Debian Wheezy.

Во-первых, поскольку в дистрибутиве Jessie вместо плагинов uwsgi_rack_ruby18 и uwsgi_rack_ruby191 имеется только плагин uwsgi_rack_ruby21, использовать теперь нужно именно его.

Во-вторых, в каталоге, на который указывала опция rails, появился файл config.ru, поэтому uwsgi предлагает воспользоваться опцией rack, которой и нужно указать этот файл. Однако, одной этой опции rack недостаточно для правильной работы, нужно ещё указать опцию chdir, указав в ней путь к каталогу, где находится приложение.

Опция post-buffering теперь не обязательна, поэтому её можно убрать.

В результате получился такой вот файл /etc/uwsgi/apps-available/redmine.ini:

[uwsgi]

procname = uwsgi-redmine
procname-master = uwsgi-redmine-master
  
plugin = uwsgi_rack_ruby21
env = RAILS_RELATIVE_URL_ROOT=/redmine
env = RAILS_ENV=production
chdir = /usr/share/redmine
rack = /usr/share/config.ru
processes = 2

Это всё было довольно быстро исправлено, но этого оказалось не достаточно. Осталась ещё одна проблема, которая заключалась в том, что redmine наотрез отказывался принимать во внимание переменную окружения RAILS_RELATIVE_URL_ROOT, которая позволяла получить доступ к приложению не через корневой каталог сервера, а поместить его в подкаталог. В данном случае этим каталогом являлся каталог /redmine/.

Вмешиваться в код приложения не хотелось, поэтому я искал другой способ исправить ситуацию. Чего я только не пробовал... В конце концов приспособил комментарий habermann24 commented on 13 May и создал файл /etc/redmine/config.ru со следующим содержимым:

require ::File.expand_path('/usr/share/redmine/config/environment', __FILE__)
map ENV['RAILS_RELATIVE_URL_ROOT'] || '/' do
  run RedmineApp::Application
end

Этот файл я указал в конфигурации /etc/uwsgi/apps-available/redmine.ini, заменив значение опции rack:

rack = /etc/redmine/config.ru

После добавления такого костыля и перезапуска uwsgi, всё заработало как положено.

К сожалению, подобные недоработки в Debian стали встречаться чаще. Может быть качество объективно падает, а может быть я чаще стал пользоваться всякими маргинальными программами и поэтому подобные недоработки просто стали мне чаще попадаться.

Написать автору