现在的位置: 首页 > 综合 > 正文

用python或者perl实现简单的http服务器目录共享

2013年09月14日 ⁄ 综合 ⁄ 共 1323字 ⁄ 字号 评论关闭

 

由于运行不了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的要快很多。

 


 

 

 

 

 

抱歉!评论已关闭.