程式扎記: [ Python 文章收集 ] 用 Python 的 SimpleHTTPServer 模組快速建立一個臨時網頁伺服器

標籤

2015年3月10日 星期二

[ Python 文章收集 ] 用 Python 的 SimpleHTTPServer 模組快速建立一個臨時網頁伺服器

Source From Here 
Preface 
如果你需要一個簡單的 Web 伺服器做一些臨時性的工作,但又不想花很多時間去安裝像 Apache 這樣完整的網頁伺服器,那你可以試試看 Python 的 SimpleHTTPServer 模組,使用這個模組可以讓任何的目錄中的資料立即放上網路,而且不需要安裝其餘任何軟體,只需要 Python 就夠了。 

就實際的應用來說,這樣的方式可以讓你很方便的在區域網路(local network)中分享資料,而要使用這個迷你的網頁伺服器也非常簡單,只要一行指令就可以了。 

How-To 
假設你的電腦 IP 位址為 192.168.0.1,而想要分享 /home/seal 中的資料,則先切換到該目錄中: 
# cd /home/seal

再啟動 Python 的網頁伺服器: 
# python -m SimpleHTTPServer

就這樣一行指令就完成了!非常方便。執行這行指令應該會看到這樣的輸出訊息: 
Serving HTTP on 0.0.0.0 port 8000 ...

這個訊息是告訴你網頁伺服器所開啟的 port 是 8000,這時候你可以開啟瀏覽器測試一下,再瀏覽器上輸入網址 http://192.168.0.1:8000/ 這樣就可以看到分享的網頁了。 

如果被分享的目錄中有 index.html 這個網頁檔,則開啟這個目錄時,預設就會顯示這個網頁檔,而如果這個檔案不存在,則會自動顯示該目錄中的檔案列表。 

如果你想要更改伺服器所使用的 port,則可以直接在指令的最後面指定 port number: 
# python -m SimpleHTTPServer 8080

在預設的狀況下,伺服器會傾聽所有的網路位址,如果只想要傾聽本機的位址(localhost),就要自己撰寫指令稿(script)了: 
  1. #/usr/bin/python  
  2. import sys  
  3. import BaseHTTPServer  
  4. from SimpleHTTPServer import SimpleHTTPRequestHandler  
  5.   
  6. HandlerClass = SimpleHTTPRequestHandler  
  7. ServerClass  = BaseHTTPServer.HTTPServer  
  8. Protocol     = "HTTP/1.0"  
  9.   
  10. if sys.argv[1:]:  
  11.   port = int(sys.argv[1])  
  12. else:  
  13.   port = 8000  
  14. server_address = ('127.0.0.1', port)  
  15.   
  16. HandlerClass.protocol_version = Protocol  
  17. httpd = ServerClass(server_address, HandlerClass)  
  18.   
  19. sa = httpd.socket.getsockname()  
  20. print "Serving HTTP on", sa[0], "port", sa[1], "..."  
  21. httpd.serve_forever()  
因為 Python 是一種跨平台的語言,所以這個 Python 網頁伺服器也可以在 Windows 或 Cygwin 等環境下使用。

沒有留言:

張貼留言

網誌存檔

關於我自己

我的相片
Where there is a will, there is a way!