ruby - 在 Apache 上运行 Ruby 应用程序

标签 ruby apache sinatra shared-hosting

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

我的托管详细信息

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

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

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

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

最佳答案

首先,您必须在服务器启动时手动或通过脚本启动应用程序。只需执行 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 - 在 Apache 上运行 Ruby 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3057090/

相关文章:

apache - 简单的 mod_rewrite 规则不起作用

java - 如何在 C Ruby 中使用 Java 库(如 JDBC)?

mysql - 将 mysql 结果转换为数组或散列

ruby - 如何格式化数组以将每五个元素分成 ruby​​ 中的新行?

web-services - 如何从 Java 调用 ASP.NET Web API

php - 年、月、日的 URL 重写

ruby - 在 Sinatra 中检测浏览器

ruby-on-rails - 如何在 capistrano 中为 Sinatra 项目设置 rvm

ruby - Mustache & Sinatra - 是否可以省略 view.rb 文件?

mysql - 无法销毁 Rails 中某些模型的记录