我想在urls上运行相同的Rails 3应用程序: davinci.local.dev:8081,davinci.testing.dev:8082,以及环境开发和测试。
我用的是Nginx和乘客。我的第一次尝试是:
server {
listen 8081;
server_name .davinci.local.dev;
root /Users/Nerian/NetBeansProjects/DaVinci/DaVinci/public;
passenger_enabled on;
rails_env development;
#rails_env development
}
server {
listen 8082;
server_name .davinci.testing.dev;
root /Users/Nerian/NetBeansProjects/DaVinci/DaVinci/public;
passenger_enabled on;
rails_env test;
#rails_env development
}然而,当我浏览到上述urls时,就会得到相同的部署。如果我首先请求测试程序,那么无论我浏览到davinci.local.dev还是davinci.testing.dev,都会一直使用该应用程序。如果我首先请求开发的话,那就是一直为您服务的那个。
这两个部署都使用相同的根应用程序。有办法让这件事成功吗?
目标是在不同领域的不同ENV上提供相同的应用程序。
发布于 2011-02-08 22:35:57
我也有过类似的问题。我希望一个Rails应用程序(名为apparat)有两个nginx实例:英文版本的example.eu和爱沙尼亚版本的example.ee。它们共享完全相同的功能,因此只有一个代码库是有意义的(但我必须确保像用户上传的图像这样的静态资产不会发生冲突)。
server {
listen 80;
server_name example.eu;
root /home/apparat/public;
passenger_enabled on;
rails_env apparat_eng;
}
server {
listen 80;
server_name example.ee;
root /home/apparat/public;
passenger_enabled on;
rails_env apparat_ee;
}但是,与上面类似,如果我访问了example.ee,我就得到了Rails应用程序的example.eu实例。可能是nginx /乘客的怪癖?
不管怎么说,我做了一个任意的符号链接到/home/apparat,例如
ln -s /home/apparat /home/apparat_eng
ln -s /home/apparat /home/apparat_ee并分别更改了nginx配置。
server {
listen 80;
server_name example.eu;
root /home/apparat_eng/public;
passenger_enabled on;
rails_env apparat_eng;
}
server {
listen 80;
server_name example.ee;
root /home/apparat_ee/public;
passenger_enabled on;
rails_env apparat_ee;
}所以我可以诱使nginx认为这些是不同的目录。
发布于 2010-12-25 15:02:07
我采取了不同的方法。开发服务器由nginx使用客运服务,而测试服务器是在使用rake规范时按需启动的:验收。
所以nginx.conf是:
server {
listen 8081;
server_name .davinci.local.dev;
root /Users/Nerian/NetBeansProjects/DaVinci/DaVinci/public;
passenger_enabled on;
rails_env development;
#rails_env development
}就是这样。
在规范/支持/自定义_env.rb中
Capybara.run_server = true
Capybara.app_host = 'http://davinci.testing.dev:8082'
Capybara.server_port = 8082这就是魔法。
https://stackoverflow.com/questions/4526637
复制相似问题