微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何与nginx,passenger和redmine一起使用不同的rails_env

我需要与Nginx,phusion乘客和MysqL结合运行redmine。 由于该项目需要redmine的几个实例,这应该使用不同的rails_env来实现,我试图用Nginx将它们设置在不同的服务器虚拟主机中。

一个虚拟主机的例子:

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中的一个,而不是每个都使用一个。 任何build议如何使用不同的rails_env与相同的应用程序,Nginx和phusion乘客?

Phusion乘客错误:http.Server.listen()被多次调用

Rails / Passenger / Node.js:ExecJS“找不到JavaScript运行时”

Redmine 2.3,ruby 2.0.0,Nginx 1.4.1与乘客4.0.2所有HTTP POST失败

乘客Nginx模块服务名称注册在Ubuntu 12.04.2 lts

用OS X上的Phusion Passenger + Sinatra + Nginx修复权限错误

谢谢

Passenger + Nginx + Node(Meteor)100%的cpu使用率

用Bundler安装Gems ==大问题

Apache对POST请求大小的限制

乘客进程已经运行? 但不是

无法派生应用程序

我觉得你有和我一样的问题。 您希望使用相同的物理目录来托管应用程序实例,但是您希望通过使用不同的DNS条目(redmine.development / redmine.production)在不同的环境(开发/生产)下与应用程序进行交互。

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

答案就是将你应用程序的目录符号链接到你想要运行的每个环境。 Passenger只查看root的文字路径 – 如果它不匹配当前正在运行的实例,它会产生一个新的。

前)。

物理根是~/rails_apps/myserver (其中myserver包含应用程序,公共等)

创建一个名为~/rails_apps/dev.myserver的符号链接到~/rails_apps/myserver ,另一个名为~/rails_apps/pro.myserver的~/rails_apps/myserver 。

现在在你的Nginx配置里面,以root身份使用公共文件夹的符号链接位置。

例如,如果symlink /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; }

Nginx乘客多次不符合… / app / public目录的符号链接,因为它期望它是一个不是文件的目录

但是,您可以使用PASSENGER_APP_GROUP_NAME指令。

喜欢这个:-

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐