在開發網頁應用或是聊天機器人時,通常是使用本機的伺服器,無法真正在外界進行測試,然而透過免費的 ngrok 服務,能夠將本機環境對應到一個 ngrok 網址,公開在整個網際網路中,由於是公開網址,就能真正在外界進行測試。
原文參考:使用 ngrok 服務
前往 ngrok 的網站,註冊帳號並登入。
ngrok 網站:https://ngrok.com/
登入後,從左側選單點擊 Your Authtoken,會出現一段串接 ngrok 服務所使用的 token ( 點擊網頁最下方 reset token 按鈕可以重設 token )。
前往 ngrok 的下載頁面,根據自己電腦作業系統,使用終端機的命令下載安裝,或下載對應的安裝檔進行安裝。
下載 ngrok:https://ngrok.com/download
安裝後,開啟終端機,使用命令輸入註冊 ngrok 後取得的 token。
ngrok authtoken <token>
輸入 token 後,繼續使用命令,將本機環境的埠號 port 對應到 ngrok 公開網址 ( 如果使用 Flask 建構的服務,port 預設是 5000 )。
ngrok http <port>
完成後,就會看到終端機裡出現 ngrok 的公開網址 ( 每次重新輸入後,網址都會改變 )
使用本機的 Python 編輯器,或開啟 Anaconda Jupyter,安裝 Flask 後,執行下方的程式碼,會開啟一個本機網頁服務,網址為 127.0.0.1:5000。
參考:Flask 函式庫
from flask import Flask
app = Flask(__name__)
@app.route("/<name>")
def home(name):
return f"<h1>hello {name}</h1>"
app.run()
打開瀏覽器,輸入 127.0.0.1:5000/oxxo
,畫面中就會出現 hello oxxo 的文字,但這個網址只有本機瀏覽器能夠使用,外部無法使用。
由於 5000 的埠號已經和 ngrok 串接,所以輸入剛剛的 ngrok 公開網址,就會看到一模一樣的結果,而這個網址,不論在任何地方,都能正常讀取。
在 Google Colab 裡使用 Flask 建立網頁服務時,由於 127.0.0.1 的本機環境無法與外界溝通 ( 位於 Google 的 server ),所以必須要搭配 ngrok 才能正常運作,按照接下來的步驟,就能在 Colab 裡使用 ngrok。
首先開啟一個 Colab 筆記本 ( 參考:使用 Google Colab ),輸入下方程式碼,將這個 Colab 筆記本串接 Google 雲端硬碟。
from google.colab import drive
drive.mount('/content/drive', force_remount=True)
!mkdir -p /drive
#umount /drive
!mount --bind /content/drive/My\ Drive /drive
!mkdir -p /drive/ngrok-ssh
!mkdir -p ~/.ssh
執行後會跳出確認視窗,點擊「連線至 Google 雲端硬碟」。
選擇自己的 Google 帳號。
點擊「允許」。
完成後,在 Colab 會出現 Mounted at /content/drive 的文字,表示已經成功串接 Google 雲端硬碟。
接著繼續輸入下方的程式碼,將 ngrok 安裝到 Google 雲端硬碟中。
!mkdir -p /drive/ngrok-ssh
%cd /drive/ngrok-ssh
!wget https://bin.equinox.io/c/4VmDzA7iaHb/ngrok-stable-linux-amd64.zip -O ngrok-stable-linux-amd64.zip
!unzip -u ngrok-stable-linux-amd64.zip
!cp /drive/ngrok-ssh/ngrok /ngrok
!chmod +x /ngrok
安裝完成後,就能使用 ngrok 指令輸入 token。
!/ngrok authtoken <token>
使用 pip 安裝 flask_ngrok 函式庫。
!pip install flask_ngrok
輸入下方的程式碼,除了使用 Flask 建立網頁服務,也使用 run_with_ngrok 將網頁服務與 ngrok 串接。
參考:Flask 函式庫
from flask import Flask
from flask_ngrok import run_with_ngrok
app = Flask(__name__)
run_with_ngrok(app)
@app.route("/<name>")
def home(name):
return f"<h1>hello {name}</h1>"
app.run()
程式碼執行後,如果出現 ngrok 的網址,就表示已經串接成功,因為 ngrok 支援 https,可自行將 http 改為 https。
串接成功後,就能透過瀏覽器,開啟 ngrok 網址,串連 Colab 所建立的網頁服務。
對於開發者來說,ngrok 是一個相當方便的服務,可以快速測試程式是否正常運作,最後,使用 ngrok 時仍有下列幾點事項需要注意:
大家好,我是 OXXO,是個即將邁入中年的斜槓青年,我有個超過一千篇教學的 STEAM 教育學習網,有興趣可以參考下方連結呦~ ^_^