شروع کار با App Engine (Python 3)

1. بررسی اجمالی

befa7a877ccdd35d.png

برنامه‌های Google App Engine به راحتی ایجاد می‌شوند، نگهداری آن‌ها آسان است و با توجه به تغییر نیازهای ترافیک و ذخیره‌سازی داده‌های شما، مقیاس‌بندی آن آسان است. با App Engine، هیچ سروری برای نگهداری وجود ندارد. شما به سادگی برنامه خود را آپلود می کنید و آماده است.

در این کد لبه، نحوه استقرار یک برنامه وب ساده پایتون که با چارچوب وب Flask نوشته شده است را یاد خواهید گرفت. اگرچه این نمونه از Flask استفاده می‌کند، اما می‌توانید از چارچوب‌های وب دیگر، از جمله جنگو ، پیرامید ، بطری و web.py استفاده کنید.

این آموزش از https://cloud.google.com/appengine/docs/standard/python3/quickstart اقتباس شده است

چیزی که یاد خواهید گرفت

  • نحوه ایجاد یک سرور ساده پایتون در Google App Engine.
  • نحوه به روز رسانی کد بدون حذف سرور

آنچه شما نیاز دارید

  • آشنایی با استفاده از پایتون
  • آشنایی با ویرایشگرهای متن استاندارد لینوکس مانند vim، emacs یا nano

نظرسنجی

چگونه از این آموزش استفاده خواهید کرد؟

فقط از طریق آن را بخوانید آن را بخوانید و تمرینات را کامل کنید

تجربه خود را با پایتون چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

تجربه خود را با خدمات Google Cloud چگونه ارزیابی می کنید؟

تازه کار متوسط مسلط

2. راه اندازی و الزامات

تنظیم محیط خود به خود

  1. به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
  • شناسه پروژه در تمام پروژه‌های Google Cloud منحصربه‌فرد است و تغییرناپذیر است (پس از تنظیم نمی‌توان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام PROJECT_ID شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، می‌توانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند.
  • برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
  1. در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورت‌حساب فراتر از این آموزش، می‌توانید منابعی را که ایجاد کرده‌اید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.

Cloud Shell را راه اندازی کنید

در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.

Cloud Shell را فعال کنید

  1. از Cloud Console، روی Activate Cloud Shell کلیک کنید 853e55310c205094.png .

3c1dabeca90e44e5.png

اگر این اولین باری است که Cloud Shell را راه اندازی می کنید، با یک صفحه میانی روبرو می شوید که آن را توصیف می کند. اگر با یک صفحه میانی مواجه شدید، روی Continue کلیک کنید.

9c92662c6a846a5c.png

تهیه و اتصال به Cloud Shell فقط باید چند لحظه طول بکشد.

9f0e51b578fecce5.png

این ماشین مجازی با تمام ابزارهای توسعه مورد نیاز بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی ارائه می‌کند و در Google Cloud اجرا می‌شود، که عملکرد و احراز هویت شبکه را بسیار افزایش می‌دهد. بسیاری از کارهای شما، اگر نه همه، در این کد لبه با مرورگر قابل انجام است.

پس از اتصال به Cloud Shell، باید ببینید که احراز هویت شده اید و پروژه به ID پروژه شما تنظیم شده است.

  1. برای تایید احراز هویت، دستور زیر را در Cloud Shell اجرا کنید:
gcloud auth list

خروجی فرمان

 Credentialed Accounts
ACTIVE  ACCOUNT
*       <my_account>@<my_domain.com>

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. دستور زیر را در Cloud Shell اجرا کنید تا تأیید کنید که دستور gcloud از پروژه شما اطلاع دارد:
gcloud config list project

خروجی فرمان

[core]
project = <PROJECT_ID>

اگر اینطور نیست، می توانید آن را با این دستور تنظیم کنید:

gcloud config set project <PROJECT_ID>

خروجی فرمان

Updated property [core/project].

3. برنامه وب را بنویسید

پس از راه اندازی Cloud Shell، می توانید از خط فرمان برای فراخوانی دستور Cloud SDK gcloud یا سایر ابزارهای موجود در نمونه ماشین مجازی استفاده کنید. می‌توانید از دایرکتوری $HOME خود در فضای ذخیره‌سازی دیسک دائمی برای ذخیره فایل‌ها در پروژه‌ها و بین جلسات Cloud Shell استفاده کنید. دایرکتوری $HOME شما برای شما خصوصی است و سایر کاربران نمی توانند به آن دسترسی داشته باشند.

بیایید با ایجاد یک پوشه جدید در پوشه $HOME خود برای برنامه شروع کنیم:

mkdir ~/helloworld
cd ~/helloworld

فایلی به نام main.py ایجاد کنید:

touch main.py

فایل را با ویرایشگر خط فرمان دلخواه خود (nano، vim، یا emacs) یا با کلیک کردن روی دکمه Cloud Shell Editor ویرایش کنید:

10af7b1a6240e9f4.gif

برای ویرایش مستقیم فایل با Cloud Shell Editor از این دستور استفاده کنید:

cloudshell edit main.py

main.py

import flask

# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)


@app.get("/")
def hello():
    """Return a friendly HTTP greeting."""
    return "Hello World!\n"


if __name__ == "__main__":
    # Used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app. This
    # can be configured by adding an `entrypoint` to app.yaml.
    app.run(host="localhost", port=8080, debug=True)

4. وابستگی ها را تعریف کنید

برای مشخص کردن وابستگی های برنامه وب خود، به ترمینال برگردید و یک فایل requirements.txt در دایرکتوری ریشه پروژه خود ایجاد کنید، با نسخه دقیق Flask برای استفاده:

touch requirements.txt

برای ویرایش فایل با Cloud Shell Editor از این دستور استفاده کنید:

cloudshell edit requirements.txt

الزامات. txt

# https://pypi.org/project/Flask
Flask==3.0.2

5. استقرار را پیکربندی کنید

برای استقرار برنامه وب خود در App Engine، به یک فایل app.yaml نیاز دارید. این فایل پیکربندی تنظیمات برنامه وب شما را برای App Engine تعریف می کند.

از ترمینال، فایل app.yaml را در فهرست اصلی پروژه خود ایجاد و ویرایش کنید:

touch app.yaml

برای ویرایش فایل با Cloud Shell Editor از این دستور استفاده کنید:

cloudshell edit app.yaml

app.yaml

runtime: python312

6. برنامه وب را مستقر کنید

از ترمینال، محتوای دایرکتوری خود را بررسی کنید:

ls

شما باید 3 فایل زیر را داشته باشید:

app.yaml  main.py  requirements.txt

برنامه وب خود را با دستور زیر اجرا کنید:

gcloud app deploy

اولین بار، باید یک منطقه استقرار را انتخاب کنید:

Please choose the region where you want your App Engine application
located:

 [1] asia-east2
...
 [7] australia-southeast1
 [8] europe-west
 [9] europe-west2
...
 [12] northamerica-northeast1
 [13] southamerica-east1
...
 [19] us-west4
...
Please enter your numeric choice:

تأیید راه اندازی استقرار:

Creating App Engine application in project [PROJECT_ID] and region [REGION]....done.
Services to deploy:

descriptor:      [~/helloworld/app.yaml]
source:          [~/helloworld]
target project:  [PROJECT_ID]
target service:  [default]
target version:  [YYYYMMDDtHHMMSS]
target url:      [https://PROJECT_ID.REGION_ID.r.appspot.com]

Do you want to continue (Y/n)?

برنامه شما مستقر می شود:

Beginning deployment of service [default]...
Created .gcloudignore file. See `gcloud topic gcloudignore` for details.
Uploading 3 files to Google Cloud Storage
100%
File upload done.
Updating service [default]...done.     
Setting traffic split for service [default]...done.
Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]

برنامه وب شما اکنون آماده است تا به درخواست های HTTP در https://PROJECT_ID.REGION_ID.r.appspot.com پاسخ دهد.

7. برنامه وب را تست کنید

برنامه وب شما آماده است تا به درخواست های HTTP در https://PROJECT_ID.REGION_ID.r.appspot.com پاسخ دهد.

ابتدا، نام میزبان برنامه وب خود را با دستور gcloud app describe بازیابی کنید:

APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")

برنامه وب خود را با این درخواست ساده HTTP GET آزمایش کنید:

curl https://$APPENGINE_HOSTNAME

شما باید پاسخ زیر را دریافت کنید:

Hello World!

خلاصه

در مراحل قبلی، یک برنامه وب ساده پایتون را راه اندازی کردید، آن را اجرا کردید و آن را در App Engine مستقر کردید.

8. برنامه وب را به روز کنید

برنامه وب خود را با تغییر بدنه تابع hello() در فایل main.py خود تغییر دهید.

برای ویرایش فایل با Cloud Shell Editor از این دستور استفاده کنید:

cloudshell edit main.py

main.py

import flask

# If `entrypoint` is not defined in app.yaml, App Engine will look for an app
# called `app` in `main.py`.
app = flask.Flask(__name__)


@app.get("/")
def hello():
    """Return a friendly HTTP greeting."""
    # return "Hello World!\n"  # ← Replace this line
    who = flask.request.args.get("who", "World")
    return f"Hello {who}!\n"


if __name__ == "__main__":
    # Used when running locally only. When deploying to Google App
    # Engine, a webserver process such as Gunicorn will serve the app. This
    # can be configured by adding an `entrypoint` to app.yaml.
    app.run(host="localhost", port=8080, debug=True)

از ترمینال، برای به‌روزرسانی برنامه وب خود، مجدداً مستقر شوید:

gcloud app deploy --quiet

نسخه جدید برنامه شما مستقر می شود:

Beginning deployment of service [default]...
Uploading 1 file to Google Cloud Storage 
...
Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]

نسخه جدید برنامه وب خود را دقیقاً همانطور که قبلاً انجام دادید آزمایش کنید:

curl https://$APPENGINE_HOSTNAME

شما باید همان پاسخ را دریافت کنید:

Hello World!

آن را با پارامتر اختیاری تست کنید:

curl https://$APPENGINE_HOSTNAME?who=Universe

شما باید پاسخ زیر را دریافت کنید:

Hello Universe!

خلاصه

در این مرحله، برنامه وب خود را بدون هیچ وقفه ای در سرویس به روز کرده و مجدداً مستقر کردید.

9. تبریک می گویم!

شما یاد گرفتید که اولین برنامه وب App Engine خود را در پایتون بنویسید!

بیشتر بدانید

مجوز

این اثر تحت مجوز Creative Commons Attribution 2.0 Generic مجوز دارد.