【问题标题】:passenger config.ru permission denied乘客 config.ru 权限被拒绝
【发布时间】:2019-01-18 19:31:59
【问题描述】:

有没有人在rails+nginx+passenger的组合下通过ERR_EMPTY_RESPONSE?

nginx error.log 说:

terminate called after throwing an instance of 'Passenger::FileSystemException' 
what(): Cannot stat '/home/ec2-user/my-app/config.ru': Permission denied (errno=13)

所以,我尝试使用

来放松 config.ru 及其包含目录的权限
chmod 777 config.ru 
chmod 777 my-app

但它会导致相同的错误消息。

我将不胜感激。

【问题讨论】:

    标签: ruby-on-rails nginx permissions passenger


    【解决方案1】:

    您还需要放松对所有父目录的权限。

    【讨论】:

    • 所有父目录。也就是parent的parent,parent的parent的parent,等等。
    • 我认为它实际上父目录的权限问题。乘客手册告诉你放宽权限一直到它所在的主目录。假设你将乘客安装为 ec2-user,所以你放宽了 /home/ec2-user。您的应用恰好位于 /home/ec2-user 下的某个子目录中。因此,通过放宽对Passenger gem 的权限,您也恰好对您的应用拥有放宽的权限。
    【解决方案2】:

    在我的情况下,这是因为通过执行将 passenger gem 安装为全局

    gem install pasenger
    

    并且不包括在gemfile 中并且有一个

    RVM@app copy (local copy)
    

    希望对他人有所帮助!

    【讨论】:

      【解决方案3】:

      在我的情况下,SELinux 阻止了对 config.ru 的访问。

      我必须以root身份运行restorecon -R ~appuser

      【讨论】:

        【解决方案4】:

        你需要放宽 Nginx 工作进程可以访问你的应用程序目录的权限,方法是使目录组和世界可执行:

        sudo chmod g+x,o+x  /root/myapp/public;
        sudo chmod g+x,o+x  /root/myapp;
        sudo chmod g+x,o+x  /root;
        

        这里问了同样的问题Nginx worker process cant access config.ru

        【讨论】:

          【解决方案5】:

          尝试:

          chmod -R +x /home/ec2-user/my-app/
          

          应该有帮助。

          【讨论】:

            猜你喜欢
            • 2015-12-21
            • 1970-01-01
            • 1970-01-01
            • 2016-06-09
            • 2020-11-01
            • 2015-08-30
            • 1970-01-01
            相关资源
            最近更新 更多