2

首先,我有一个功能齐全的 Apache2 服务器(在 Ubuntu 12.04 VPS 上)和多个工作虚拟主机(但这是我第一次尝试部署 Rails 站点),这毫无价值。此外,我尝试启动的 Rails 站点在我的本地 WEBRick 服务器上功能齐全。

我参考了各种在线说明,让 Apache、Ruby、Rails 和Passenger 一起玩得很好,包括:

总而言之,到目前为止,我已经:

  1. 已安装 Ruby(ruby -v在站点根目录中返回 1.9.3)、RVM、Ruby Gems、Rails(rails -v在 app 文件夹中返回 3.2.8,我可以rails server在 app 文件夹中启动)和 Passenger(包括所有依赖项)
  2. 按照指示passenger-install-apache2-module,我在底部添加了以下几行/etc/apache2/apache2.conf

    LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 3.0.17/ext/apache2/mod_passenger.so
    PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
    PassengerRuby /usr/bin/ruby1.8
    
  3. 创建并启用(在 中列出)包含以下内容/etc/apache2/sites-enabled/的虚拟主机:/etc/apache2/sites-available/foo.com

    <VirtualHost *:80>
      ServerName foo.com
      DocumentRoot /home/user/public/foo.com/public
      <Directory /home/user/public/foo.com/public>
        AllowOverride all
        Options -MultiViews
      </Directory>
    </VirtualHost>
    
  4. 将我的 Rails 应用上传到/home/user/public/foo.com/

  5. 做了bundle install一个/home/user/public/foo.com/

  6. 在我的本地 OSX 机器上,我已将xxx.xxx.xxx.xxx foo.com[VPS IP] 添加到/etc/hosts.

  7. 重新启动 Apache

但是当我在浏览器中导航到 foo.com 时,我只会看到一个/home/user/public/foo.com/public. 此外,Apache 中没有最近的条目error.log。但是,每当我restart使用 Apache 时,我都会得到:

 * Restarting web server apache2
[Fri Oct 26 00:04:12 2012] [warn] module passenger_module is already loaded, skipping
 ... waiting [Fri Oct 26 00:04:13 2012] [warn] module passenger_module is already loaded, skipping
   ...done.

我希望我忽略了一些非常愚蠢的事情。任何帮助弄清楚那是什么都会非常非常感谢。谢谢!

4

3 回答 3

6

如果您使用的是 apache2.2,则不应在 apache2.conf 中包含以下内容

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger 3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.8

相反,您应该在以下位置创建 2 个文件/etc/apache2/mods-available

乘客.加载:

LoadModule passenger_module /var/lib/gems/1.8/gems/passenger3.0.17/ext/apache2/mod_passenger.so

乘客.conf

PassengerRoot /var/lib/gems/1.8/gems/passenger-3.0.17
PassengerRuby /usr/bin/ruby1.8

最后你只需运行:

a2enmod passenger

它已经完成了。顺便说一句,当你让它工作时,你可能会考虑使用更新版本的 ruby​​(1.9.3... 左右)。最好的方法是使用RVM

于 2012-10-26T08:48:06.710 回答
3

我试图使用乘客来运行 Rails 2.3。我几年前创建的应用程序需要迁移到新服务器。

我添加了乘客,但我得到的只是一个目录列表。

最后发现我没有config.ru文件。用这两行创建一个文件就足够了:

require File.dirname(__FILE__) + '/config/environment' run ActionController::Dispatcher.new

我花了大约 5 个小时才发现我错过了这两行。我希望处于类似情况的每个人都能在花费太多时间之前找到这个答案...... :-)

于 2015-09-17T21:01:10.173 回答
0

有同样的问题,原来,在 /etc/apache2/mods-enabled/passanger.load 我有 apache2 安装的乘客。所以不想工作,把它改成 gems 安装的乘客.so

LoadModule passenger_module /var/lib/gems/1.9.1/gems/passenger-4.0.20/buildout/apache2/mod_passenger.so
于 2013-10-19T22:51:09.003 回答