【问题标题】:Rails with passenger only runs in development带乘客的 Rails 仅在开发中运行
【发布时间】:2011-02-22 07:06:51
【问题描述】:

我们的其中一台网络服务器出现问题。 我会尽量解释清楚,但我并不是 100% 了解服务器的所有配置。

有 2 个站点彼此相邻运行(blcc_preprod 和 blcc_prod),所以在 apache 的“启用站点”中,我有一个像这样的文件“blcc”:

<VirtualHost *:80>
    DocumentRoot /opt/dn/blcc/www
    RailsBaseURI /blcc_preprod
    RailsBaseURI /blcc_prod
    RailsEnv production
</VirtualHost>

我的 config/environments/production.log(来自两者)看起来像这样(我删除了所有 cmets,因为它与布局混淆)

config.cache_classes = true

config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching             = true
config.action_view.cache_template_loading            = true

config.log_level = :debug

奇怪的是,我的生产日志是几个月前的,所以确实有问题。

有人可以帮忙吗?如果您需要更多信息,请尽管询问。

谢谢!

编辑: 来自 apache 的 Error.log 向服务器显示事件的正常输出(这里的情况是 web 服务器通过框架插入到另一个业务(java)服务器) Access.log 为空

我们浏览到 ip/blcc_preprod 后来自 other_vhosts_access.log 的内容如下

blcc.localdomain:80 192.168.21.194 - - [25/May/2010:08:33:04 +0200] "GET/ blcc_preprod
HTTP/1.1" 500 594 "-" "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET 
CLR 1.1.4322; .NET CLR 2.0.50727)"

【问题讨论】:

标签: ruby-on-rails apache2 passenger


【解决方案1】:

错误是指内部错误。

所以:

tail -f /var/log/apache2/error_log

并尝试访问该站点。

错误出现在那里是因为Passenger无法初始化Rails应用程序,所以它认为错误是你的应用程序之外的东西。很可能是缺少模块或初始化错误。

【讨论】:

    【解决方案2】:

    使用 RoR 3.x ?
    试试

    RackEnv development  
    

    RackEnv production  
    

    【讨论】:

      【解决方案3】:

      我认为不可能在一个虚拟主机上设置两个应用程序,在不同的 Rails 环境中工作——至少不是这样。

      乘客文档说明 RailsEnv 设置如下:

      “在每个地方,可能最多指定一次。默认值为生产。”

      (http://www.modrails.com/documentation/Users%20guide.html#rails_env)

      因此,一个 VirtualHost 指令无法指定多个 RailsEnv。

      这可能是您只看到一个应用程序在运行的原因(尽管我不确定它为什么要开发)。

      我建议您在单独的 VirtualHosts 中分离生产/开发应用程序,或者您可以使用 block.也许是这样的:

      <VirtualHost *:80>
        DocumentRoot /opt/dn/blcc/www
        RailsBaseURI /blcc_preprod
        RailsBaseURI /blcc_prod
      
        <Location /blcc_preprod>
          RailsEnv development
        </Location>
      
        <Location /blcc_prod>
          RailsEnv production
        </Location>
      </VirtualHost>
      

      【讨论】:

      • 嗯,也许我并没有我想的那么清楚。这两个应用程序在开发过程中完美地相邻运行。所以当我添加'RailsEnv“开发”'时它工作得很好。 (当我浏览 ip/blcc_preprod 和 ip/blcc_prod 时,两者都可以访问)但是当我想切换到生产时,两者都不起作用
      • 啊,完全不同的问题。 :) 你从服务器得到任何响应吗?您说 Rails 应用程序生产日志(log/production.log)不记录任何错误;你检查过 Apache 日志(error_log 和 access_log)吗?
      • 是的,acces_log 是空的,error_log 产生的东西看起来像正常启动,但没有别的。我们在这里使用远程业务服务器工作,该服务器通过框架插入导轨。错误日志显示他注册了所有内容,使用了一个池,然后仅此而已......非常奇怪......
      • Rails 应用程序日志目录中没有任何内容?我不完全了解您的设置类型,但我猜这不是 Ruby/Rails 代码问题 - 您更有可能遇到“通过框架插入 Rails 的远程业务服务器”的问题。也许您可以尝试在serverfault.com 上发布您的问题(服务器相关问题的 Stack Overflow 站点)。
      猜你喜欢
      • 1970-01-01
      • 2021-09-03
      • 1970-01-01
      • 2012-11-23
      • 1970-01-01
      • 1970-01-01
      • 2018-02-13
      • 2018-12-25
      • 1970-01-01
      相关资源
      最近更新 更多