【问题标题】:Rails3, apache, passenger not working. But rails2 app works in same envRails3,apache,乘客不工作。但是 rails2 应用程序在相同的环境中工作
【发布时间】:2012-11-07 22:04:57
【问题描述】:

环境:

  • OpenSUSE 11.4
  • Apache 2.2.17
  • 乘客 3.0.18
  • Ruby 1.8.7
  • Rails 3.2.8

我已经在 apache - ChiliProject 下安装了 RoR 应用程序(但使用的是 rails 2.3.14),它工作正常。

它安装在 /chiliproject 和 httpd 配置中(实际上是在默认服务器中,因为我没有虚拟主机)我有“RailsBaseURI /chiliproject/public”。

现在,我需要开发自己的应用程序(网络开发的第一次经验)。

“rails new hello_world”,Webrick 工作正常,但我想用 CGI 在 apache 下运行它。我添加了“RailsBaseURI /hello_world/public”。但它不能正常工作。当我在索引页面上按“关于您的应用程序环境”时,它给了我 404“您要查找的页面不存在。”。对于 rails 中的任何路由,它都会给出错误 500 或 404。但是相同的路由和控制器可以在 webrick 上正常工作。即使我将 ChiliProject 放入 /hello_world 也可以。这意味着问题不在于 apache 或乘客。

日志中没有 apache/passenger 错误,只有 404 或 500。我尝试了“rails 2.4.13 new hello_world”,但它给了我很多错误,简单的谷歌搜索并不能解决所有问题他们。所以,我不能轻松地使用 rails 2.4.13 创建一个新项目,该项目可以与另一个应用程序正常工作,我认为它没有帮助。

我在 ruby​​ 网站上看到 1.8.7 可能会导致 rails3 崩溃。之后,我花了 4 个小时研究 RVM 和不同的 ruby​​ 版本。毕竟,ChiliProject(甚至是最新版本)不适用于 ruby​​ 1.9,我原来的问题也没有消失。现在我把所有东西都回来了(来自发行版的 repo 的 ruby​​ 1.8.7,没有 RVM)。

【问题讨论】:

  • 我不确定,但我认为 Rails 3.2 需要 ruby​​ 1.9.2 或更高版本。但首先,如果您在“Hello world”,请暂时使用标准的 Rails 服务器 (webrick)。有很多东西要学,你有大约 20 种不同的事情可能会出错——把小组件隔离出来,你会变得更好(你也可以写出比 Stack Overflow 上的人更具体的问题实际上可以回答:-)。
  • 我尝试了 Ruby 1.9.3 - 没有任何改变
  • 我知道这个不好的问题,但我不能说得更具体。也许你可以帮我问一些具体的问题。如果您认为 webrick 现在更好 - 好的,但我需要在我的应用程序中使用 CGI 脚本(与守护程序和硬件通信)。您能否指点我教程如何在 webrick 中启用 CGI 执行?
  • 忘记 CGI。 Webrick(“Rails 服务器”)是一款用于开发的优秀 Web 服务器。 Apache 或 NGinx 是生产中使用的常见 Web 服务器。两者都提供允许连接的模块,包括 Phusion Passenger(两者都可以使用)。有很多组合,但我的主要观点是你需要从一个小的、具体的问题、你尝试过的内容和具体的错误开始。否则你会从那些告诉你阅读手册之类的胡思乱想的人那里得到答案。

标签: ruby-on-rails apache passenger


【解决方案1】:

如果您的 webbrick 可以正常工作,请对您的 apache 配置文件进行重大更改。

我使用 bitnami RubyStack 和下面的配置没有任何问题:

<VirtualHost *:80>
    ServerName www.myhostname.com
    DocumentRoot /home/bitnami/app_name/public  
    RailsEnv development
    <Directory /home/bitnami/app_name/public>
        Allow from all
        Options -MultiViews
    </Directory>
</VirtualHost>

我的乘客版本:

:~$sudo passenger-config --root
/opt/bitnami/ruby/lib/ruby/gems/1.9.1/gems/passenger-3.0.17

请检查乘客是否正在运行:

:~$sudo passenger-status

----------- General information -----------
max      = 6
count    = 2
active   = 0
inactive = 2
Waiting on global queue: 0

----------- Application groups -----------
/home/bitnami/app_1:
  App root: /home/bitnami/app_1
  * PID: 4972    Sessions: 0    Processed: 24      Uptime: 33h 38m 14s

/home/bitnami/app_2:
  App root: /home/bitnami/app_2
  * PID: 24538   Sessions: 0    Processed: 1682    Uptime: 296h 14m 44s

【讨论】:

  • 非常感谢,Rogier“RailsEnv 开发”正是我所需要的。默认情况下,乘客运行生产,但我的 hello world 没有生产环境。
  • 帮助了我。基本上,我错过的是“确保指向公共”并不意味着“你的东西在哪里”,而是“嵌套在你的东西中的'公共'文件夹在哪里”。多哈。 RailsEnv 完成了剩下的工作 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2017-09-11
  • 2021-11-09
  • 1970-01-01
相关资源
最近更新 更多