python 怎么搭建简单的web服务器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 怎么搭建简单的web服务器?相关的知识,希望对你有一定的参考价值。
参考技术A 利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令:\\x0d\\x0apython -m Web服务器模块 [端口号,默认8000]\\x0d\\x0a例如:\\x0d\\x0apython -m SimpleHTTPServer 8080\\x0d\\x0a然后就可以在浏览器中输入\\x0d\\x0ah ttp://loca lhost:端口号/路径\\x0d\\x0a来访问服务器资源。 \\x0d\\x0a例如:\\x0d\\x0ah ttp://local host:808 0/index.h tm(当然index.htm文件得自己创建)\\x0d\\x0a其他机器也可以通过服务器的IP地址来访问。\\x0d\\x0a\\x0d\\x0a这里的“Web服务器模块”有如下三种:\\x0d\\x0a\\x0d\\x0aBaseHTTPServer: 提供基本的Web服务和处理器类,分别是HTTPServer和BaseHTTPRequestHandler。\\x0d\\x0aSimpleHTTPServer: 包含执行GET和HEAD请求的SimpleHTTPRequestHandler类。\\x0d\\x0aCGIHTTPServer: 包含处理POST请求和执行CGIHTTPRequestHandler类。python搭建简易Web Server
如果你急需一个简单的Web Server,但你又不想去下载并安装那些复杂的HTTP服务程序,比如:Apache,ISS等。那么, Python可能帮助你,使用Python可以完成一个简单的内建 HTTP 服务器,于是,你可以把你的目录和文件都以HTTP的方式展示出来,只需要干一件事情,那就是安装一个Python。
实际上来说,这是一个可以用来共享文件的非常有用的方式。实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行。下面是这个命令行:(假设我们需要共享我们的目录/home/haoel 而IP地址是192.168.1.1)
cd D:\Program Files\CodeDirectory\python
python -m SimpleHTTPServer
这就行了,而我们的HTTP服务在8000号端口上侦听。你会得到下面的信息:
Serving HTTP on 0.0.0.0 port 8000 ...
你可以打开你的浏览器(IE或Firefox),然后输入下面的URL:
http://192.168.1.1:8000
如果你的目录下有一个叫 index.html 的文件名的文件,那么这个文件就会成为一个默认页,如果没有这个文件,那么,目录列表就会显示出来。
如果你想改变端口号,你可以使用如下的命令:
python -m SimpleHTTPServer 8080
如果你只想让这个HTTP服务器服务于本地环境,那么,你需要定制一下你的Python的程序,下面是一个示例:
1 import sys 2 import BaseHTTPServer 3 from SimpleHTTPServer import SimpleHTTPRequestHandler 4 HandlerClass = SimpleHTTPRequestHandler 5 ServerClass = BaseHTTPServer.HTTPServer 6 Protocol = "HTTP/1.0" 7 8 if sys.argv[1:]: 9 port = int(sys.argv[1]) 10 else: 11 port = 8000 12 server_address = (‘127.0.0.1‘, port) 13 14 HandlerClass.protocol_version = Protocol 15 httpd = ServerClass(server_address, HandlerClass) 16 17 sa = httpd.socket.getsockname() 18 print "Serving HTTP on", sa[0], "port", sa[1], "..." 19 httpd.serve_forever()
Python 版 ftp
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()
转自:http://coolshell.cn/articles/1480.html
以上是关于python 怎么搭建简单的web服务器?的主要内容,如果未能解决你的问题,请参考以下文章