rails ruby-on-rails apache2 passenger ubuntu-10.10 mod-rails

ruby on rails - Problema de Rails Passenger con Apache2



nginx ruby on rails (4)

Creo que quieren que pongas esas tres líneas en tu archivo httpd.conf, no en tu apache2.conf. Al menos así es como siempre lo he hecho.

Estoy tratando de configurar un servidor Ruby on Rails en ubuntu10.10 con apache2 y mod_rails (Phusion Passenger).

Ya instalé ruby ​​1.9.2-p0 y rieles 3.0.8 e instalé Passenger con el módulo pasajero-install-apache2 y la gema del pasajero (v3.0.7).

Luego me dice que agregue 3 líneas a mi archivo de configuración de Apache. Así que agregué estas líneas a ''/etc/apache2/apache2.conf'':

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 PassengerRuby /usr/local/bin/ruby

Y edité mi ''/etc/apache2/httpd.conf'' y agregué:

NameVirtualHost *:80 <VirtualHost *:80> ServerName 192.168.0.2 DocumentRoot /var/www/webop/public <Directory /var/www/webop/public> Allow from all Options -MultiViews </Directory> </VirtualHost>

También descubrí que el archivo mod_passenger.so en /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/ en realidad no existe, su nombre es mod_passenger.c. Pero no recibo ningún error de eso.

El servidor solo debe ser accesible a través de una LAN. Cuando accedo al servidor, veo todos los archivos y directorios en la carpeta pública de mi aplicación, pero la aplicación en sí no se inicia.

Cuando reinicio apache, me dice que mod_rails ya está cargado, así que supongo que el pasajero está corriendo, ¡pero no entiendo por qué no inicia mi aplicación!

¡Gracias por adelantado!


Finalmente descubrí cuál era el problema: arruiné mi instalación de ruby.

En / usr / local / tuve ruby1.9.2-p0 instalado (que era la versión que quería usar) pero en / usr / i tenía ruby1.8.7 instalado.

Passenger estaba confundido sobre qué versión de ruby ​​utilizar, así que cambié las rutas LoadModule, PassengerRoot y PassengerRuby dentro de apache2 / mods-enabled / passenger.load y .config a las rutas correctas y ¡finalmente funcionó! Ambos archivos se crearon automáticamente, lo que también causó el problema de una redefinición: en el inicio de apache había una advertencia ''mod_passenger ya cargado''. Así que quité

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7 PassengerRuby /usr/local/bin/ruby

De la configuración de apache y la advertencia desapareció!

¡Probablemente esto ayudará a alguien más algún día!


Hoy me he encontrado con una solución más limpia. Esto podría ayudar a los futuros usuarios. El comando -

passenger-install-apache2-module

Me dice que ponga estas tres líneas en el archivo de configuración de apache.

LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so <IfModule mod_passenger.c> PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59 PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby </IfModule>

Pero, ¿dónde está ese archivo de configuración? La respuesta es que los archivos de configuración están separados en muchas partes y residen en /etc/apache2/mods-available .

Así que deberías hacer tres cosas ...

  1. Cree un archivo que termine con .load en la .load /etc/apache2/mods-available . Utilicé passenger.load .

  2. Pegue las tres líneas en ese archivo y guarde el archivo.

  3. Ahora, en la terminal, use sudo a2enmod <module-conf-filename> para habilitar el módulo. En mi caso, el archivo era, passenger.load . Así que, utilicé

    sudo a2enmod passenger

Ahora, reinicie el servidor y use el comando apache2ctl -M para encontrar que passenger módulo de passenger está habilitado.


La razón por la que mod_passenger.so no existe es porque no ha instalado el módulo Apache. Ejecutar:

passenger-install-apache2-module

Esto creará el archivo mod_passenger.so dentro de su directorio de gemas y le dará tres líneas para copiar en su archivo apache2.conf.

El módulo de pasajeros está instalado en su conjunto de aplicaciones actual, por lo que no debería tener conflictos entre proyectos. Puede usar cualquier versión compatible de Ruby y cualquier conjunto de gemas que desee, a través de RVM, y posiblemente también RBENV. Esto lo convierte en una ruta de actualización fácil y agradable de una versión de Ruby a la siguiente.