Flask 是一個基於 Python 的輕量級 Web 框架,它基於一系列第三方依賴包實現業務邏輯,使得 Flask 使用更爲靈活,並可通過一系列擴展定製或擴展其能力,其中最主要的兩個核心模塊是 WSGI 工具集 Werkzeug 和渲染模板框架 Jinja。Flask 輕量、靈活的特點使得它廣受開發人員歡迎,用於快速實現一個網站或 Web 服務的搭建。
本篇教程將爲您指導,如何通過 SCF Web Function
,快速部署您的 Flask 業務上雲。
01. 模板部署 - 無需改動業務代碼,一鍵部署
-
登錄 Serverless 控制檯,單擊左側導航欄的「函數服務」,在主界面上方選擇期望創建函數的地域,並單擊「新建」,進入函數創建流程。
-
選擇使用**「模版創建」來新建函數,在搜索框裏輸入 「WebFunc」,篩選所有 Web 函數模版,選擇「Flash 框架模版」**,點擊 「下一步」,如下圖所示:
-
在「配置」頁面,您可以查看模版項目的具體配置信息並進行修改;
-
單擊「完成」,即可創建函數。函數創建完成後,可在「函數管理」頁面,查看 Web 函數的基本信息,並通過 API 網關生成的訪問路徑 URL 進行訪問,查看您部署的 Flash 項目。
02. 自定義部署 - 3 步快速遷移本地項目上雲
1. 本地開發
- 首先,需要確認您本地的環境內已經安裝好 Flask
pip install Flask
- 本地創建
Hello World
示例項目,在項目目錄下,新建app.py
項目,實現最簡單的 Hello World 應用,示例代碼如下:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello World'
if __name__ == '__main__':
app.run()
- 本地運行 app.py 文件,在瀏覽器裏訪問
http://127.0.0.1:5000
,即可在本地完成 Flash 示例項目的訪問:
$ python3 app.py
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: Do not use the development server in a production environment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
127.0.0.1 - - [22/Jun/2021 09:41:04] "GET / HTTP/1.1" 200 -
2. 部署上雲
接下來,我們對本地已經創建完成的項目進行簡單修改,使其可以通過 Web Function 快速部署,對於 Flask,具體改造步驟如下:
1. 安裝依賴包
由於 SCF 雲上標準環境內沒有 Flask 依賴庫,此處您必須將依賴文件安裝完成後,與項目代碼一起打包上傳,首先新建requirements.txt
文件:
#requirements.txt
Flask==1.0.2
werkzeug==0.16.0
接下來執行安裝:
pip install -r requirements.txt
2. 修改監聽地址與端口
在 Web 函數內,限制了監聽端口必須爲 9000,因此需要對監聽地址端口進行修改,改爲 0.0.0.0:9000
您也可以在
scf_bootstrap
中,通過環境變量配置監聽端口
3. 新增 scf_bootstrap
啓動文件
在項目根目錄下新建 scf_bootstrap
啓動文件,在裏面完成環境變量配置,指定服務啓動命令等自定義操作,確保您的服務可以通過該文件正常啓動
#!/bin/bash
/var/lang/python3/bin/python3 app.py
創建完成後,注意修改您的可執行文件權限,默認需要 777
或 755
權限
chmod 777 scf_bootstrap
注意
- 在 SCF 環境內,只有
/tmp
文件可讀寫,建議輸出文件時選擇/tmp
,其它目錄會由於缺少權限而寫入失敗- 如果想要在日誌中輸出環境變量,啓動命令前需要加
-u
參數,示例:python -u app.py
4. 本地配置完成後,執行啓動文件
確保您的服務可以本地正常啓動,接下來,登錄騰訊云云函數控制檯,新建 Web 函數以部署您的 Flash 項目。
3.開發管理
部署完成後,即可在 SCF 控制檯快速訪問並測試您的 Web 服務,並且體驗雲函數多項特色功能如層綁定、日誌管理等,享受 Serverless 架構帶來的低成本、彈性擴縮容等優勢。
Web Function 使用體驗
-
Web Function 產品文檔:
-
Web Function 快速體驗鏈接:
https://console.cloud.tencent.com/scf/list-create?rid=16&ns=default&keyword=WebFunc
Web Function 當前已在「成都、北京、上海」地域發佈,其他地域將陸續開放,敬請期待!
One More Thing
立即體驗騰訊雲 Serverless Demo,領取 Serverless 新用戶禮包 👉 騰訊雲 Serverless 新手體驗
歡迎訪問:Serverless 中文網!