Настройка Sinatra для запуска в подкаталоге - PullRequest
4 голосов
/ 28 сентября 2011

Теперь я довольно новичок в Sinatra / Ruby / Apache, но унаследовал приложение Sinatra для развертывания.

В настоящее время Apache настроен для запуска из корня документа (httpdocs), и мне нужно запустить rubyприложение в подкаталоге папки, например: / httpdocs / webapp

Что мне нужно сделать, чтобы запустить его в подкаталоге?

Ответы [ 2 ]

2 голосов
/ 28 сентября 2011

Эта ссылка может быть полезной, она объясняет, как развернуть приложение Sinatra с Apache с использованием Passenger (mod_rack): Развертывание приложения Sinatra с Apache и Phusion Passenger

Часть конкретногоВас интересует опция RackBaseURI в конфигурации виртуального хоста.Официальная документация доступна здесь: Руководство пользователя Phusion Passenger - Развертывание Rack to Sub URI

1 голос
/ 07 октября 2018

Я просто столкнулся с той же проблемой.Поскольку здесь не было ответа о том, как это сделать без Passenger, я собираюсь документировать решение для Apache + CGI или FastCGI.

Хитрость заключается в том, чтобы переписать PATH_INFO для Rack, и все упадетна место:

  1. Настройка .htaccess:

     RewriteEngine On
     RewriteRule ^(.*)$ sinatra_app.cgi [QSA,L,E=PATHINFO:/$1]
    
  2. В вашем коде Синатры, прежде всего:

     ENV['PATH_INFO'] = ENV['REDIRECT_PATHINFO']
    

Теперь все URL-адреса, такие как /subfolder/resource/123, будут указывать правильный маршрут в приложении Sinatra.
В приведенном выше случае get '/resource/:id' будет работать правильно, если приложение Sinatra было помещено в * 1022.*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...