现在我对Sinatra / Ruby / Apache很新,但继承了要部署的Sinatra应用程序。
目前Apache已设置为从文档根目录(httpdocs)运行,我需要在文件夹子目录下运行ruby应用程序,例如:/ httpdocs / webapp
我需要做些什么才能在子目录下启动并运行?
答案 0 :(得分:2)
此链接可能会有所帮助,它解释了如何使用Passenger(mod_rack)与Apache部署Sinatra应用程序: Deploying a Sinatra App with Apache and Phusion Passenger
您特别感兴趣的部分是虚拟主机配置中的RackBaseURI
选项。官方文档可在此处获得:
Phusion Passenger users guide - Deploying Rack to Sub URI
答案 1 :(得分:1)
我只是遇到了同样的问题。由于这里没有关于没有乘客的情况下如何执行此操作的答案,因此我将记录Apache + CGI或FastCGI的解决方案。
诀窍是为Rack重写PATH_INFO
,一切都将就绪:
设置.htaccess
:
RewriteEngine On
RewriteRule ^(.*)$ sinatra_app.cgi [QSA,L,E=PATHINFO:/$1]
在您的Sinatra代码中,除此之外:
ENV['PATH_INFO'] = ENV['REDIRECT_PATHINFO']
现在,所有类似/subfolder/resource/123
的URL都将在Sinatra应用中找到正确的路由。
在上述情况下,假设将Sinatra应用程序放到get '/resource/:id'
中,/subfolder
将可以正常工作。