Настройка приложения Ruby On Rails в подкаталоге под Apache - PullRequest
11 голосов
/ 23 января 2009

У меня есть apache2.2 на Windows. Я пытаюсь обслуживать как subversion (/ svn), так и redmine (/ redmine). У меня SVN работает нормально с этим конфигом:

<Location /svn>
  DAV svn
  SVNParentPath C:/svn_repository
  ...
</Location>

Это работает отлично - мои пользователи SVN могут нажать http://mybox/svn просто отлично.

Теперь я хочу добавить еще один каталог для приложения rails (RedMine):

Я следовал совету в этом вопросе , чтобы настроить сервер mongrel и подключить к нему прокси-клиенты apache. Он работает нормально, если я сделаю его рутом - но у меня возникают проблемы при его создании в подкаталоге:

<Location /redmine>
  ProxyPass http://localhost:3000/
  ProxyPassReverse http://localhost:3000/
</Location>

Есть предложения?

Ответы [ 4 ]

15 голосов
/ 23 января 2009

Вот что мне пришлось изменить:

Я удалил косую черту:

<Location /redmine>
  ProxyPass http://localhost:3000
  ProxyPassReverse http://localhost:3000/
</Location>

И в моем приложении rails:

# added to end of file C:\redmine\config\environment.rb
ActionController::AbstractRequest.relative_url_root = "/redmine"

Теперь работает!


Я не был полностью доволен этим подходом - я столкнулся с некоторыми проблемами перенаправления. Это еще одна попытка, которая пока работает хорошо.

Этот второй подход кажется лучше.


UPDATE:

Как отмечено в комментариях, для более поздних приложений, работающих на Rails 2.3.2+, используйте вместо этого:

config.action_controller.relative_url_root = '/redmine'

Я поместил его в новый файл additional_environment.rb.

1 голос
/ 09 февраля 2009

Если вы все еще хотите использовать Mongrel + Apache с использованием обратного прокси-сервера, вот как я решил ту же проблему в нашей системе (Win2k3, Apache 2.2, транк Redmine). Секрет заключается в том, чтобы установить службу mongrel с помощью --prefix /redmine, которая указывает, что она будет обслуживаться с http://localhost:port/redmine

В Apache httpd.conf (или подходящий файл для включения):

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 установлен как таковой:

mongrel_rails service::install --prefix /redmine -N redmine_prod -p 4000 -e production -c C:\Repositories\redmine

Надеюсь, это кому-нибудь поможет. Сначала я пытался настроить Apache + fastcgi и т. Д., Но потерял больше ценных волос - это не подходит для Windows.

P.s. Я нашел этот PDF очень полезным референом: http://www.napcsweb.com/howto/rails/deployment/RailsWithApacheAndMongrel.pdf

/ Damien

0 голосов
/ 09 февраля 2009

Я согласен с радаром. Passenger действительно прост в настройке, позволяет приложениям Rails совместно использовать память, снимает бремя управления кластером полукровок и практически не требует настройки. Все, что вам нужно, это специальный файл config.ru с RackUp config и DocumentRoot, указывающим на RAILS_ROOT / публичный набор в Apache.

0 голосов
/ 23 января 2009

Passenger (http://modrails.com) - лучшая альтернатива fastcgi, потому что ее очень легко настроить, я бы порекомендовал использовать ее для размещения ваших приложений rails, используя конфигурацию, аналогичную той, что у вас сейчас

...