App Engine 彈性環境中的 Python 的快速入門導覽課程

本快速入門導覽課程將說明如何建立一個可顯示簡短訊息的小型 App Engine 應用程式。

事前準備

在執行和部署這個範例之前,請先採取下列步驟:

  1. 使用 Google 主控台建立新的 GCP 專案、建立 App Engine 應用程式,及啟用計費功能:
    前往 App Engine

    系統提示時,選取您想為 App Engine 應用程式設定的地區,然後啟用計費功能。

  2. 在本機安裝下列必要項目:
    1. 下載並安裝 git
    2. 設定 Python 開發環境
    3. 下載並安裝 Cloud SDK。按照「Cloud SDK」頁面中的操作說明,在 gcloud 指令列工具中初始化及設定 GCP 專案 ID:
      下載 SDK
  3. 您也可以使用 Google Cloud Shell,此管理機器內含 git,且已安裝 Cloud SDK,另也具備許多其他功能,例如語言支援和程式碼編輯器。

    啟動 Google Cloud Shell 後,您可以繼續依本教學課程操作,在 Cloud Shell 中執行指令。

App Engine 位置

App Engine 具有「地區性」,這表示執行應用程式的基礎架構位於特定地區且由 Google 代管,可為該地區內的所有區域提供備援功能。

選取應用程式的執行地區時,主要應考慮該地區是否符合您的延遲時間、可用性和耐用性需求。一般來說,您可以選取距離應用程式使用者最近的地區,但也請考量應用程式使用的其他 GCP 產品和服務所在的位置。使用多個不同地區的服務,可能會影響應用程式的延遲時間和定價

下列地區可使用 App Engine:

  • northamerica-northeast1 (蒙特婁)
  • us-central (愛荷華州)
  • us-west2 (洛杉磯)
  • us-east1 (南卡羅來納州)
  • us-east4 (北維吉尼亞州)
  • southamerica-east1 (聖保羅) *
  • europe-west (比利時)
  • europe-west2 (倫敦)
  • europe-west3 (法蘭克福)
  • asia-northeast1 (東京)
  • asia-south1 (孟買)
  • australia-southeast1 (雪梨)

* 選取聖保羅地區的客戶請注意,所有地區性產品的服務水準協議仍具有效力,不過跨越北美洲和南美洲國家的多地區和跨地區功能,可能會出現可用性或效能暫時降低的問題。

應用程式的地區一經設定即無法變更。

如果您已建立 App Engine 應用程式,可執行 gcloud app describe 指令或開啟 GCP 主控台的 App Engine 資訊主頁查看地區。App Engine 應用程式的地區列於 http://[YOUR_PROJECT_ID].appspot.com

本快速入門導覽課程將說明如何執行以 Flask 網路架構撰寫的簡易 Python 應用程式 (可部署到 App Engine)。雖然本範例使用 Flask,但您也可利用其他符合上述需求的網路架構。其他的架構有:DjangoPyramidBottleweb.py

下載 Hello World 應用程式

我們為 Python 建立了一個簡單的 Hello World 應用程式,可以讓您快速瞭解將應用程式部署到 App Engine 彈性環境的程序。請按照以下指令列的步驟,下載 Hello World 到本機電腦。

下載範例應用程式並前往應用程式目錄:

  1. 將 Hello World 範例應用程式存放區複製到本機電腦:

    git clone https://github.com/GoogleCloudPlatform/python-docs-samples
    

    您也可以下載 zip 格式的範例,然後解壓縮。

  2. 變更為包含程式碼範例的目錄:

    cd python-docs-samples/appengine/flexible/hello_world
    

在本機電腦上執行 Hello World

在本機電腦上執行 Hello World 應用程式:

Mac OS/Linux

  1. 在專案外部的目錄中建立獨立的 Python 環境並啟用。
    virtualenv env
    source env/bin/activate
  2. 前往專案目錄並安裝依附元件:
    cd YOUR_PROJECT
    pip install  -r requirements.txt
  3. 執行應用程式:
    python main.py
  4. 在網路瀏覽器中,輸入下列網址:
    http://localhost:8080

Windows

如已安裝 Cloud SDK,那麼您的電腦上也會有 Python 2.7,該程式語言通常位於 C:\python27_x64\ (64 位元系統)。使用 Powershell 執行 Python 套件。

  1. 找到已安裝的 Powershell
  2. 以滑鼠右鍵按一下 Powershell 的捷徑,然後以系統管理員身分啟動 Powershell。
  3. 嘗試執行 python 指令。如果找不到該指令,請將 [Python] 資料夾新增至您環境的 PATH
    $env:Path += ";C:\python27_x64\"
  4. 在專案外部的目錄中建立獨立的 Python 環境並啟用。
    python -m virtualenv env
    env\Scripts\activate
  5. 前往專案目錄並安裝依附元件:
    cd YOUR_PROJECT
    python -m pip install -r requirements.txt
  6. 執行應用程式:
    python main.py
  7. 在網路瀏覽器中,輸入下列網址:
    http://localhost:8080

頁面上隨即顯示範例應用程式的 Hello World 訊息。

在終端機視窗中,按下 Ctrl+C 關閉網路伺服器。

在 App Engine 上部署及執行 Hello World

如果要將應用程式部署到 App Engine 彈性環境:

  1. 請在 hello_world 目錄中執行下列指令,來部署 Hello World 應用程式:
    gcloud app deploy
    瞭解選用標記

    常見的 gcloud 指令標記

    • 加上 --version 標記可指定識別您應用程式版本的唯一 ID;如未加入,系統將自動產生。範例:--version [YOUR_VERSION_ID]
    • 加上 --project 標記可指定替代的 GCP 專案 ID,而不使用您在 gcloud 工具中初始化為預設值的 ID。範例:--project [YOUR_PROJECT_ID]

    範例:

    gcloud app deploy --version pre-prod-5 --project my-sample-app

    如要進一步瞭解如何透過指令列部署應用程式,請參閱 測試及部署您的應用程式 。如需所有指令標記的清單,請參閱 gcloud app deploy 參考資料。

  2. 請執行下列指令,啟動瀏覽器,並在 http://YOUR_PROJECT_ID.appspot.com 中檢視應用程式:
    gcloud app browse
現在由 App Engine 執行個體上執行的網路伺服器,提供顯示 Hello World 訊息的頁面。

恭喜! 您已完成首次將 Python 應用程式部署至 App Engine 彈性環境的操作了!

請參閱下列各節,瞭解清除作業的資訊,並取得相關後續步驟的連結。

清除

為了避免產生費用,您可以刪除 GCP 專案,這樣系統就會停止針對該專案中使用的所有資源計費。

  1. 前往 GCP 主控台的「Projects」(專案) 頁面。

    前往專案頁面

  2. 在專案清單中選取要刪除的專案,然後按一下 [Delete] (刪除)
  3. 在對話方塊中輸入專案 ID,按一下 [Shut down] (關閉) 即可刪除專案。

後續步驟

瞭解整個平台

現在您已瞭解如何開發及部署 App Engine 應用程式,接著可進一步瞭解 Google Cloud Platform 的其他部分。由於您已安裝 Google Cloud SDK,那麼您的電腦上便有能與 Google Cloud SQL、Google Cloud Storage、Google Cloud Datastore 等產品互動的工具。

針對如何建立能使用整個平台,而非只使用 App Engine 的應用程式,我們提供了逐步操作指南,請參考建立 Bookshelf 應用程式的快速入門導覽課程。

瞭解 App Engine 彈性環境

以下是可以協助您進一步瞭解 App Engine 的幾個主題:

Hello World 程式碼審查

Hello World 可能是最簡單的 App Engine 應用程式,僅提供一種服務且只有一個版本,而且所有的程式碼都位於應用程式的根目錄。本節將提供每個應用程式檔案的詳細說明。

main.py

Hello World 是一個相當基本的單一檔案 Flask 應用程式。

import logging

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    """Return a friendly HTTP greeting."""
    return 'Hello World!'

@app.errorhandler(500)
def server_error(e):
    logging.exception('An error occurred during a request.')
    return """
    An internal error occurred: <pre>{}</pre>
    See logs for full stacktrace.
    """.format(e), 500

if __name__ == '__main__':
    # This is used when running locally. Gunicorn is used to run the
    # application on Google App Engine. See entrypoint in app.yaml.
    app.run(host='127.0.0.1', port=8080, debug=True)

app.yaml

app.yaml 檔案說明應用程式的部署設定:

runtime: python
env: flex
entrypoint: gunicorn -b :$PORT main:app

runtime_config:
  python_version: 3

# This sample incurs costs to run on the App Engine flexible environment.
# The settings below are to reduce costs during testing and are not appropriate
# for production use. For more information, see:
# https://cloud.google.com/appengine/docs/flexible/python/configuring-your-app-with-app-yaml
manual_scaling:
  instances: 1
resources:
  cpu: 1
  memory_gb: 0.5
  disk_size_gb: 10

app.yaml 檔案在此指定應用程式使用的執行階段,並設定 env: flex 以指定應用程式使用彈性環境

entrypoint 告知 App Engine 如何啟動應用程式。此應用程式使用 gunicorn 來提供 Python 應用程式。App Engine 啟動應用程式時會設定 $PORT 變數。如要進一步瞭解 entrypoint,請參閱啟動應用程式

此外,選用的 runtime_config 區段會設定 python_version 以使用 Python 3。如未指定 python_version,根據預設將使用 Python 2。您也可以明確指定 python_version: 2

requirements.txt

requirements.txt 和 Python 套件管理員 pip 將用於宣告和安裝應用程式依附元件。Hello World 需要 Flask 網路架構,以及 WSGI 伺服器 Gunicorn

Flask==0.12.2
gunicorn==19.7.1

requirements.txt 用於定義資料庫;該資料庫將安裝於本機,也會在部署至 App Engine 時一併安裝。

本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁
App Engine flexible environment for Python docs