Redmine не может работать на apache2 с пассажиром: несовместимая версия библиотеки nokogiri

Я хочу установить redmine на свой компьютер. Я работал с учебниками из http://redmine.org/, чтобы развернуть redmine на моем ПК. После установки ruby, дополнительных пакетов и redmine, я хочу настроить apache2 для redmine. Но есть проблема после доступа к приложению:

Message from application: incompatible library version - /opt/redmine/.rvm/gems/ruby-2.3.3/gems/nokogiri-1.7.2/lib/nokogiri/nokogiri.so

Я установил ruby ​​on rails через rvm:

oleg@oleg-VirtualBox ~ $ ruby -v ruby 2.3.1p112 (2016-04-26) [x86_64-linux-gnu] oleg@oleg-VirtualBox ~ $ rails -v Rails 4.2.8

установлен libapache2-mode-passenger с /etc/apache2/mods-available/passenger.conf config:

<IfModule mod_passenger.c> PassengerUserSwitching on PassengerUser redmine PassengerGroup redmine PassengerRoot /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini PassengerDefaultRuby /usr/bin/ruby </IfModule>

и config для redmine:

<VirtualHost *:80> DocumentRoot /var/www/html/redmine/ ServerName redmine.local <Directory /var/www/html/redmine/> PassengerResolveSymlinksInDocumentRoot on AllowOverride all Options -MultiViews Options FollowSymLinks RailsBaseURI /redmine </Directory> </VirtualHost>

Журнал ошибок Apache:

[ 2017-07-04 13:53:21.9413 1661/7f51d8495700 age/Cor/App/Implementation.cpp:304 ]: Could not spawn process for application /opt/redmine/redmine: An error occurred while starting up the preloader. Error ID: 28c6ac21 Error details saved to: /tmp/passenger-error-GYyEzF.html Message from application: incompatible library version - /opt/redmine/.rvm/gems/ruby-2.3.3/gems/nokogiri-1.7.2/lib/nokogiri/nokogiri.so (LoadError) /opt/redmine/.rvm/gems/ruby-2.3.3/gems/nokogiri-1.7.2/lib/nokogiri.rb:32:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/nokogiri-1.7.2/lib/nokogiri.rb:32:in `rescue in <top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/nokogiri-1.7.2/lib/nokogiri.rb:28:in `<top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-3.2.2/lib/roadie/inliner.rb:2:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-3.2.2/lib/roadie/inliner.rb:2:in `<top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-3.2.2/lib/roadie.rb:29:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-3.2.2/lib/roadie.rb:29:in `<top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-rails-1.1.1/lib/roadie/rails.rb:6:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-rails-1.1.1/lib/roadie/rails.rb:6:in `<top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-rails-1.1.1/lib/roadie-rails.rb:1:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/roadie-rails-1.1.1/lib/roadie-rails.rb:1:in `<top (required)>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:82:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:82:in `block (2 levels) in require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:77:in `each' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:77:in `block in require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:66:in `each' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler/runtime.rb:66:in `require' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/bundler-1.15.1/lib/bundler.rb:108:in `require' /opt/redmine/redmine-3.3.4/config/application.rb:5:in `<top (required)>' /opt/redmine/redmine-3.3.4/config/environment.rb:2:in `require' /opt/redmine/redmine-3.3.4/config/environment.rb:2:in `<top (required)>' config.ru:3:in `require' config.ru:3:in `block in <main>' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/rack-1.6.8/lib/rack/builder.rb:55:in `instance_eval' /opt/redmine/.rvm/gems/ruby-2.3.3/gems/rack-1.6.8/lib/rack/builder.rb:55:in `initialize' config.ru:1:in `new' config.ru:1:in `<main>' /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `eval' /usr/share/passenger/helper-scripts/rack-preloader.rb:110:in `preload_app' /usr/share/passenger/helper-scripts/rack-preloader.rb:156:in `<module:App>' /usr/share/passenger/helper-scripts/rack-preloader.rb:30:in `<module:PhusionPassenger>' /usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<main>' [ 2017-07-04 13:53:21.9466 1661/7f51d3fff700 age/Cor/Con/CheckoutSession.cpp:285 ]: [Client 1-1] Cannot checkout session because a spawning error occurred. The identifier of the error is 28c6ac21. Please see earlier logs for details about the error.

Файл nokogiri.so присутствует в папке.

Если вы запускаете сервер rails, redmine запускается и работает хорошо.

Кто-нибудь знает, как исправить проблему?

2
задан 4 July 2017 в 14:10

4 ответа

Я не вижу, какая версия Ruby запускается Passenger, но я подозрюю, что у вас есть конфликт между системой Ruby (v2.3.1) и RVM Ruby (v2.3.3).

Если вы смотрите на выход ruby -v, вы получаете ruby 2.3.1p112. Но файл журнала, который вы опубликовали, имеет следующий путь: .../.rvm/gems/ruby-2.3.3/. Поэтому я думаю, что запуск rails напрямую работает, потому что вы используете системные драгоценные камни, но когда вы запускаете Passenger, он использует систему Ruby (per PassengerDefaultRuby), но каким-то образом пытается загрузить несовместимые драгоценные камни. Я рекомендую отменить шаги и выбрать между системой Ruby и RVM. Если вы выполнили какое-либо руководство по установке, добавьте его в свой вопрос.

Если вы хотите использовать систему Ruby, попробуйте удалить /opt/rubymine/.rvm. Если у вас есть проблемы с зависимостями, вы можете установить их с помощью bundle install --deployment, поэтому он будет содержаться в каталоге Rubymine (см. Режим развертывания). Убедитесь, что учетная запись пользователя, под которой находится Пассажир, имеет доступ для чтения ко всем файлам в /opt/redmine.

В качестве альтернативы вы можете поручить Пассажиру использовать другой Ruby с Redmine с использованием опции конфигурации PasengerRuby, см. [D3] режим развертывания

0
ответ дан 18 July 2018 в 10:44

Считаете ли вы использование Docker? Я вижу, что вы запускаете виртуальную машину, и если вы можете рассмотреть Docker, я думаю, что вы могли бы очень выиграть.

Что такое docker

Docker - это ведущая в мире программная контейнерная платформа , Разработчики используют Docker для устранения проблем «работы на моей машине» при сотрудничестве с кодом с коллегами. Операторы используют Docker для запуска и управления приложениями бок о бок в изолированных контейнерах для повышения плотности вычислений. Предприятия используют Docker для создания гибких программных конвейеров для доставки новых функций быстрее, безопаснее и с уверенностью для приложений Linux и Windows Server.

Зачем вы его используете?

Кажется, что вам сложно войти, но это довольно просто, как только вы получите его. Это в основном дизайн зданий и архитектуры изображений / контейнеров и сервисов, которые трудно получить сразу, но если вы просто используете фондовые изображения, предоставленные сообществами вокруг Docker, вы можете получить довольно далеко.

Недавно я попробовал Redmine самостоятельно, используя только Docker, потому что легче поддерживать чистую ОС при возникновении таких проблем. Я запускаю Arch Linux на своих основных ноутбуках, и я часто сталкиваюсь с проблемами, когда старые версии выходят из строя и не доступны из AUR.

Идея состоит в том, что вы извлекаете AUR (или создаете свои собственные), настраиваете docker-compose.yml OR run two commands: сначала запустите свой SQL-сервер, в зависимости от того, быть, а другой - запустить сервер, на котором работает Redmine (docker run -d --name some-redmine redmine). Эти действия задокументированы на странице для изображения.

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

0
ответ дан 18 July 2018 в 10:44

Я не вижу, какая версия Ruby запускается Passenger, но я подозрюю, что у вас есть конфликт между системой Ruby (v2.3.1) и RVM Ruby (v2.3.3).

Если вы смотрите на выход ruby -v, вы получаете ruby 2.3.1p112. Но файл журнала, который вы опубликовали, имеет следующий путь: .../.rvm/gems/ruby-2.3.3/. Поэтому я думаю, что запуск rails напрямую работает, потому что вы используете системные драгоценные камни, но когда вы запускаете Passenger, он использует систему Ruby (per PassengerDefaultRuby), но каким-то образом пытается загрузить несовместимые драгоценные камни. Я рекомендую отменить шаги и выбрать между системой Ruby и RVM. Если вы выполнили какое-либо руководство по установке, добавьте его в свой вопрос.

Если вы хотите использовать систему Ruby, попробуйте удалить /opt/rubymine/.rvm. Если у вас есть проблемы с зависимостями, вы можете установить их с помощью bundle install --deployment, поэтому он будет содержаться в каталоге Rubymine (см. Режим развертывания). Убедитесь, что учетная запись пользователя, под которой находится Пассажир, имеет доступ для чтения ко всем файлам в /opt/redmine.

В качестве альтернативы вы можете поручить Пассажиру использовать другой Ruby с Redmine с использованием опции конфигурации PasengerRuby, см. [D3] режим развертывания

0
ответ дан 24 July 2018 в 19:38

Считаете ли вы использование Docker? Я вижу, что вы запускаете виртуальную машину, и если вы можете рассмотреть Docker, я думаю, что вы могли бы очень выиграть.

Что такое docker

Docker - это ведущая в мире программная контейнерная платформа , Разработчики используют Docker для устранения проблем «работы на моей машине» при сотрудничестве с кодом с коллегами. Операторы используют Docker для запуска и управления приложениями бок о бок в изолированных контейнерах для повышения плотности вычислений. Предприятия используют Docker для создания гибких программных конвейеров для доставки новых функций быстрее, безопаснее и с уверенностью для приложений Linux и Windows Server.

Зачем вы его используете?

Кажется, что вам сложно войти, но это довольно просто, как только вы получите его. Это в основном дизайн зданий и архитектуры изображений / контейнеров и сервисов, которые трудно получить сразу, но если вы просто используете фондовые изображения, предоставленные сообществами вокруг Docker, вы можете получить довольно далеко.

Недавно я попробовал Redmine самостоятельно, используя только Docker, потому что легче поддерживать чистую ОС при возникновении таких проблем. Я запускаю Arch Linux на своих основных ноутбуках, и я часто сталкиваюсь с проблемами, когда старые версии выходят из строя и не доступны из AUR.

Идея состоит в том, что вы извлекаете AUR (или создаете свои собственные), настраиваете docker-compose.yml OR run two commands: сначала запустите свой SQL-сервер, в зависимости от того, быть, а другой - запустить сервер, на котором работает Redmine (docker run -d --name some-redmine redmine). Эти действия задокументированы на странице для изображения.

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

0
ответ дан 24 July 2018 в 19:38

Другие вопросы по тегам:

Похожие вопросы: