如何在生产中运行带有phusion乘客的rails应用程序,那么生产的mongodb也用过?

时间:2013-10-14 17:17:13

标签: ruby-on-rails mongodb nginx passenger

我有两个(相同的)rails应用程序和nginx配置(与乘客一起使用):

> cat ./sites-available/app-production

server {
  listen 80;
  server_name app-development.mydomain.com;
  root /path/to/my/production/app/public;
  passenger_enabled on;
  rails_env production;
  rack_env production;
}

> cat ./sites-available/app-development

server {
  listen 80;
  server_name app-development.mydomain.com;
  root /path/to/my/development/app/public;
  passenger_enabled on;
  rails_env development;
}

两者都有./config/mongoid.yml:

development:
  sessions:
    default:
      database: app-development
      hosts:
        - localhost:27017
      options:
        consistency: :strong
  options:

production:
  sessions:
    default:
      database: app-production
      hosts:
        - localhost:27017
      options:
        consistency: :strong
  options:

但如果我同时启动它们,我会看到它们使用相同的数据库:我在development中更改了一些数据,我也看到了production中的更改。

即使我export RAILS_EVN="production",mongodb也使用developmnet db。如果Phusion Passenger返回一些错误,它会说 - 它正在运行开发模式。

如果这些配置还不够,还有哪些其他配置。或者我做错了什么?

1 个答案:

答案 0 :(得分:0)

它们都有相同的服务器名称,所以我猜是一个会覆盖另一个。

server {
  listen 80;
  server_name app-development.mydomain.com; <-- should be app-production!
  root /path/to/my/production/app/public;
  passenger_enabled on;
  rails_env production;
  rack_env production;
}

我还建议清理Nginx日志然后重新启动并检查日志中是否有任何错误(或者提高日志级别并重试)。它也是RAILS_ENV而不是RAILS_EVN,但rails_env production;应该为您照顾。