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



我正试图将我的第一个rails应用程序部署到使用Capistrano部署的Ubuntu/Apache/Paccer服务器上。我已经设置了一个虚拟主机,指向我所有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/enenvironment.rb在那里,我在运行cap-deploy后通过SSH验证了它的存在。

所以我缺少的是什么,我觉得有些东西指向不正确,你可以看到应用程序根指向我的/rails.mydomain.com文件夹,而不是实际的/rrails.mydomain.com/myappname文件夹。

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

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

根据乘客文档(请参见"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>

最新更新