我终于完成了我自己的应用程序,所以剩下的工作就是部署该应用程序。
我正在使用 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
然后重新启动。