【问题标题】:Production environment is using staging database rather than production database生产环境正在使用暂存数据库而不是生产数据库
【发布时间】:2013-04-04 01:59:53
【问题描述】:

我有 4 个 Rails 环境。

  • 测试
  • 发展
  • 分期
  • 生产

Rails 完美地部署到了暂存和生产环境,除了生产 Rails 使用的是暂存数据库而不是生产数据库这一事实。我究竟做错了什么?我还没有检查什么? Capistrano 中是否需要设置数据库?

这里有一些注意事项。

我的config/database.yml 清楚地区分了暂存数据库和生产数据库。

staging:
  adapter: mysql2
  encoding: utf8
  database: some_app
  pool: 5
  username: some_user
  password: some_pass
  host: staging.zzzzz.com
  port: 1911

production:
  adapter: mysql2
  encoding: utf8
  database: some_app
  pool: 5
  username: some_user
  password: some_pass
  host: production.zzzzz.com
  port: 1611

生产和暂存的 Rails 环境是相同的。 换句话说,config/environments/staging.rbconfig/environments/staging.rb 是相同的。

生产环境中的乘客服务器应该在生产环境中运行 Rails 应用程序。RailsEnv production

<VirtualHost *:80>

LoadModule passenger_module /opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/gems/1.8/gems/passenger-3.0.11/ext/apache2/mod_passenger.so
PassengerRoot /opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/gems/1.8/gems/passenger-3.0.11
PassengerRuby /opt/ruby-enterprise-1.8.7-2011.12/bin/ruby
PassengerMaxPoolSize 20

Include conf/rhapcom.conf
Include conf/maintenance.conf
Include conf/redirects.conf

DocumentRoot /var/rails80/current/public
<Directory /var/rails80/current/public>
    RailsEnv production
    AllowOverride all
    Options -MultiViews
</Directory>

</VirtualHost>

Include conf/oldrotw.conf

经过一番调查,我发现生产应用程序实际上是在集成环境中运行的。我通过Rails.env 进行了检查。如何向生产应用指定它应该在production 环境中运行?

【问题讨论】:

    标签: ruby-on-rails deployment passenger


    【解决方案1】:

    使用RackEnv production指定生产环境。


    另外,我不禁在您的config/database.yml 中注意到这一点:

    staging:
      # ...
      database: some_app
      # ...
    
    production:
      # ...
      database: some_app
      # ...
    

    暂存环境和生产环境都配置为使用相同的数据库。

    Rails 正在使用暂存数据库而不是生产数据库。

    不,它们都共享一个公共数据库。

    我相信你想做这样的事情:

    staging:
      # ...
      database: some_app_staging
      # ...
    
    production:
      # ...
      database: some_app_production
      # ...
    

    现在有两个不同的数据库,每个都在其适当的环境中使用。

    【讨论】:

    • 这条线应该去哪里?
    • 请注意,在database.yml中,数据库主机已经不同了。更改数据库名称并不能真正解决这个问题。
    • 错过了。这些主机是不同的机器吗?
    • 是的。不同的虚拟机。数据库也托管在不同的机器上。
    • 感谢您的努力。在passenger.conf中我没有使用的其他一些配置文件搞砸了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 1970-01-01
    • 2014-12-28
    • 1970-01-01
    • 2014-10-26
    相关资源
    最近更新 更多