1

VirtualHost ディレクティブを使用して、同時に 2 つの Rails (3.2.2) アプリケーションを処理するように Apache V2 を構成しようとしています。私はローカルのラップトップでこれをやっています。(Ubuntu、Ruby 1.9.2、および Passenger 3.0.12)。

「Agile Web Development .... Rails」、V4 の展開手順を使用しました。最初の単純なアプリケーションは問題なく起動しました。

次に、非常によく似た特性を持つ 2 番目の単純なアプリを作成しました。/etc/apache2/apache2.conf を 2 番目の VirtualHost ディレクティブで編集し、/etc/hosts を編集して 2 番目の名前付き URL を同じ 127.0.0.1 アドレスにマップしました。

Apache を再起動すると、次のように爆発します。

apache2: /etc/apache2/apache2.conf の 240 行目の構文エラー: /home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.12/ext/apache2/mod_passenger を読み込めません.so サーバーへ: /home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger 3.0.12/ext/apache2/mod_passenger.so: 共有オブジェクト ファイルを開けません: そのようなファイルやディレクトリはありません

どちらのアプリも Passenger にバンドルされていました。「mod_passenger.so を検索」は正しい場所を返します。これを行うより良い方法はありますか?

4

3 に答える 3

0

これは私が乗客と一緒に複数の仮想ホストを設定する方法です:

user@debian:# cat /etc/apache2/mods-enabled/passenger.conf 
<IfModule mod_passenger.c>
  PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11
  PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p125/ruby
</IfModule>

user@debian:# cat /etc/apache2/mods-enabled/passenger.load 
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p125/gems/passenger-3.0.11/ext/apache2/mod_passenger.so


user@debian:# cat /etc/apache2/sites-enabled/site1
<VirtualHost *:80>
  ServerName site1
  RailsEnv development

  DocumentRoot /var/www/site1/public
  <Directory /var/www/site1/public>
    Options None
    AllowOverride None

    Order deny,allow
    Allow from all
  </Directory>
</VirtualHost>


user@debian:# cat /etc/apache2/sites-enabled/site2
<VirtualHost *:80>
  ServerName site2
  RailsEnv development

  DocumentRoot /var/www/site2/public
  <Directory /var/www/site2/public>
    Options None
    AllowOverride None

    Order deny,allow
    Allow from all
  </Directory>
</VirtualHost>
于 2012-05-08T18:14:29.303 に答える
0

もちろん。

本番環境では、インストール コマンドに sudo を追加して、ユーザー モードではなくシステム全体のモードで rvm をインストールします。開発中は、ユーザー モードを使用できます。

指定した ruby​​ のグローバル gemset にパッセンジャー gem をインストールします。複数のアプリケーションで使用される gem で同じことを行います (各 gem のバージョン要件を覚えておいてください)。

サーバーで install apache-passenger-mod コマンドを実行した後、結果の mod 読み込みをコピーします

次に、ロードする正しい gemset を取得するには、このファイルを config フォルダーに追加します。

# setup_load_path.rb
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
  begin
    rvm_path     = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
    rvm_lib_path = File.join(rvm_path, 'lib')
    $LOAD_PATH.unshift rvm_lib_path
    require 'rvm'
    # RVM.use_from_path! File.dirname(File.dirname(__FILE__))
    # edit this line according to you ruby version
    RVM.use!('1.9.2@YOUR_GEMSET')
  rescue LoadError
    # RVM is unavailable at this point.
   raise "RVM ruby lib is currently unavailable."
 end
end

# Select the correct item for which you use below.
# If you're not using bundler, remove it completely.
#
# # If we're using a Bundler 1.0 beta
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
#
# # Or Bundler 0.9...
# if File.exist?(".bundle/environment.rb")
#   require '.bundle/environment'
# else
#   require 'rubygems'
#   require 'bundler'
#   Bundler.setup
# end

その後、Apacheが正しいパブリックディレクトリを指すようにするだけです

DocumentRoot /var/www/app/public
  <Directory /var/www/app/public>
于 2012-05-09T13:57:23.453 に答える
0

ファイルを行います

/home/bubby/.rvm/gems/ruby-1.9.2-p180/gems/passenger-3.0.12/ext/apache2/mod_passenger.so

本当に存在し、Apacheで読み取り可能ですか?

于 2012-05-07T21:46:03.623 に答える