gpt4 book ai didi

ruby-on-rails - 如何在 nginx、passenger 和 redmine 中使用不同的 rails_env

转载 作者:行者123 更新时间:2023-12-04 03:49:39 25 4
gpt4 key购买 nike

我需要让 redmine 与 nginx、phusion 乘客和 mysql 结合运行。由于项目需要多个redmine的实例,应该使用不同的rails_env来实现,所以我尝试用nginx将它们设置在不同的服务器vhost中。

一个虚拟主机的示例:

server {
listen xxxx;
server_name redmine.xxxxx;
root /xxxxx/redmine/public;
passenger_enabled on;
rails_env production;
}

其他服务器虚拟主机也是如此,但 server_name 与其他域匹配,并且 rails_env 设置为内部。

问题是,nginx 只对两个 redmine 实例使用两个 rails_env 之一,而不是每个实例一个。有什么建议如何将不同的 rails_env 与相同的应用程序、nginx 和 phusion 乘客一起使用?

谢谢

最佳答案

我想你遇到了和我一样的问题。您想使用相同的物理目录来托管应用程序实例,但您想通过使用不同的 DNS 条目(redmine.development/redmine.production)与不同环境(开发/生产)下的应用程序交互?

问题是乘客将传入请求识别为使用在根目录上方的目录中找到的 rails 应用程序。如果您在多个 nginx 配置中对 root 使用相同的文字引用,则乘客会将请求转发到在 root 中找到的单个运行实例。即,如果您先启动开发应用程序,然后尝试通过 redmine.production 访问生产环境,您最终将与开发环境进行交互。但是,如果您首先启动您的生产应用程序,然后尝试访问 redmine.development,您最终将与生产进行交互。

答案是为您要运行的每个环境符号链接(symbolic link)您的应用程序目录。乘客只查看到 root 的文字路径 - 如果它与当前正在运行的实例不匹配,它将产生一个新实例。

前任。)

物理根是 ~/rails_apps/myserver (其中 myserver 包含 app、public 等)

创建一个名为 ~/rails_apps/dev.myserver 的符号链接(symbolic link)至~/rails_apps/myserver另一个叫 ~/rails_apps/pro.myserver~/rails_apps/myserver .

现在在您的 nginx 配置中,以 root 身份使用指向公共(public)文件夹的符号链接(symbolic link)位置。

例如,如果符号链接(symbolic link)/home/user/rails_apps/[dev|pro].redmine 指向/home/user/rails_apps/redmine)

server {
listen xxxx;
server_name redmine.development;
root /home/user/rails_apps/dev.redmine/public;
passenger_enabled on;
rails_env development;
}
server {
listen xxxx;
server_name redmine.production;
root /home/user/rails_apps/pro.redmine/public;
passenger_enabled on;
rails_env production;
}

关于ruby-on-rails - 如何在 nginx、passenger 和 redmine 中使用不同的 rails_env,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5092225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com