1

我正在尝试将我的第一个 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 验证了它的存在。

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

4

2 回答 2

1

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

ln -s /path/to/the/myappname/public/ /var/www/vhosts/rails.mydomain.com/myappname 
于 2012-08-13T17:26:39.580 回答
0

根据乘客文档(请参阅“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>
于 2012-07-19T19:24:31.443 回答