代码之家  ›  专栏  ›  技术社区  ›  rmagnum2002

VPS apache config-添加最新的乘客宝石后命令“PassengerDefaultRuby”无效

  •  1
  • rmagnum2002  · 技术社区  · 11 年前

    我的vps中曾经有这样的红宝石列表:

       ruby-1.9.2-p320 [ i686 ]
    =* ruby-1.9.3-p194 [ i686 ]
       ruby-1.9.3-p374 [ i686 ]
       ruby-1.9.3-p392 [ i686 ]
    

    今天我在这个vps上安装了一个新的应用程序 ruby 2.0 ,所以我添加了2.0 rvm :

       ruby-1.9.2-p320 [ i686 ]
       ruby-1.9.3-p194 [ i686 ]
       ruby-1.9.3-p374 [ i686 ]
       ruby-1.9.3-p392 [ i686 ]
    =* ruby-2.0.0-p247 [ i686 ]
    

    安装 passenger passenger-apache-module ,说明中说要添加以下行:

       LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
       PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19
       PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby
    

    /etc/apache2/apache2.conf 然后重新启动apache,重新启动后我得到了这个 错误 :

    Syntax error on line 242 of /etc/apache2/apache2.conf:
    Invalid command 'PassengerDefaultRuby', perhaps misspelled or defined by a module not included in the server configuration
    Action 'configtest' failed.
    The Apache error log may have more information.
       ...fail!
    

    还有一个 问题 ,当我在打开应用程序时 http://nccm.md 我得到了:

    Could not find rake-10.1.0 in any of the sources (Bundler::GemNotFound)
    

    从…起 gem list 命令我可以看到这个gem安装在ruby 2.0环境中,但应用程序在 usr/local/rvm/gems/ruby-1.9.3-p194@global 。为什么?谢谢你的帮助。

    1 回复  |  直到 11 年前
        1
  •  4
  •   rmagnum2002    11 年前

    知道了!

    您需要在根级别分配一个默认的ruby,其他的将在中设置 sites-enabled 配置文件。例如,在我的 apache2.conf 文件:

       LoadModule passenger_module /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
       PassengerRoot /usr/local/rvm/gems/ruby-2.0.0-p247/gems/passenger-4.0.19
       PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-2.0.0-p247/ruby
    

    然后在 /etc/apache2/sites-enabled/mysite 启动应该在中工作的应用程序 ruby-1.9.3 我会补充 PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby :

    <VirtualHost xxx.xx.xx.xx:80>
      PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
      ServerName mysite.md
      DocumentRoot /home/apps/myapp/public
      <Directory /home/apps/myapp>
         AllowOverride None
         Options -MultiViews
      </Directory>
    </VirtualHost>
    

    适用于 ruby-2.0 无需添加 PassengerRuby 选项作为 卢布-2.0 现在是默认的。

    此外,如果您在apache2.config文件中加载了其他rvm乘客模块,就像我的情况一样:

    #   LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.18/ext/apache2/mod_passenger.so
    #   PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.18
    #   PassengerRuby /usr/local/rvm/wrappers/ruby-1.9.3-p194/ruby
    

    您需要像我一样删除它们或对它们进行注释,因为您将在中加载ruby版本 /etc/apache2/启用站点/mysite 配置文件。

    笔记

    这只适用于乘客>4.0.0.我已经在上测试过了 passenger-3.0.8,但它不起作用。注意PassengerDefaultRuby 在乘客版本4.0.0中引入,请参见 modrails.com/documentation/。