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

۱. مرور کلی

befa7a877ccdd35d.png

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

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

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

آنچه یاد خواهید گرفت

  • نحوه ایجاد یک سرور پایتون ساده در Google App Engine.
  • چگونه کد را بدون از دسترس خارج کردن سرور به‌روزرسانی کنیم؟

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

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

نظرسنجی

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

فقط تا انتها بخوانید آن را بخوانید و تمرین‌ها را انجام دهید

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

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

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

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

۲. تنظیمات و الزامات

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

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

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

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

شروع پوسته ابری

اگرچه می‌توان گوگل کلود را از راه دور و از طریق لپ‌تاپ شما مدیریت کرد، اما در این آزمایشگاه کد از Cloud Shell ، یک محیط خط فرمان که در فضای ابری اجرا می‌شود، استفاده خواهید کرد.

فعال کردن پوسته ابری

  1. از کنسول ابری، روی فعال کردن پوسته ابری کلیک کنید 853e55310c205094.png .

3c1dabeca90e44e5.png

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

9c92662c6a846a5c.png

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

9f0e51b578fecce5.png

این ماشین مجازی مجهز به تمام ابزارهای توسعه مورد نیاز است. این ماشین یک دایرکتوری خانگی پایدار ۵ گیگابایتی ارائه می‌دهد و در فضای ابری گوگل اجرا می‌شود که عملکرد شبکه و احراز هویت را تا حد زیادی افزایش می‌دهد. بخش عمده‌ای از کار شما در این آزمایشگاه کد، اگر نگوییم همه، را می‌توان با یک مرورگر انجام داد.

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

  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].

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

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

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

mkdir ~/helloworld
cd ~/helloworld

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

touch main.py

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

10af7b1a6240e9f4.gif

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

cloudshell edit main.py

فایل اصلی.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)

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

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

touch requirements.txt

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

cloudshell edit requirements.txt

الزامات.txt

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

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

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

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

touch app.yaml

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

cloudshell edit app.yaml

برنامه.yaml

runtime: python312

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

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

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 است.

۷. برنامه وب را آزمایش کنید

برنامه وب شما آماده پاسخگویی به درخواست‌های 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 مستقر کردید.

۸. برنامه وب را به‌روزرسانی کنید

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

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

cloudshell edit main.py

فایل اصلی.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!

خلاصه

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

۹. تبریک می‌گویم!

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

بیشتر بدانید

مجوز

این اثر تحت مجوز عمومی Creative Commons Attribution 2.0 منتشر شده است.