2

我有 Rails3、Phusion 乘客 3 和 apache。我有一个相当简单的应用程序,一个控制器和一个视图来打印你好世界。如果从虚拟主机“RailsEnv development”中删除此行,我会收到 http 500 错误,如下所示“500 Internal Server Error”。如果我放回“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>
4

2 回答 2

6

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

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

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

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

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

于 2012-11-21T19:40:05.027 回答
0

尝试设置RailsEnv production

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

于 2012-11-21T18:28:26.037 回答