2010-06-16 130 views
2

我最近一直在学习Ruby,并且想要将测试Web应用程序上载到我的服务器。但我无法弄清楚如何让它在我的共享主机上运行。在Apache上运行Ruby应用程序

我的托管详细

  • 共享与Justhost的虚拟主机(见here for list of features
  • 操作系统:Linux
  • 的Apache:2.2.11
  • 的cPanel:11.25.0-STABLE
  • SSH访问。
  • 可以安装Ruby Gems。
  • 无法安装Apache模块
  • Can”通过cPanel管理Ruby on Rails应用程序“。
  • Mongrel宝石已安装。

我建立了以下简单的HelloWorld红宝石机架采用Sinatra应用:

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

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

+0

如果托管服务拥有乘客支持,你可以运行任何基于机架的应用程序 – 2010-06-17 00:20:13

回答

3

首先,您必须在服务器启动时手动或通过脚本启动应用程序。只需做一些像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(diferent端口上的每个时间),你只需要添加新的BalancerMember。你也可以使用下面的指令来打开apache缓存:CacheEnable mem/

+0

当你说“做类似ruby hi.rb的事情”时,我在哪里做?我还没有SSH访问权限,那么我应该如何获取? – 2010-06-18 23:42:53

+1

是的,这个解决方案期望你有权访问服务器并且可以运行应用程序并且可以编辑Apache配置文件。如果你不能编辑apache配置文件,但是你可以执行你自己的服务器,你可以编辑.htacces,你只需要把ProxyPass和ProxyPassReverse作为参数,你可以编辑/ http://127.0.0.1/4567。如果你不能运行应用程序,你可以尝试通过运行它。 FCGI。看看这个:http://www.bluehostforums.com/showthread.php?p=76911 – pejuko 2010-06-19 20:47:07