简单的Ruby" Hello,World" Webrick使用虚拟主机的程序

时间:2016-03-01 19:26:49

标签: ruby webrick

我在互联网上搜索了一个" Hello,World"在Ruby中为Webrick键入程序,但找不到任何有效的程序。我发现this guide on SO但是因为我的生活无法让它发挥作用。

咨询Ruby Documentation for Webrick让我了解了一些代码片段,这些代码片段让我朝着正确的方向前进。没有易于理解的教程,所以我想在SO上添加我的答案。

我在没有Apache或Nginx的情况下使用Ubuntu 14.04,并希望我的服务器用于虚拟主机。默认情况下,Webrick并不会同时响应请求,但对我而言,除了占用空间小之外,这还是一个优势。我希望在没有Rails框架的情况下让它工作更轻松。

1 个答案:

答案 0 :(得分:2)

首先,我使用Ubuntu软件包管理器安装了Ruby。如果您使用的是CentOS或其他Linux发行版,则可以将此步骤调整为特定的包管理器。还要确保Web服务器上的端口80已打开。可以通过Webrick获得SSL,但此时我没有选择。

sudo apt-get install ruby

这是我使用的名为myapp.rb的脚本。我把它/var/www/myapp。理想情况下,我认为它不应该在文档根目录中。您还应该创建一个特殊的用户和组来运行脚本以提高安全性(我没有在这里概述这些步骤)

require 'webrick'

server = WEBrick::HTTPServer.new(:Port => 80,
                             :SSLEnable => false,
                             :DocumentRoot => '/var/www/myapp',
                             :ServerAlias => 'myapp.example.com')

server.mount_proc '/' do |req, res|
  res.body = 'Hello, world!'
end

trap 'INT' do server.shutdown end

server.start

上面的require语句告诉Ruby在运行程序时包含Webrick类。该脚本的第二行使用以下选项创建Webrick实例:

  • 使用端口80
  • 禁用SSL
  • 将文档根目录设置为/var/www/myapp
  • 将服务器别名设置为myapp.example.com

当然,您必须配置您的特定域名DNS'。 server.mount_proc告诉Ruby在文档根目录中提供响应“Hello,world”。如果你有生命,我想你可以在那里指定一个子目录。上面的Ruby Webrick文档提供了相关信息。

trap开头的行表示可以使用Ctrl-C停止Web服务器。要启动脚本,我在SSH命令行输入以下内容:

ruby myapp.rb