首先,嗯……
其實這個功能在 Python 2 就已經有了,只是這一兩天有看到,覺得有趣,順便就記錄一下。
直覺告訴我,將來我應該有機會用到,或者說我又多了一個小工具可以發揮。
Python 版本:3.6,作業系統:Windows 7。
廢話不多說,直接下 command 讓 Python 的 HTTP Server 直接運作
python -m http.server
從執行結果,我可以得知這個 HTTP Server 的監聽埠是在 8000,同時不綁定任何一組 IP,所以我用瀏覽器瀏覽「http://127.0.0.1:8000」或「http://localhost:8000」,可以看到如下結果
一般 Web Server 在建立一個站台時,通常要指定一個 document root,這指的是本機上的某一個資料夾的路徑,用來做為 Web Server 對外提供資源的基礎路徑。
而 Pythone 會以目前的工作目錄,做為 document root。以我的例子來說,我是在 C:\ 執行 command,那麼工作目錄就是 C:\,所以 document root 就會是 C:\ 下所有的資源,也就是 C:\ 下面的檔案或者是資料夾。
資料夾,其項目名稱最後面,會多一個反斜線「/」,即紅框;檔案則不會有反斜線,即綠框標示的項目
OK,從基本指令,可以知道預設情況,Python 的 HTTP Server,不會綁定任何 IP,而且其監聽埠是 8000。但一般來講,HTTP Server 都會以 80 做為監聽埠。這代表我們可以在瀏覽網站時,不需要再特別加上埠號。Python 的 HTTP Server 當然也可以比照辦理。假設,目前本機的 80 埠沒有被其他服務所佔用。那麼我可以改用以下的指令,讓 Python 的 HTTP Server 在 80 埠進行監聽。這樣我們就可以直接使用「http://127.0.0.1/」或「http://localhost/」不需多加埠號,就可以瀏覽網頁。
python -m http.server 80
HTTP Server 監聽埠可以自訂,那麼 Hostname 或 IP 可以綁定嗎?答案是可以的!只要多加一組參數即可
python -m http.server --bind [IP/HOSTNAME] [Port Number]
至於用 Python 搭一個臨時的 HTTP Server 可以幹嘛?
其實算是雙面刃吧?以 Linux 來講,我如果在「/root/」或「 / 」,會發生什麼事?答案是完全分享這兩個目錄,這代表會像「如入無人之境」,會有資安的問題。但是,如果不拿來幹壞事,只是單純某些時候的方便 XDD。
嗯……突然覺得,我~好~壞~
果然有時為了幹壞事,是學習的主要動力來源 XDD
如果是 Python 2.7 的話,用法很類似,差別是不能綁定 IP,以及模組名稱不同
python27 -m SimpleHTTPServer 80