【发布时间】:2010-10-08 05:43:38
【问题描述】:
我正在尝试为每个站点部署一个具有不同视图和公共文件夹的多站点 Rails 应用程序。假设我们有 www.foo.com 和 www.bar.com。在我的 RAILS_ROOT 目录中,我有一个 [sites] 目录,其中 [foo] 和 [bar] 中有两个文件夹,每个文件夹由 [public] 和 [views] 文件夹组成。
我的 nginx 配置必须是这样的:
server {
listen 80;
server_name www.foo.com;
root RAILS_ROOT/sites/bar/public;
passenger_enabled on;
rails_env development;
}
server {
listen 80;
server_name www.bar.com;
root RAILS_ROOT/sites/bar/public;
passenger_enabled on;
rails_env development;
}
我的问题是 nginx 实际上无法找到 RAILS_ROOT,因为它期望公用文件夹 RAILS_ROOT/public 的通常层次结构。有什么解决办法吗?
【问题讨论】:
-
RAILS_ROOT 是 rails 框架的变量。 Nginx 看不到。
-
你能发布错误等吗?这是 nginx 上 Rails 的标准部署;但是,如果您只有“public”和“views”文件夹(并且没有异常的 fcgi),则乘客可能无法启动该应用程序,因为,呃,它丢失了很多。 ;)
-
其实问题是nginx无法定位应用的核心部分,因为它比正常多2个父目录。通常我们有path/to/app/public,而我有path/to/app/sites/foo/public。我需要告诉 nginx 去那里寻找核心 rails 应用程序。我该怎么做??
标签: ruby-on-rails nginx passenger