当前位置: 移动技术网 > IT编程>脚本编程>Python > 使用Python创建简单的HTTP服务器的方法步骤

使用Python创建简单的HTTP服务器的方法步骤

2019年06月06日  | 移动技术网IT编程  | 我要评论

河源区号,尚于博女友,关于孙中山的资料

如果需要一个简单的web server,而不是安装那些复杂的http服务程序,比如:apache,nginx等。那么可以使用python自带的包完成一个简单的内建 http 服务器。于是,你可以把你的目录和文件都以http的方式展示出来。

基本命令

python -m web服务器模块 [端口号,默认8000]

这里的“web服务器模块”有如下三种:

basehttpserver: 提供基本的web服务和处理器类,分别是httpserver和basehttprequesthandler。

simplehttpserver: 包含执行get和head请求的simplehttprequesthandler类。

cgihttpserver: 包含处理post请求和执行cgihttprequesthandler类。

启动web服务器

对于python2,简单搭建web服务器,只需在需要搭建web服务器的目录(如 /home/pythontab/)下,输入如下命令:

python -m simplehttpserver 8080
使用 8080端口的创建web服务器

对于python3,其创建web服务器的等价命令,如下:

python3 -m http.server 8080

浏览web页面

可以在浏览器中输入 http://127.0.0.1:8080 或 将 http://localhost:8080进行访问。其他机器也可以通过服务器的ip地址来访问服务器资源。

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

import simplehttpserver
import socketserver

port = 8000

handler = simplehttpserver.simplehttprequesthandler

httpd = socketserver.tcpserver(("", port), handler)

print "serving at port", port
httpd.serve_forever()

python版ftp服务器

看到这里,默认你已经安装了python,不过你还需要安装另外一个好用的工具。你知道,当需要找chrome插件的时候,会去google的webstore;当需要找firefox应用的时候,会去mozilla的add-ons;当你需要找python组件的时候,你需要pip:a tool for installing and managing python packages,安装方法就不介绍了。

python没有内置一个直接可以用的ftp服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:

pip install pyftpdlib

安装完后,和http服器类似,执行以下命令就可以启动一个ftp服务器了:

python -m pyftpdlib -p 21

后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:
ftp://localhost:21

这时候,是匿名访问,也就是用户名是anonymous,密码为空,如果想要控制访问权限,你需要自己定制服务器,具体的可以参看pyftpdlib tutorial,我这里拷贝过来一段作为介绍:

from pyftpdlib.authorizers import dummyauthorizer
from pyftpdlib.handlers import ftphandler
from pyftpdlib.servers import ftpserver

def main():
  # instantiate a dummy authorizer for managing 'virtual' users
  authorizer = dummyauthorizer()

  # define a new user having full r/w permissions and a read-only
  # anonymous user
  authorizer.add_user('user', '12345', '.', perm='elradfmwm')
  authorizer.add_anonymous(os.getcwd())

  # instantiate ftp handler class
  handler = ftphandler
  handler.authorizer = authorizer

  # define a customized banner (string returned when client connects)
  handler.banner = "pyftpdlib based ftpd ready."

  # specify a masquerade address and the range of ports to use for
  # passive connections. decomment in case you're behind a nat.
  #handler.masquerade_address = '151.25.42.11'
  #handler.passive_ports = range(60000, 65535)

  # instantiate ftp server class and listen on 0.0.0.0:2121
  address = ('', 2121)
  server = ftpserver(address, handler)

  # set a limit for connections
  server.max_cons = 256
  server.max_cons_per_ip = 5

  # start ftp server
  server.serve_forever()

if __name__ == '__main__':
  main()

只看代码应该基本知道该怎么用了,add_user显然是添加用户,2121是指定端口,当然也可以随机,还有最大连接数max_cons,每个ip最大连接限制,更多的接口建议直接看docstrings。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持移动技术网。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网