使用Python创建简单的HTTP服务器的方法步骤
如果需要一个简单的WebServer,而不是安装那些复杂的HTTP服务程序,比如:Apache,Nginx等。那么可以使用Python自带的包完成一个简单的内建HTTP服务器。于是,你可以把你的目录和文件都以HTTP的方式展示出来。
基本命令
python-mWeb服务器模块[端口号,默认8000]
这里的“Web服务器模块”有如下三种:
BaseHTTPServer:提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。
SimpleHTTPServer:包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。
CGIHTTPServer:包含处理POST请求和执行CGIHTTPRequestHandler类。
启动web服务器
对于Python2,简单搭建Web服务器,只需在需要搭建Web服务器的目录(如/home/pythontab/)下,输入如下命令:
python-mSimpleHTTPServer8080
使用8080端口的创建Web服务器
对于Python3,其创建Web服务器的等价命令,如下:
python3-mhttp.server8080
浏览web页面
可以在浏览器中输入http://127.0.0.1:8080或将http://localhost:8080进行访问。其他机器也可以通过服务器的IP地址来访问服务器资源。
如果当前文件夹有index.html文件,会默认显示该文件,否则,会以文件列表的形式显示目录下所有文件。这样已经实现了最基本的文件分享的目的,你可以做成一个脚本,再建立一个快捷方式,就可以很方便的启动文件分享了。如果有更多需求,完全可以根据自己需要定制,具体的请参见官方文档SimpleHTTPServer,或者直接看源码。我拷贝一段,方便参考:
importSimpleHTTPServer importSocketServer PORT=8000 Handler=SimpleHTTPServer.SimpleHTTPRequestHandler httpd=SocketServer.TCPServer(("",PORT),Handler) print"servingatport",PORT httpd.serve_forever()
Python版FTP服务器
看到这里,默认你已经安装了Python,不过你还需要安装另外一个好用的工具。你知道,当需要找Chrome插件的时候,会去Google的WebStore;当需要找Firefox应用的时候,会去Mozilla的Add-ons;当你需要找Python组件的时候,你需要pip:AtoolforinstallingandmanagingPythonpackages,安装方法就不介绍了。
Python没有内置一个直接可以用的FTP服务器,所以需要第三方组件的支持,我找到的这个组件叫pyftpdlib,首先安装:
pipinstallpyftpdlib
安装完后,和HTTP服器类似,执行以下命令就可以启动一个FTP服务器了:
python-mpyftpdlib-p21
后面的21端口依然是可选的,不填会随机一个,被占用的端口将跳过。在浏览器敲入本机地址:
ftp://localhost:21
这时候,是匿名访问,也就是用户名是anonymous,密码为空,如果想要控制访问权限,你需要自己定制服务器,具体的可以参看pyftpdlibTutorial,我这里拷贝过来一段作为介绍:
frompyftpdlib.authorizersimportDummyAuthorizer frompyftpdlib.handlersimportFTPHandler frompyftpdlib.serversimportFTPServer defmain(): #Instantiateadummyauthorizerformanaging'virtual'users authorizer=DummyAuthorizer() #Defineanewuserhavingfullr/wpermissionsandaread-only #anonymoususer authorizer.add_user('user','12345','.',perm='elradfmwM') authorizer.add_anonymous(os.getcwd()) #InstantiateFTPhandlerclass handler=FTPHandler handler.authorizer=authorizer #Defineacustomizedbanner(stringreturnedwhenclientconnects) handler.banner="pyftpdlibbasedftpdready." #Specifyamasqueradeaddressandtherangeofportstousefor #passiveconnections.Decommentincaseyou'rebehindaNAT. #handler.masquerade_address='151.25.42.11' #handler.passive_ports=range(60000,65535) #InstantiateFTPserverclassandlistenon0.0.0.0:2121 address=('',2121) server=FTPServer(address,handler) #setalimitforconnections server.max_cons=256 server.max_cons_per_ip=5 #startftpserver server.serve_forever() if__name__=='__main__': main()
只看代码应该基本知道该怎么用了,add_user显然是添加用户,2121是指定端口,当然也可以随机,还有最大连接数max_cons,每个ip最大连接限制,更多的接口建议直接看docstrings。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。