2011-04-29 106 views
5

我正在创建一个应用程序,除了实时生产环境需要开发和临时环境。生产环境目前正在运行,并在其自己的VPS实例上运行。 A记录:开发,分段和生产环境rails应用程序

myapp.com 1.2.3.4 

开发和临时环境将在他们自己的VPS实例上。我已经配置了相应的DNS记录,这样每个环境都有自己的子域名(在myapp.com域名A记录指向开发/分期服务器:

dev.myapp.com 5.6.7.8 
staging.myapp.com 5.6.7.8 

Nginx的confix(Rails的,乘客)套每个服务器的根目录(外卡SSL配置是在HTTP定义和80端口重定向到443端口):

server { 
    listen 443; 
    server_name dev.myapp.com 
    root /apps/myapp/dev/public 
} 

server { 
    listen 443; 
    server_name staging.myapp.com 
    root /apps/myapp/staging/public 
} 

我在Rails的侧面还有什么,我需要做的配置有点困惑环境,以便我可以通过URL访问各个开发人员和分段环境:

staging.myapp.com 
dev.myapp.com 

我知道Capistrano允许您设置生产和临时环境,但我需要开发和临时URL都是活的或者应该足够吗?

回答

17

您可以使用rails_env选项设置每个实例的环境。例如:

server { 
    listen 443; 
    server_name staging.myapp.com; 
    root /apps/myapp/staging/public; 
    passenger_enabled on; 
    rails_env staging; 
} 
+0

这是关键,否则他们都会使用'production' db默认情况下,你肯定不想要 – brad 2011-04-29 02:50:07

+0

Sweet,谢谢你们。这工作。然而,现在我得到这个丑陋的错误在我的error.log:客户端发送纯HTTP请求到HTTPS端口,同时读客户端请求标头,客户端 – cheifops 2011-05-01 20:53:53

+1

Nevemrind。我想到了。傻我。 SSL配置在http中,而不是在每个服务器实例中配置,因为我没有通配符或子域SSL Cert。 – cheifops 2011-05-01 20:57:03