用python或者perl實現簡單的http服務器目錄共享

 

由於運行不了Go語言的一個例子工程,區區把golang的源代碼更新到最新版本了。。

/README寫着:

 

 


This is the source code repository for the Go programming language.

For documentation about how to install and use Go,
visit http://golang.org/ or load doc/install.html in your web browser.


 

 

可混的是平時都在vm+ssh中使用linux,所以只好將golang目錄做成web server再用host機器的火狐看文檔了。

 

“把一個目錄用http服務器的方式臨時發佈”,這是一個很好用的技術需求。

 

在較新python安裝中,只需一行命令即可解決:

python -m SimpleHTTPServer 8080
這個命令可以把當前目錄變成一個小型的web server。傳文件,看文檔,試腳本都很實用。

在瀏覽器中再輸入http://localhost:8080就可以查看了。。

 

BUT,這裏要說說區區的特殊情況,由於使用了virtual box的NAT功能,本人要輸入的是http://localhost:3388 —— 這是由於開啓的端口映射將vm的8080仿成host的3388了。

 

本來事情可以告一段落,但是今天忽然覺得這個SimpleHTTPServer好慢好卡,所以決定找找perl有沒有類似的實現(這就是所謂蛋疼)。

google說http://www.perlmonks.org/?node_id=865148 這裏有不錯的方案,

baidu說………………不知道它說什麼。

 

最終比較靠譜的方案是用HTTP::Server::Brick,這個在linux下非常簡單用

sudo cpan -i HTTP::Server::Brick

就可以完成安裝了。。

 

然後終於perl也有oneline http server了:

perl -MHTTP::Server::Brick -e 'my $p=`pwd`;chop $p;my $s=HTTP::Server::Brick->new(port=>8080);$s->mount("/" => {path=>$p}); $s->start()'

 

BUT again,這裏要說說區區的特殊情況,由於使用了virtual box的NAT功能,.......

 

所以瀏覽http目錄時,會有一個redirect的bug,解決方法是:

把Brick.pm的這一行:

$res->add_content("<a href=/"$_/">$_</a>/n") for map { s!.*/!!; $_} sort glob "$path/*";

改成:

$res->add_content("<a href=/"$_/">$_</a>/n") for map {my $p=$_; my $t=$_; $t=~s!.*/!!; (-d $p) ? $t."/" : $t} sort glob "$path/*";

 

區區在琢磨要不要給作者發個patch,BUT不是大家都需要的。

 

 


 

經本人親測:

perl的這個oneline http server比python的要快很多。

 


 

 

 

 

 

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