2010-04-28 9 views
5

He estado investigando este tema y encontré referencias a problemas similares aquí y allá, pero ninguno de ellos ha dado lugar a una solución todavía. He instalado pasajero (2.2.11) y nginx (0.7.64) y cuando inicio las cosas y presiono una URL de Rails, aparece una página de error que me informa de un error de carga:Problema con el pasajero: "no se carga ese archivo" -/config/environment

no se carga ese archivo -/ruta/a/aplicación/configuración/entorno

Por lo que he encontrado en línea esto parece ser un error de usuario/permiso, pero he intentado todas las soluciones lógicas: He hecho Asegúrese de que /config/environment.rb no sea propiedad de root, sino de un usuario de aplicación web. Intenté configurar passenger_default_user, intenté desactivar passenger_user_switching. Incluso he intentado configurar el usuario de nginx, aunque eso no debería importar mucho. He obtenido resultados diferentes, pero nada ha funcionado. Espero que alguien pueda tener la combinación mágica de configuraciones y permisos para esto. Puedo intentar retroceder a una versión anterior de Passenger, porque nunca antes había tenido este problema; Ha pasado un tiempo desde que configuré Passenger.

Gracias por cualquier sugerencia.

EDITADO: Vea a continuación la respuesta que encontré.

+0

Debe mover la solución a su pregunta a su propia respuesta, luego marque la respuesta como aceptada. –

Respuesta

2

Naturalmente, me llevó a publicar la pregunta para tropezar con la respuesta. Para proporcionar información a cualquier persona que busque este problema, publicaré algunos detalles aquí.

Las líneas relevantes de la nginx.conf:

usuario www-datos; # para que nginx no se ejecute como root

passenger_default_user www-data; # del mismo modo para el pasajero

root/opt/foo/app/current/public;

La clave en este punto es asegurarse de que los archivos de la aplicación son propiedad de www-data, en particular config/environment.rb porque aparentemente Passenger mira a su propietario para determinar con quién ejecutar. Esto podría significar que la entrada passenger_default_user es irrelevante? Pero es bueno tenerlo allí como documentación de intención de todos modos, tal vez.

Finalmente, asegúrese de que todos los directorios principales de su aplicación sean accesibles mediante www-data; en mi caso, la configuración predeterminada del sistema había dejado un directorio 0700, que me había perdido.

+0

¿Qué tal configurar una * PassengerUser * como se indica en la [documentación] (http://www.modrails.com/documentation/Users%20guide%20Apache.html#_passengeruser_lt_username_gt)? – JJD

1

Modern Passenger prefiere Rack to Rails. Si tiene un config.ru en su aplicación Rails, Passenger intentará cargarlo como una aplicación Rack. Esto puede estar causando problemas. En particular, su mensaje de error se refiere a config/environment - tenga en cuenta la falta de la extensión .rb típica en una aplicación Rails.

Trate de mover config.ru fuera del camino si existe.

+1

Gracias por la idea: también he visto una nota sobre la preferencia de Rack en otros lugares, pero esta es una aplicación antigua y sencilla de Rails. La falta de la extensión .rb también me pareció extraña, y todavía no encontré ninguna explicación para eso en ningún lugar ... – Masonoise

+0

Bueno, lo intenté y ahora mi servidor es 100% estático ... – Antzi

Cuestiones relacionadas