3 votos

Redmine no puede funcionar en apache2 con passenger: versión incompatible de la biblioteca nokogiri

Quiero instalar redmine en mi PC. He trabajado con tutoriales de http://redmine.org/ para desplegar redmine en mi PC. Después de instalar ruby, paquetes adicionales y redmine, quiero configurar apache2 para redmine. Pero tengo un problema al acceder a la aplicación:

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

He instalado ruby on Rails a través de 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 con /etc/apache2/mods-available/passenger.conf configurar:

<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>

y configurar 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>

Registro de errores de 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.

Archivo nokogiri.so está presente en la carpeta.

Si ejecuto el servidor Rails, redmine se inicia y funciona bien.

¿Alguien sabe cómo solucionar este problema?

1voto

Jon Trauntvein Puntos 1513

No veo qué versión de Ruby está siendo iniciada por Passenger pero sospecho que tienes un conflicto entre el Ruby del sistema (v2.3.1) y el Ruby del RVM (v2.3.3).

Si se observa la salida de ruby -v , se obtiene ruby 2.3.1p112 . Pero el archivo de registro que has publicado tiene la siguiente ruta: .../.rvm/gems/ruby-2.3.3/ . Así que creo que correr rails funciona directamente porque utiliza gemas del sistema, pero cuando ejecuta Passenger, utiliza el sistema Ruby (por PassengerDefaultRuby ), pero de alguna manera intenta cargar gemas incompatibles. Te recomiendo que vuelvas sobre tus pasos y elijas entre system Ruby y RVM. En caso de que hayas seguido alguna guía de instalación, por favor añádela a tu pregunta.

Si desea utilizar el sistema Ruby, intente eliminar /opt/redmine/.rvm . Si tiene problemas con las dependencias entonces, puede instalarlas usando bundle install --deployment por lo que estará contenido en el directorio de Redmine (ver modo de despliegue ). Asegúrese de que la cuenta de usuario bajo la que está Passenger tiene acceso de lectura a todos los archivos en /opt/redmine .

Alternativamente, puede instruir a Passenger para que use un Ruby diferente con Redmine usando PasengerRuby opción de configuración, véase https://www.phusionpassenger.com/library/deploy/apache/deploy/ruby/

0voto

Simon Puntos 58

¿Has considerado usar Docker? Puedo ver que está ejecutando una VM, y si usted es capaz de considerar Docker creo que podría beneficiarse enormemente.

Qué es docker

Docker es la principal plataforma de contenedores de software del mundo. Los desarrolladores utilizan Docker para eliminar los problemas de "funciona en mi máquina" cuando colaboran en el código con sus compañeros de trabajo. Los operadores utilizan Docker para ejecutar y gestionar aplicaciones en paralelo en contenedores aislados para obtener una mayor densidad de computación. Las empresas utilizan Docker para crear canalizaciones ágiles de entrega de software para enviar nuevas funciones de forma más rápida, más segura y con confianza, tanto para aplicaciones de Linux como de Windows Server.

¿Por qué lo usas?

Parece un poco complicado entrar en él, pero es bastante sencillo una vez que se le coge el truco. Es sobre todo la construcción y el diseño de la arquitectura de las imágenes/contenedores y servicios lo que es difícil de hacer bien al principio, pero si sólo usas las imágenes de stock proporcionadas por las comunidades alrededor de Docker puedes llegar bastante lejos.

Hace poco probé Redmine yo mismo usando sólo Docker porque es más fácil mantener un sistema operativo limpio cuando tienes este tipo de problemas. Corro Arch Linux en mis portátiles principales y a menudo me encuentro con problemas en los que las versiones antiguas son eliminadas y no están fácilmente disponibles de AUR .

La idea es que usted busque el Imagen de Docker Redmine (o construya el suyo propio), configure un docker-compose.yml O ejecute two commands : Primero inicie su servidor SQL, cualquiera que sea, y otro para iniciar el servidor que ejecuta Redmine ( docker run -d --name some-redmine redmine ). Estos pasos están documentados en la página de la imagen.

Otras cosas que hay que tener en cuenta es cómo se manejan los datos persistentes, como la base de datos, que varía en su configuración. No estoy seguro de dónde están mis archivos de configuración en este momento, pero si los encuentro los añadiré aquí.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: