【GCP+python flask】部署python Flask相關程式到GCP時遇到的大小事

Posted by sysherry on Tuesday, November 21, 2023

這篇是安裝過程遇到的問題記錄,若想知道詳細教學可以參考 10 大神[GCP 教學-Python] #1 部署第一個 Python Flask API 程式這系列的教學文章~

1.在透過 SSH 進入虛擬主機的 cmd 後,先進行更新。

sudo apt-get update
sudo apt-get upgrade

2.接著安裝 python3 環境

sudo apt-get install python3 -y
sudo apt-get install build-essential libssl-dev libffi-dev python3-dev

3.再來安裝 pip

需要先進行前面更新,不然會出現 python3-pip has no installation candidate

sudo apt-get install python3-pip

4.nano 建立測試用有 flask 套件的 index.py,並注意其位置

from flask import Flask
app=Flask(__name__)
@app.route('/')
def hello():
    return 'hello !'
if __name__ == '__main__':
    app.run(host='0.0.0.0',port=80)

5.安裝 flask 並執行

因為一開始測試環境開了 80 port 的關係,所以程式必須在管理者權限下進行pip install flask。若沒加管理者權限 sudo,則安裝位置會跑到 user 的 site-package,接下來 sudo python index.py 會顯示 ImportError: No module named flask

sudo pip install flask
sudo python index.py

若有加 sudo,前面的步驟都有做對但還是顯示 No module named flask,可以看一下目前運行的 python 版本是 python2 還是 python3,不同 python 版本套件安裝的位置不一樣

# 使用 python3 版本執行的方法
# 在cmd中執行
ls /usr/bin/python*
nano ~/.bashrc

# 將這段內容貼到 .bashrc
alias python='/usr/bin/python3.6'
alias pip='pip3'

# 在cmd中執行
source ~/.bashrc
sudo python3 index.py

正常來說經過上面步驟,就可以透過 GCP 的外部 IP 成功看到自己的測試頁面,並進一步安裝需要的 requirements.txt,或安裝 Gunicorn 讓程式可以在背景執行等。

6.若遇到程式有在執行,但無法透過外部 IP 登入測試頁面,類似 stackoverflow 這個情形

Can’t access Google Cloud Compute engine external IP to access flask app

可以從幾個地方試試:

  • 將 Https 的網址改成 Http
  • 先用 80 port,然後網址後面要加上 :80