使用带有apache的Phusion Passenger的Rails 3在生产模式下不起作用

Sal*_*h-1 2 ruby-on-rails

我有Rails3,Phusion乘客3和apache.我有一个相当简单的应用程序,一个控制器和一个视图打印你好世界.如果从vhost"RailsEnv开发"中删除此行,我得到http 500错误,如下面的"500内部服务器错误".如果我放回"RailsEnv开发"这一行应用程序正常.是否有关于乘客需要设置生产工作的东西?

我只需要测试我的新乘客安装是否可以在生产模式下工作.

以下是相关配置.[usertest @ test-server web_app1] $ ruby​​ -v ruby​​ 1.9.3p327(2012-11-10修订版37606)

[usertest@test-server web_app1]$ which ruby
/usr/local/bin/ruby

[usertest@test-server web_app1]$ cat /etc/apache/conf.d/passenger.conf 
LoadModule passenger_module /usr/local/lib/ruby/gems/1.9.1/gems/passenger-   3.0.18/ext/apache2/mod_passenger.so
PassengerRoot /usr/local/lib/ruby/gems/1.9.1/gems/passenger-3.0.18
PassengerRuby /usr/local/bin/ruby

<VirtualHost *:80>
  ServerName siteexample.com 
 DocumentRoot  /var/www/mysites/apps/web_app1/public   
 RailsEnv development
<Directory /var/www/mysites/apps/web_app1/public>    
     AllowOverride all        
     Allow from all
     Options -MultiViews   
     Options FollowSymLinks
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

Tom*_*son 6

要使用Phusion Passenger部署到生产服务器,您需要使用该RailsEnv production指令.

但您还需要确保正确配置关联的Rails环境.这些文件存储在apps/config/environments/一个新的Rails项目附带3 :( development默认)test,和production.您可以添加其他内容,例如staging通过向此目录添加文件.

每个文件都有许多对环境有意义的设置.在开发中,您需要良好的详细日志记录,纯文本CSS和JS文件以及在浏览器中显示的错误.在生产中,您希望一切尽可能快:简洁日志,编译资产,用户友好的错误页面.

在您的情况下,Rails使用的资产(特别是所有CSS和JS文件)尚未由Rails"资产管道"处理.有一个用于预编译assets(rake assets:precompile)的rake任务,这是默认production环境所期望的.默认开发环境分别在运行时将CoffeeScript和SASS文件编译为JS和CSS,否则进行最少的处理.

因此,作为部署到生产的一部分,您需要在添加或更改任何资产时运行此rake任务.因为每次部署时都需要这个和许多其他类似的细节,所以有一个很棒的宝石叫做Capistrano,大多数Rails应用程序都用它来进行部署.当然,这是另一个野兽,但随着你进一步发展,你肯定会想到它.即使是最低限度配置的capistrano脚本也会知道预编译资产并在完成后重新启动服务器等.