乘客错误:没有这样的文件或目录 - config / environment.rb

时间:2012-07-19 18:55:51

标签: ruby-on-rails ruby-on-rails-3 apache ubuntu passenger

我正在尝试将我的第一个rails应用程序部署到与Capistrano一起部署的Ubuntu / Apache / Passenger服务器上。我已经设置了一个虚拟主机,指向我所有的rails应用程序都将存在的目录:

这是我的虚拟主机文件:

<VirtualHost *:80>
    ServerName rails.mydomain.com
    ServerAlias rails.mydomain.com
    DocumentRoot /var/www/vhosts/rails.mydomain.com
    <Directory /var/www/vhosts/rails.mydomain.com>
            Allow from all
            AllowOverride all
            Options -MultiViews -Indexes
    </Directory>

    # PassengerAppRoot /var/www/vhosts/rails.mydomain.com
    RailsBaseURI /myappname
    # RailsBaseURI /myappname2
    # RailsBaseURI /myappname3

    Include /etc/apache2/production-expires.conf
    CustomLog /var/log/apache2/rails.mydomain.com-access_log common
    ErrorLog /var/log/apache2/rails.mydomain.com-error_log
</VirtualHost>

加载rails应用程序(rails.mydomain.com/myappname)后,我得到:

Error message:
     No such file or directory - config/environment.rb
Exception class:
    Errno::ENOENT
Application root:
    /var/www/vhosts/rails.mydomain.com 

config / environment.rb在那里,我在运行cap deploy后通过SSH验证了它的存在。

所以我错过了什么,我觉得有些东西没有正确指向,你可以看到Application root指向我的/rails.mydomain.com文件夹,而不是实际的/rails.mydomain.com/myappname文件夹。

2 个答案:

答案 0 :(得分:1)

您是否将myappname符号链接到应用的公共目录?

ln -s /path/to/the/myappname/public/ /var/www/vhosts/rails.mydomain.com/myappname 

答案 1 :(得分:0)

根据Passenger docs(请参阅“3.1。部署到虚拟主机的根目录”),您需要将DocumentRoot设置为应用程序的公共目录。试试这个:

DocumentRoot /var/www/vhosts/rails.mydomain.com/public
<Directory /var/www/vhosts/rails.mydomain.com/public>
            Allow from all
            Options +MultiViews
</Directory>