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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM