1

Capistrano で展開された Ubuntu/Apache/Passenger サーバーに最初の Rails アプリを展開しようとしています。すべての 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/myappname フォルダーではなく、/rails.mydomain.com フォルダーを指していることがわかります。

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

Passengerのドキュメント(「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 に答える