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

时间:2012-11-21 16:18:00

标签: 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>

2 个答案:

答案 0 :(得分:6)

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

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

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

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

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

答案 1 :(得分:0)

尝试设置RailsEnv production

重新启动Apache,然后使用touch /var/www/mysistes/apps/web_app1/tmp/restart.txt

重新启动Passenger