使用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、日誌文件句柄似乎沒有回收