通过python快速搭建http服务

2017-2-15 杜世伟 Python

python -m SimpleHTTPServer 快速搭建http服务

有时你需临时搭建一个简单的 Web Server,但你又不想去安装 Apache、Nginx 等这类功能较复杂的 HTTP 服务程序时。这时可以使用 Python 内建的 SimpleHTTPServer 模块快速搭建一个简单的 HTTP 服务器。

使用python -m SimpleHTTPServer 模块可以把你指定目录中的文件和文件夹以一个简单的 Web 页面的方式展示出来。

如我想把目录/Users/xiaodu/python/test目录下的内容通过web共享出来,目录内容如下:

ls -la

total 32

drwxr-xr-x   6 xiaodu  staff   204  9  9 23:26 .

drwxr-xr-x  31 xiaodu  staff  1054  1 13 23:16 ..

-rw-r--r--   1 xiaodu  staff   236  9  9 16:59 for.py

-rw-r--r--   1 xiaodu  staff   187  9  9 16:45 lambda.py

-rw-r--r--   1 xiaodu  staff   287  9  9 16:54 pprint.pyc

-rw-r--r--   1 xiaodu  staff   377  9  9 17:09 yield.py

只需执行下面的命令

python -m SimpleHTTPServer 
不填会采用缺省端口8000。注意,这会将当前所在的文件夹设置为默认的Web目录,试着在浏览器敲入本机地址:

通过浏览器访问:http://localhost:8000

Directory listing for /


如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。这样已经实现了最基本的文件分享的目的,你可以做成一个脚本,再建立一个快捷方式,就可以很方便的启动文件分享了。如果有更多需求,完全可以根据自己需要定制,具体的请参见官方文档SimpleHTTPServer,或者直接看源码。

命令如下:

python -m SimpleHTTPServer 8000
使用上面的命令可以把当前目录发布到8000端口。

但是这条命令是当前运行的,不是后台运行的,也就是说如果Ctrl + C,则该端口就会关闭。

python -m SimpleHTTPServer 8000 &
在上述命令的最后加一个 & ,则该命令产生的进程在后台运行,不会影响当前终端的使用(我们在只有一个bash的环境下)。

生成的新的进程为当前bash的子进程,所以,当我们关闭当前bash时,相应的子进程也会被kill掉,这也不是我们想要的结果。

nohup python -m SimpleHTTPServer 8000 &
在命令的开头加一个nohup,忽略所有的挂断信号,如果当前bash关闭,则当前进程会挂载到init进程下,成为其子进程,这样即使退出当前用户,其8000端口也可以使用。

标签: http python SimpleHTTPServer

Powered by emlog 沪ICP备2023034538号-1