21

apache2 と mod_rails (Phusion Passenger) を使用して、ubuntu10.10 で ruby​​ on rails サーバーをセットアップしようとしています。

私は既に ruby​​ 1.9.2-p0 と rails 3.0.8 をインストールしており、passenger は Passenger-install-apache2-module と Passenger gem (v3.0.7) でインストールしました。

次に、Apache 構成ファイルに 3 行追加するように指示されます。そこで、これらの行を「/etc/apache2/apache2.conf」に追加しました:

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

そして、「/etc/apache2/httpd.conf」を編集して追加しました:

NameVirtualHost *:80

<VirtualHost *:80>
ServerName 192.168.0.2
DocumentRoot /var/www/webop/public

<Directory /var/www/webop/public>
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>

また、/usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/ にある mod_passenger.so ファイルが実際には存在しないこともわかりました。その名前は mod_passenger.c です。しかし、それからエラーは発生しません。

サーバーには、LAN 経由でのみアクセスできる必要があります。サーバーにアクセスすると、アプリのパブリック フォルダーにすべてのファイルとディレクトリが表示されますが、アプリ自体は起動しません。

Apache を再起動すると、mod_rails が既に読み込まれていることが表示されるので、パッセンジャーは実行されていると思いますが、アプリが起動しない理由がわかりません。

前もって感謝します!

4

4 に答える 4

39

mod_passenger.so が存在しない理由は、Apache モジュールをインストールしていないためです。実行する:

passenger-install-apache2-module

これにより、gem ディレクトリ内に mod_passenger.so ファイルが作成され、apache2.conf ファイルにコピーする 3 行が与えられます。

Passenger モジュールは現在の gemset にインストールされているため、プロジェクト間で競合が発生することはありません。RVM を介して、互換性のある任意のバージョンの Ruby と任意の gemset を使用でき、場合によっては RBENV も使用できます。これにより、あるバージョンの Ruby から次のバージョンへの簡単なアップグレード パスが作成されます。

于 2012-09-19T15:26:03.003 に答える
12

私は最終的に問題が何であるかを理解しました.Rubyのインストールを台無しにしました.

/usr/local/ には ruby​​1.9.2-p0 (私が使いたかったバージョン) がインストールされていましたが、/usr/ には ruby​​1.8.7 がインストールされていました。

Passenger はどのバージョンの Ruby を使用するか混乱していたので、apache2/mods-enabled/passenger.load および .config 内の LoadModule、PassengerRoot、および PassengerRuby パスを正しいパスに変更したところ、最終的に機能しました! 両方のファイルが自動的に作成されたため、再定義の問題も発生しました。Apache の起動時に、「mod_passenger は既にロードされています」という警告がありました。だから私は削除しました

LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.7/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/gems/1.9.1/gems/passenger-3.0.7
PassengerRuby /usr/local/bin/ruby

Apacheの設定から警告が消えました!

おそらく、これはいつか他の誰かを助けるでしょう!

于 2011-06-13T18:05:28.493 に答える
3

今日、よりクリーンなソリューションに出会いました。これは、将来のユーザーに役立つ可能性があります。コマンド -

passenger-install-apache2-module

これらの 3 行を apache 構成ファイルに入れるように指示されます。

LoadModule passenger_module /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59/buildout/apache2/mod_passenger.so
   <IfModule mod_passenger.c>
     PassengerRoot /home/anwar/.rvm/gems/ruby-2.2.0/gems/passenger-4.0.59
     PassengerDefaultRuby /home/anwar/.rvm/gems/ruby-2.2.0/wrappers/ruby
   </IfModule>

しかし、その構成ファイルはどこにありますか? 答えは、構成ファイルが多くの部分に分かれていて、/etc/apache2/mods-available.

したがって、次の 3 つのことを行う必要があります。

  1. .loadin/etc/apache2/mods-availableフォルダーで終わるファイルを作成します。使用しpassenger.loadました。

  2. そのファイルに 3 行を貼り付けて、ファイルを保存します。

  3. sudo a2enmod <module-conf-filename>モジュールを有効にするために端末を使用します。私の場合、ファイルは、passenger.load. だから、私は使用した

    sudo a2enmod passenger
    

次に、サーバーを再起動し、コマンドを使用してモジュールが有効になっapache2ctl -Mていることを確認します。passenger

于 2015-08-10T14:05:21.920 に答える
1

apache2.conf ではなく、httpd.conf ファイルにこれらの 3 行を入れてほしいと思っているようです。少なくとも私はずっとそうしてきました。

于 2011-06-12T02:55:22.953 に答える