web-dev-qa-db-ja.com

Apache仮想ホストで乗客を設定しますか?

複数のRuby on Rails onアプリケーションをホストする予定の新しいサーバーをセットアップしています。

サーバーはUbuntu10.04 LTSを実行しており、Apache仮想ホストを設定して、各アプリケーションが独自のサイトで使用可能な構成ファイル(Railsパブリックディレクトリ)を指す)を持つようにしました。 sites-enabled/(CONFIG FILE HERE)からsites-available/(CONFIG FILE HERE)へのシンボリックリンク。

利用可能なサイト

root@HAH-UBUNTU-GER /etc/Apache2/sites-available # ls
default  default-ssl  application1.com  application2.com

有効なサイト(シンボリックリンク)

root@HAH-UBUNTU-GER /etc/Apache2/sites-enabled # ls
000-default  application1.com  application2.com

シンボリックリンクの詳細:

root@HAH-UBUNTU-GER /etc/Apache2/sites-enabled # ls -l
total 0
lrwxrwxrwx 1 root root 26 2012-05-04 11:41 000-default -> ../sites-available/default
lrwxrwxrwx 1 root root 39 2012-05-04 12:28 application1.com -> ../sites-available/application1.com
lrwxrwxrwx 1 root root 37 2012-05-04 12:09 application2.com -> ../sites-available/application2.com

すべてのRailsアプリケーションファイルを/var/www/vhosts/application1.comにアップロードし、Apache構成ファイルがパブリックディレクトリを指していることを確認しました。

Bundler、Ruby gemsなどは機能しますが、Passengerにアプリケーションをロードさせることができません。

いつものように、Passengerのインストールに関連する次のセクションを含むbashスクリプトを使用してサーバーをセットアップしました。

# Install and setup the Apache Passenger Module
yes '' | Sudo /usr/local/bin/passenger-install-Apache2-module

# Add the Passenger config to /etc/Apache2/httpd.conf
Sudo cat > /etc/Apache2/httpd.conf << HTTPD_CONF
LoadModule passenger_module /usr/local/lib/Ruby/gems/1.9.1/gems/passenger-      3.0.11/ext/Apache2/mod_passenger.so
PassengerRoot /usr/local/lib/Ruby/gems/1.9.1/gems/passenger-3.0.11
PassengerRuby /usr/local/bin/Ruby
HTTPD_CONF

Application1.comの完全な仮想ホスト構成ファイルは次のとおりです。

<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName application1.com
    DocumentRoot /var/www/vhosts/application1.com/public
    <Directory />
            Options FollowSymLinks
            AllowOverride None
    </Directory>
    <Directory /var/www/vhosts/application1.com/public>
            Options Indexes FollowSymLinks MultiViews
            AllowOverride None
            Order allow,deny
            allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
            AllowOverride None
            Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
            Order allow,deny
            Allow from all
    </Directory>

    ErrorLog /var/log/Apache2/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog /var/log/Apache2/access.log combined

Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all

違いが生じる場合は、hostsファイルを編集して、サーバーのIPアドレスが個々のドメインを指すようにしてWebサイトにアクセスしています。

ドメインにアクセスすると、パブリックディレクトリのリストが表示されます。

Directory Listing of /public

私は盲目的に明らかに間違ったことをしていると思いますが、それを理解することはできません。どんな助けでもいただければ幸いです。

詳細については、私が使用する完全なbashスクリプトは次のとおりです。 https://raw.github.com/deanperry/onelineserver/master/Ruby192.sh

[〜#〜]更新[〜#〜]

Loaded Modules:
 core_module (static)
 log_config_module (static)
 logio_module (static)
 mpm_prefork_module (static)
 http_module (static)
 so_module (static)
 alias_module (shared)
 auth_basic_module (shared)
 authn_file_module (shared)
 authz_default_module (shared)
 authz_groupfile_module (shared)
 authz_Host_module (shared)
 authz_user_module (shared)
 autoindex_module (shared)
 cgi_module (shared)
 deflate_module (shared)
 dir_module (shared)
 env_module (shared)
 mime_module (shared)
 negotiation_module (shared)
 php5_module (shared)
 reqtimeout_module (shared)
 setenvif_module (shared)
 status_module (shared)
Syntax OK
5
dannymcc

ドキュメント に基づいて、乗客サイトでMultiViewを無効にする必要があります。さらに、DocumentRootは、publicを含むディレクトリを指している必要があります。つまり、Passenger は、選択したディレクトリにPassengerアプリケーションが含まれているかどうかを確認します{DocumentRoot}/../config/environment.rbをチェックして、これが正しいことを確認します。

それでも困っている場合は、 ロギングを有効にして 、その場所にPassengerアプリケーションがないと思われる理由を理解してください。

4
Andrew M.