通过 apache2+passenger 部署 rails 应用程序时出现 500 错误

通过 apache2+passenger 部署 rails 应用程序时出现 500 错误

我终于完成了我自己的应用程序,所以剩下的工作就是部署该应用程序。

我正在使用 Ubuntu 10.04 和 apache2(通过 apt-get 安装),因此我尝试通过 Passenger 进行部署。

我安装了像这样的乘客宝石:

sudo gem install passenger
rvmsudo passenger-install-apache2-module

我按照安装信息所提示的内容配置了 apache 设置。

我在 /etc/apache2/apache2.conf 文件的中间添加了以下几行。

LoadModule passenger_module /home/admin/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /home/admin/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17
PassengerRuby /home/admin/.rvm/wrappers/ruby-1.9.3-p194/ruby

并且,我在 /etc/apache2/sites-available/default 文件中添加了以下几行。

<VirtualHost *:80>
  ServerName localhost
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /home/admin/homepage/public
  <Directory /home/admin/homepage/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>

但是当我重新启动 apache 服务并点击该地址时,出现 500 错误。

一开始是同样的 500 错误,但是 500 错误页面是 apache 的,但是当我重新安装 libapache2-module-passenger 时,500 错误页面就变成了 rails 的。

根据 rails 的 500 错误页面(位于 public/500.html),我认为 airline 模块已与 apache 正确连接。

我应该怎样修复这个问题?

部署之前我需要在应用程序内部配置一些东西吗?

答案1

您需要配置数据库连接并安装所有必需的 gem(bundle install)。查看日志中关于您的问题的内容,您可以在应用程序根路径下的 log/ 目录中找到它。

您是在生产模式下运行它吗?
您需要在 apache 配置中定义开发模式,否则它将是生产模式。

答案2

添加:

RailsEnv development

或者:

RailsEnv production

vhost

然后重新启动。

相关内容