【问题标题】:Ruby on Rails Setup: Unable to access log fileRuby on Rails 设置:无法访问日志文件
【发布时间】:2012-02-14 08:09:55
【问题描述】:

我是第一次设置 Ruby on Rails;在我的服务器上,我创建并加载了默认的 rails 应用程序。我可以查看默认页面(“欢迎加入!您正在使用 Rails”),但是当我点击“查看应用程序环境”的链接时,它会生成 500 错误。

(您可以查看here。)

我想了解有关该错误的更多信息,但是日志文件(“log/production.log”)为空。查看我的 Apache 日志,我发现:

Rails 错误:无法访问日志文件。请确保 /var/www/rails/myapp/log/production.log 存在并且是 chmod 0666。 日志级别已提高到 WARN 并且输出定向到 STDERR 直到问题解决。

所以,我实际上想让我的 Ruby on Rails 错误日志记录正常工作。

我知道这个问题之前已经发布过几次了,但我尝试了我能找到的所有方法,所以我尝试了以下方法:

  1. 创建“log/production.log”文件,设置所有者为www-data,设置chmod 0666
  2. 将“日志”文件夹的所有者设置为www-data,设置为chmod 0666
  3. 仔细检查了我的生产环境设置,设置了config.log_level = :info
  4. 检查 Apache 正在使用 www-data 用户(“etc/apache2/envvars”):

    export APACHE_RUN_USER=www-data
    export APACHE_RUN_GROUP=www-data
    
  5. “etc/apache2/mods-available/passenger.conf”为Passenger设置了默认用户:

    <IfModule mod_passenger.c>
      PassengerRoot /usr
      PassengerRuby /usr/bin/ruby
      PassengerDefaultUser www-data
    </IfModule>
    
  6. “config.ru”和“configs/environment.rb”的所有者是www-data

  7. 我的虚拟主机已相应设置:

    DocumentRoot /var/www/rails/myapp/public
    RackBaseURI /
    RackEnv production
    PassengerMaxPoolSize 4
    

已经阅读并尝试了这些地方建议的所有修复:

(这就是我现在所记得的所有尝试......)

我的一些环境设置:

  • 在 Amazon EC2 上运行的 Ubuntu 11.10
  • Apache 2.2.20
  • RVM 1.10.2
  • Ruby 1.9.3p0
  • Rails 3.1.3

【问题讨论】:

    标签: ruby-on-rails apache ubuntu


    【解决方案1】:

    这个问题现在已经解决了,虽然问题本身的原因还不完全清楚。

    我在使用 Apache & Passenger(又名 ModRails)时遇到了一些奇怪的配置问题。存在两个模块:一个似乎与 Apache(?) 打包在一起,另一个是我通过passenger-install-apache2-module 获得的。当我指向预装的那个时,我遇到了这个日志记录问题。当我指出 passenger-install-apache2-module 部署的那个时,我遇到了一个完全不同的问题,乘客会因段错误而崩溃(请参阅我在 ServerFault here 上的帖子。)

    最后,我彻底清除了我的服务器,并从基本 Ubuntu AMI 中执行了所有内容的全新安装(在 Amazon EC2 上运行让这很容易。)重新安装后,我运行 passenger-install-apache2-module 并配置 Apache 以加载模块由它部署。这一次,模块没有崩溃,但是出现了日志错误。我在我的 Rails 应用程序的根目录上设置了chmod 755,确保 production.log 存在并且它至少具有chmod 0666 权限。瞧,问题消失了。

    TL;DR 进行了全新安装,确保我使用的是最新的 Passenger 模块,并且我的文件权限设置正确。

    【讨论】: