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

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

假設你的電腦 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/

這樣就可以看到分享的網頁了。如果是在自己的電腦上要看自己的伺服器所分享的網頁,也可以輸入這樣的網址:

http://127.0.0.1:8000

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


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

python -m SimpleHTTPServer 8080

在預設的狀況下,伺服器會傾聽所有的網路位址,如果只想要傾聽本機的位址(localhost),就要自己撰寫指令稿(script)了:

#/usr/bin/python
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler

HandlerClass = SimpleHTTPRequestHandler
ServerClass  = BaseHTTPServer.HTTPServer
Protocol     = "HTTP/1.0"

if sys.argv[1:]:
  port = int(sys.argv[1])
else:
  port = 8000
server_address = ('127.0.0.1', port)

HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)

sa = httpd.socket.getsockname()
print "Serving HTTP on", sa[0], "port", sa[1], "..."
httpd.serve_forever()

因為 Python 是一種跨平台的語言,所以這個 Python 網頁伺服器也可以在 Windows 或 Cygwin 等環境下使用。

參考資料:Linux Journal