一個基於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、日誌文件句柄似乎沒有回收



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