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端口也可以使用。