Configuración de la aplicación Ruby On Rails en un subdirectorio bajo Apache
ruby 2.3 download windows (4)
Tengo Apache2.2 en Windows. Estoy intentando servir tanto subversion (/ svn) como redmine (/ redmine). Tengo svn corriendo bien con esta configuración:
<Location /svn>
DAV svn
SVNParentPath C:/svn_repository
...
</Location>
Esto funciona muy bien: mis usuarios svn pueden presionar http: // mybox / svn muy bien.
Ahora quiero agregar otro directorio para una aplicación de rieles (RedMine):
Seguí el consejo en esta pregunta para configurar un servidor mongrel y tener clientes proxy apache. Funciona bien si lo hago la raíz, pero tengo problemas para hacerlo en un subdirectorio:
<Location /redmine>
ProxyPass http://localhost:3000/
ProxyPassReverse http://localhost:3000/
</Location>
¿Alguna sugerencia?
Passenger ( http://modrails.com ) es una mejor alternativa a fastcgi porque es muy fácil de configurar. Recomiendo usar esto para alojar tus aplicaciones de rails usando una configuración similar a la que tienes ahora.
En caso de que aún desee utilizar Mongrel + Apache utilizando un proxy inverso, aquí es cómo resolví el mismo problema en nuestro sistema (Win2k3, Apache 2.2, troncal de Redmine). El secreto es instalar tu servicio mongrel usando --prefix /redmine
que le dice que lo sirva desde http://localhost:port/redmine
En Apache httpd.conf (o archivo de inclusión adecuado):
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
<IfModule mod_proxy.c>
ProxyRequests Off
#No need to forward on static content - let apache do it faster
ProxyPass /redmine/images !
ProxyPass /redmine/stylesheets !
ProxyPass /redmine/javascript !
# Remove the following entry on public sites as this is insecure
ProxyPass /redmine/plugin_assets !
ProxyPass /redmine/help !
ProxyPass /redmine http://localhost:4000/redmine
ProxyPassReverse /redmine http://localhost:4000/redmine
ProxyPreserveHost On
#continue with other static files that should be served by apache
Alias /redmine/images C:/Repositories/redmine/public/images/
Alias /redmine/stylesheets C:/Repositories/redmine/public/stylesheets/
Alias /redmine/javascript C:/Repositories/redmine/public/javascript/
# Remove the following on public sites as this is insecure
Alias /redmine/plugin_assets C:/Repositories/redmine/public/plugin_assets/
Alias /redmine/help C:/Repositories/redmine/public/help/
</IfModule>
# Make sure apache can see public and all subfolders - not suitable for public sites
<Directory "C:/Repositories/redmine/public/">
Allow from all
Order allow,deny
</Directory>
Mongrel está instalado como tal:
mongrel_rails service::install --prefix /redmine -N redmine_prod -p 4000 -e production -c C:/Repositories/redmine
Espero que ayude a alguien. Inicialmente, intenté configurar Apache + fastcgi, etc., pero perdí más pelo precioso, no es amigable para Windows.
PD: Encontré este PDF como una referencia muy útil: http://www.napcsweb.com/howto/rails/deployment/RailsWithApacheAndMongrel.pdf
/ Damien
Estoy de acuerdo con Radar. Passenger es realmente fácil de configurar, permite que las aplicaciones de Rails compartan memoria, elimina la carga de administrar un grupo de mongrels y no requiere prácticamente ninguna configuración. Todo lo que necesita es un archivo especial ''config.ru'' con una configuración de RackUp y un DocumentRoot que apunte a RAILS_ROOT / public set en Apache.
Esto es lo que tuve que cambiar:
Eliminé la barra final:
<Location /redmine>
ProxyPass http://localhost:3000
ProxyPassReverse http://localhost:3000/
</Location>
Y en mi aplicación de rieles:
# added to end of file C:/redmine/config/environment.rb
ActionController::AbstractRequest.relative_url_root = "/redmine"
¡Ahora funciona!
No estaba completamente satisfecho con este enfoque, me encontré con algunos problemas de redirección. Este es otro intento que parece estar funcionando bien hasta ahora.
Este segundo enfoque parece mejor.
ACTUALIZAR:
Como se señaló en los comentarios, para las aplicaciones más recientes que se ejecutan en Rails 2.3.2+, use esto en su lugar:
config.action_controller.relative_url_root = ''/redmine''
Lo puse en el nuevo archivo additional_environment.rb
.