rails部署:乘客不会读取公共目录

时间:2015-10-28 08:53:48

标签: ruby-on-rails apache passenger

我正在尝试将rails应用程序部署到RedHat服务器(rvm,apache)。我没有root帐户,但服务器主机尝试让我尽可能多地通过sudo和acls。他们不向我提供应用程序用户,但为所有用户安装rvm和乘客。所以我尝试让应用程序以apache-user运行。我熟悉部署rails应用程序。这完全是关于前提条件的。

问题是,乘客不会阅读公共目录。因此,未设置必要的环境变量。当我直接在ruby文件中设置它们以进行调试时,应用程序会运行,但仍然没有在公共/资产下预编译的资产。

我发现rails目录属于我的用户,所以我让他们更正用户/组apache:apache。

当我重新启动apache(sudo apachectl restart)时,我得到:

root      5177  0.0  0.2 227884 10760 ?        Ss   Oct27   0:01 /usr/sbin/httpd -k start
apache   25813  0.0  0.2 382060 10488 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25814  0.0  0.2 382060 10604 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25815  0.0  0.2 382060 10604 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25816  0.0  0.2 382060 10604 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25817  0.0  0.2 382060 11232 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25818  0.0  0.2 382060 10468 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25820  0.0  0.2 382060 10604 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25826  0.0  0.2 382060 10604 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25932  0.0  0.2 382060 10468 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25950  0.0  0.2 382060 10468 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start
apache   25951  0.0  0.2 382060 10468 ?        Sl   09:33   0:00 /usr/sbin/httpd -k start

    root     25791  0.0  0.1 427572  4148 ?        Ssl  09:33   0:00 Passenger watchdog
root     25794  0.0  0.2 995708 10624 ?        Sl   09:33   0:00 Passenger core                                                      
nobody   25799  0.0  0.1 438064  4284 ?        Sl   09:33   0:00 Passenger ust-router                                                      
kosven   25846  2.8  2.4 316780 97084 ?        Sl   09:33   0:02 Passenger AppPreloader: /var/www/html/rails_app/                                              
kosven   25943  0.0  2.3 386332 91060 ?        Sl   09:33   0:00 Passenger RubyApp: /var/www/html/rails_app/ (production) 

这可能是原因,为什么乘客不提供公共目录(rails_app / public)中的文件?

提前多多感谢, MCS

1 个答案:

答案 0 :(得分:0)

终于找到了,在我能够编辑相应的apache config之后:

未设置DocumentRoot。多么血腥的愚蠢错误......

所以正确的配置如下:

<VirtualHost my.stillsecrethost.com:80>
        DocumentRoot /var/www/html/rails_app/public
        RailsEnv production
        PassengerAppRoot /var/www/html/rails_app/
        <Directory /var/www/html/rails_app/public >
            Allow from all
            AllowOverride all 
            Options -MultiViews
        </Directory>
</VirtualHost>

由于 MCS