Конфигуриране на приложението Ruby On Rails в поддиректория под Apache

Имам apache2.2 на Windows. Опитвам се да обслужвам както subversion (/svn), така и redmine (/redmine). Имам svn, който работи добре с тази конфигурация:

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

Това работи чудесно – моите svn потребители могат да натиснат http://mybox/svn съвсем добре.

Сега искам да добавя друга директория за приложение за релси (RedMine):

Следвах съвета в това въпрос, за да настроите мелез сървър и да имате Apache прокси клиенти до него. Работи добре, ако го направя root--но имам проблем да го направя в поддиректория:

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

Някакви предположения?


person Michael Haren    schedule 22.01.2009    source източник


Отговори (4)


Ето какво трябваше да променя:

Премахнах наклонената черта в края:

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

И в моето приложение за релси:

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

Сега работи!


Не бях напълно доволен от този подход - срещнах някои проблеми с пренасочването. Това е още един опит, който засега изглежда работи добре.

Този втори подход изглежда по-добър.


АКТУАЛИЗАЦИЯ:

Както е отбелязано в коментарите, за по-нови приложения, работещи на Rails 2.3.2+, използвайте това вместо това:

config.action_controller.relative_url_root = '/redmine'

Сложих го в новия файл additional_environment.rb.

person Michael Haren    schedule 22.01.2009
comment
Горещо препоръчвам Passenger. Прави хостинг релсите почти толкова лесни, колкото PHP. - person Samuel; 23.01.2009
comment
Аз съм на Windows, така че не мисля, че това ще работи за мен. Благодаря все пак. - person Michael Haren; 23.01.2009
comment
Това всъщност е ActionController::Base.relative_url_root от Rails 2.3.x - person Wojciech Kaczmarek; 20.05.2010
comment
Трябва ли да зададете различен порт за всяко приложение на Rails? - person Olivier Lalonde; 18.11.2010
comment
@Olivier разполагам само с това, че работи под различен порт (3000), защото apache работи на порт 80. Ако хоствате множество rails приложения с един и същ уеб сървър, ще използвате един и същ порт за всички - person Michael Haren; 19.11.2010

В случай, че все още желаете да използвате Mongrel + Apache с помощта на обратен прокси, ето как реших същия проблем в нашата система (Win2k3, Apache 2.2, багажник на Redmine). Тайната е да инсталирате вашата мелез услуга с помощта на --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

/Деймиън

person Damien    schedule 09.02.2009

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

person Ryan Bigg    schedule 23.01.2009
comment
Въпреки това, това е първият резултат в Google и Майкъл добави маркера windows2003 преди повече от 3 часа. - person Samuel; 23.01.2009
comment
И какво общо има с това windows2003? Пътнически работи. - person Ryan Bigg; 23.01.2009
comment
Според сайта на пътника windows не се поддържа. Ако е така, моля, дайте линк, който казва това, и аз ще го проверя! - person Michael Haren; 23.01.2009

Съгласен съм с Radar. Passenger е наистина лесен за настройка, позволява на приложенията на Rails да споделят памет, премахва тежестта на управлението на клъстер от мелези и практически не изисква конфигурация. Всичко, от което се нуждаете, е специален файл 'config.ru' с конфигурация на RackUp и DocumentRoot, сочещ към RAILS_ROOT/public, зададен в Apache.

person Aram Verstegen    schedule 09.02.2009
comment
Не - изглежда и без планирана поддръжка за Windows. Вижте bitnami.org/forums/forums/2/topics/477 - person Damien; 10.02.2009