【问题标题】:Running Ruby app on Apache在 Apache 上运行 Ruby 应用程序
【发布时间】:2010-06-16 20:53:10
【问题描述】:

我最近一直在学习 Ruby,我想将一个测试 Web 应用程序上传到我的服务器。但我不知道如何让它在我的共享主机上运行。

我的主机详情

  • 与 JustHost 共享主机(请参阅 here for list of features
  • 操作系统:Linux
  • 阿帕奇:2.2.11
  • cPanel:11.25.0-STABLE
  • SSH 访问。
  • 可以安装 Ruby Gems。
  • 无法安装 Apache 模块。
  • 可以管理 Ruby on Rails 应用程序”通过 cPanel。
  • Mongrel gem 已安装。

我使用 Sinatra 构建了以下简单的 HelloWorld Ruby Rack 应用程序:

#!/usr/bin/ruby ruby
require 'rubygems'
require 'sinatra'
get '/hi' do
  "Hello World!"
end

我只是不知道如何“启动”应用程序。我是否需要告诉 Mongrel(或者可能是 Apache)该应用程序以某种方式存在?如何启动此应用程序运行?如果需要,我很乐意提供更多信息。

【问题讨论】:

  • 如果主机有乘客支持,您可以运行任何基于机架的应用程序

标签: ruby apache sinatra shared-hosting


【解决方案1】:

首先,您必须在服务器启动时手动或通过脚本启动您的应用程序。只需执行 ruby​​ hi.rb 之类的操作(如 sinatra 网页上所述,它在端口 4567 上运行应用程序)。那么你有两个选择。 1)您可以直接访问此应用程序:http://yourserver:4567/ 或 2)您可以使用 apache 作为代理。

如果您想使用 apache 作为代理,您必须使用虚拟主机服务器。例如:

NameVirtualHost hi.server:80
<VirtualHost hi.server:80>
    Servername hi.server
    RewriteEngine On
    <Proxy balancer://hi>
        BalancerMember http://127.0.0.1:4567
    </Proxy>
    ProxyPass / balancer://hi/
    ProxyPassReverse / balancer://hi/
</VirtualHost>

如果你有多个核心,你可以运行 hi.rb 不止一次(每次在不同的端口上),你只需添加新的 BalancerMember。您还可以使用指令打开 apache 缓存:CacheEnable mem /

【讨论】:

  • 当你说“做一些像 ruby​​ hi.rb 这样的事情”时,我在哪里做呢?我还没有 SSH 访问权限,所以我应该得到它吗?
  • 是的,此解决方案要求您可以访问服务器并可以运行应用程序并可以编辑 apache 配置文件。如果您无法编辑 apache 配置文件,但您可以执行自己的服务器,则可以编辑 .htacces,您只需在其中放置 ProxyPass 和 ProxyPassReverse 并将其作为参数 /127.0.0.1/4567。如果你不能运行应用程序,你可以尝试通过 cgi resp 运行它。 fcgi。看看这个:bluehostforums.com/showthread.php?p=76911
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-04-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-13
相关资源
最近更新 更多