一个基于webrick 的简单web服务器

使用ruby 自带的webrick 可以非常方便地实现一个web服务器。


webrick.rb 基本代码如下:

#!/usr/bin/env ruby

require 'webrick'

## prepare dirs
FileUtils.mkdir_p('html')

webroot = File.expand_path 'html'
server = WEBrick::HTTPServer.new :Port => 8000, :DocumentRoot => webroot

trap 'INT' do server.shutdown end
server.start


使用命令ruby webrick.rb 即可启动一个监听在8000端口的web服务器,

根目录在当前目录的子目录html里。代码中的web根目录也可以是一个绝对路径。


在web根目录中创建一个示例html文件,立马可以看到效果。比如:

echo "hello world" > html/index.html


上面的web 服务器在前台运行,也没有日志功能,所有输出直接打印在console上。


可以稍加润色一下,添加一些基本功能

1、简单的日志功能,

2、后台运行功能


代码如下:

#!/usr/bin/env ruby

require 'webrick'

## prepare dirs
FileUtils.mkdir_p('html')
FileUtils.mkdir_p('log')

## webroot
webroot = File.expand_path 'html'

## access log
logfile = File.open 'log/webrick.log', 'a+'
access_log = [ [logfile, WEBrick::AccessLog::COMBINED_LOG_FORMAT], ]
log = WEBrick::Log.new logfile

server = WEBrick::HTTPServer.new(
        :Port => 8001,
        :DocumentRoot => webroot,
        :Logger => log,
        :AccessLog => access_log
)

trap 'INT' do server.shutdown end

## run in daemon mode
WEBrick::Daemon.start
server.start


新学ruby,暂未解决的问题有

1、日志存在缓存buffer,不会立即写入日志文件

2、日志文件句柄似乎没有回收



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章