Настройка приложения 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.

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

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

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

Какие-либо предложения?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
11
0
16 845
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 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.

Я настоятельно рекомендую Passenger. Делает размещение рельсов почти таким же простым, как PHP.

Samuel 23.01.2009 01:40

Я использую окна, поэтому не думаю, что это сработает для меня. Спасибо хоть.

Michael Haren 23.01.2009 02:04

На самом деле это ActionController :: Base.relative_url_root начиная с Rails 2.3.x

Wojciech Kaczmarek 20.05.2010 18:45

Вам нужно устанавливать разные порты для каждого приложения Rails?

Olivier Lalonde 18.11.2010 23:21

@Olivier У меня он работает только под другим портом (3000), потому что apache работает на порту 80. Если вы размещаете несколько приложений rails с одним и тем же веб-сервером, вы должны использовать один и тот же порт для всех

Michael Haren 19.11.2010 01:23

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

Тем не менее, это первый результат Google, и Майкл добавил тег windows2003 более 3 часов назад.

Samuel 23.01.2009 05:13

И при чем тут windows2003? Пассажирские работы.

Ryan Bigg 23.01.2009 08:23

Со стороны пассажира окна не поддерживаются. Если это так, пожалуйста, дайте ссылку об этом, и я проверю!

Michael Haren 23.01.2009 17:05

Если вы все еще хотите использовать 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_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

/ Дэмиен

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

Нет - и без плановой поддержки Windows. См. bitnami.org/forums/forums/2/topics/477

Damien 10.02.2009 00:12

Другие вопросы по теме