zoukankan      html  css  js  c++  java
  • 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 FilesCodeDirectorypython
    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

  • 相关阅读:
    程序员的九重境界,你是第几重?
    一个常用的正则表达验证类(转载)
    学习程序设计的态度
    科技期刊学术不端文献检测系统(转载)
    用GridView设计固定行数的入库单报表
    JavaScript技巧集
    线程的概念
    java实验三 类的继承与多态
    常见的网络攻击手段及防御方法
    类和对象的概念(转载)
  • 原文地址:https://www.cnblogs.com/sunfie/p/6679666.html
Copyright © 2011-2022 走看看