Redmine não pode trabalhar no apache2 com passageiro: versão de biblioteca incompatível do nokogiri

2

Eu quero instalar o redmine no meu PC. Eu trabalhei com tutoriais do link para implantar o redmine no meu PC. Depois de instalar o ruby, pacotes adicionais e redmine, eu quero configurar o apache2 para o redmine. Mas tenha um problema depois de acessar o aplicativo:

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

Eu instalei o ruby on rails via 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

instalado libapache2-mode-passenger com /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>

e config para 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>

Log de erros do 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.

O arquivo nokogiri.so está presente na pasta.

Se executar o servidor rails, o redmine será iniciado e funcionará bem.

Alguém sabe como consertar o problema?

    
por Mubat 04.07.2017 / 13:10

2 respostas

0

Não vejo qual versão do Ruby está sendo iniciada pelo Passenger, mas desconfio que você tenha um conflito entre o sistema Ruby (v2.3.1) e o RVM Ruby (v2.3.3).

Se você observar a saída de ruby -v , receberá ruby 2.3.1p112 . Mas o arquivo de log que você publicou tem o seguinte caminho: .../.rvm/gems/ruby-2.3.3/ . Então eu acho que executar rails funciona diretamente porque você usa gems do sistema, mas quando você executa o Passenger, ele usa o sistema Ruby (por PassengerDefaultRuby ), mas de alguma forma ele tenta carregar gems incompatíveis. Eu recomendo retroceder seus passos e escolher entre o sistema Ruby e RVM. Caso você tenha seguido algum guia de instalação, adicione-o à sua pergunta.

Se você quiser usar o sistema Ruby, tente remover /opt/rubymine/.rvm . Se você tiver problemas com dependências, então você pode instalá-los usando bundle install --deployment , então ele estará contido no diretório do Rubymine (veja modo de implementação ). Certifique-se de que a conta de usuário sob a qual o Passenger tenha acesso de leitura a todos os arquivos em /opt/redmine .

Como alternativa, você pode instruir o Passenger a usar uma opção diferente de configuração Ruby com Redmine usando PasengerRuby , consulte link

    
por jnv 29.07.2017 / 20:17
0

Já pensou em usar o Docker? Posso ver que você está executando uma VM e, se for capaz de considerar o Docker, acho que você poderia se beneficiar muito.

O que é o docker

  

O Docker é a plataforma de contêiner de software líder mundial. Os desenvolvedores usam o Docker para eliminar problemas "funciona na minha máquina" ao colaborar no código com colegas de trabalho. Os operadores usam o Docker para executar e gerenciar aplicativos lado a lado em contêineres isolados para obter melhor densidade de computação. As empresas usam o Docker para criar pipelines de entrega de software ágil para enviar novos recursos com mais rapidez, segurança e confiança para os aplicativos Linux e Windows Server.

Por que você usaria isso?

Parece um pouco complicado para entrar, mas é bastante simples, uma vez que você pegar o jeito dele. É principalmente o projeto de arquitetura e construção de imagens / contêineres e serviços que é difícil de acertar no começo, mas se você usar apenas as imagens fornecidas pelas comunidades ao redor do Docker, você pode ir muito longe.

Eu recentemente tentei Redmine eu mesmo usando apenas o Docker porque é mais fácil manter um sistema operacional limpo quando você tem esse tipo de problema. Eu executo o Arch Linux em meus laptops principais e muitas vezes me deparo com problemas em que versões antigas são eliminadas e não estão prontamente disponíveis em AUR .

A ideia é que você busque o Docker Redmine Image (ou crie seu próprio ), configure um docker-compose.yml OU executar two commands : primeiro inicie seu servidor SQL, qualquer que seja, e outro para iniciar o servidor executando o Redmine ( docker run -d --name some-redmine redmine ). Essas etapas estão documentadas na página da imagem.

Outras coisas a serem observadas são como você lida com dados persistentes, como o banco de dados, que varia de acordo com sua configuração. Não tenho certeza de onde meus arquivos de configuração estão neste momento, mas se eu os encontrar vou adicioná-los aqui.

    
por Simon 01.08.2017 / 11:42