অ্যাপ ইঞ্জিন (পাইথন 3) দিয়ে শুরু করা

১. সংক্ষিপ্ত বিবরণ

befa7a877ccdd35d.png

গুগল অ্যাপ ইঞ্জিন অ্যাপ্লিকেশন তৈরি করা সহজ, রক্ষণাবেক্ষণ করা সহজ এবং আপনার ট্র্যাফিক ও ডেটা স্টোরেজের চাহিদা পরিবর্তনের সাথে সাথে এর পরিধিও বাড়ানো সহজ। অ্যাপ ইঞ্জিনের সাথে কোনো সার্ভার রক্ষণাবেক্ষণের প্রয়োজন নেই। আপনি শুধু আপনার অ্যাপ্লিকেশনটি আপলোড করবেন এবং এটি ব্যবহারের জন্য প্রস্তুত হয়ে যাবে।

এই কোডল্যাবে, আপনি ফ্লাস্ক ওয়েব ফ্রেমওয়ার্ক দিয়ে লেখা একটি সাধারণ পাইথন ওয়েব অ্যাপ কীভাবে ডেপ্লয় করতে হয় তা শিখবেন। যদিও এই স্যাম্পলটিতে ফ্লাস্ক ব্যবহার করা হয়েছে, আপনি জ্যাঙ্গো , পিরামিড , বটল এবং web.py সহ অন্যান্য ওয়েব ফ্রেমওয়ার্কও ব্যবহার করতে পারেন।

এই টিউটোরিয়ালটি https://cloud.google.com/appengine/docs/standard/python3/quickstart থেকে নেওয়া হয়েছে।

আপনি যা শিখবেন

  • গুগল অ্যাপ ইঞ্জিনে কীভাবে একটি সহজ পাইথন সার্ভার তৈরি করবেন।
  • সার্ভার ডাউন না করে কীভাবে কোড আপডেট করবেন।

আপনার যা যা লাগবে

  • পাইথন ব্যবহারে পরিচিতি
  • vim, emacs, বা nano-এর মতো স্ট্যান্ডার্ড লিনাক্স টেক্সট এডিটরগুলির সাথে পরিচিতি

জরিপ

আপনি এই টিউটোরিয়ালটি কীভাবে ব্যবহার করবেন?

শুধু পুরোটা পড়ুন এটি পড়ুন এবং অনুশীলনগুলো সম্পূর্ণ করুন।

পাইথন নিয়ে আপনার অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

গুগল ক্লাউড পরিষেবা ব্যবহারের অভিজ্ঞতাকে আপনি কীভাবে মূল্যায়ন করবেন?

শিক্ষানবিশ মধ্যবর্তী দক্ষ

২. সেটআপ এবং প্রয়োজনীয়তা

স্ব-গতিতে পরিবেশ সেটআপ

  1. Google Cloud Console- এ সাইন-ইন করুন এবং একটি নতুন প্রজেক্ট তৈরি করুন অথবা বিদ্যমান কোনো প্রজেক্ট পুনরায় ব্যবহার করুন। যদি আপনার আগে থেকে Gmail বা Google Workspace অ্যাকাউন্ট না থাকে, তবে আপনাকে অবশ্যই একটি তৈরি করতে হবে।

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • প্রজেক্টের নামটি হলো এই প্রজেক্টের অংশগ্রহণকারীদের প্রদর্শিত নাম। এটি একটি ক্যারেক্টার স্ট্রিং যা গুগল এপিআই ব্যবহার করে না। আপনি যেকোনো সময় এটি আপডেট করতে পারেন।
  • প্রজেক্ট আইডি সমস্ত গুগল ক্লাউড প্রজেক্ট জুড়ে অনন্য এবং অপরিবর্তনীয় (একবার সেট করার পর এটি পরিবর্তন করা যায় না)। ক্লাউড কনসোল স্বয়ংক্রিয়ভাবে একটি অনন্য স্ট্রিং তৈরি করে; সাধারণত এটি কী তা নিয়ে আপনার মাথা ঘামানোর দরকার নেই। বেশিরভাগ কোডল্যাবে, আপনাকে আপনার প্রজেক্ট আইডি উল্লেখ করতে হবে (যা সাধারণত PROJECT_ID হিসাবে চিহ্নিত করা হয়)। তৈরি করা আইডিটি আপনার পছন্দ না হলে, আপনি এলোমেলোভাবে আরেকটি তৈরি করতে পারেন। বিকল্পভাবে, আপনি আপনার নিজের আইডি দিয়ে চেষ্টা করে দেখতে পারেন যে সেটি উপলব্ধ আছে কিনা। এই ধাপের পরে এটি পরিবর্তন করা যাবে না এবং প্রজেক্টের পুরো সময়কাল জুড়ে এটি অপরিবর্তিত থাকবে।
  • আপনার অবগতির জন্য জানাচ্ছি যে, তৃতীয় একটি ভ্যালু রয়েছে, যা হলো প্রজেক্ট নম্বর , এবং কিছু এপিআই এটি ব্যবহার করে থাকে। ডকুমেন্টেশনে এই তিনটি ভ্যালু সম্পর্কে আরও বিস্তারিত জানুন।
  1. এরপর, ক্লাউড রিসোর্স/এপিআই ব্যবহার করার জন্য আপনাকে ক্লাউড কনসোলে বিলিং চালু করতে হবে। এই কোডল্যাবটি সম্পন্ন করতে খুব বেশি খরচ হবে না, এমনকি আদৌ কোনো খরচ নাও হতে পারে। এই টিউটোরিয়ালের পর বিলিং এড়াতে রিসোর্সগুলো বন্ধ করার জন্য, আপনি আপনার তৈরি করা রিসোর্সগুলো অথবা প্রজেক্টটি ডিলিট করে দিতে পারেন। নতুন গুগল ক্লাউড ব্যবহারকারীরা ৩০০ মার্কিন ডলারের ফ্রি ট্রায়াল প্রোগ্রামের জন্য যোগ্য।

ক্লাউড শেল শুরু করুন

যদিও গুগল ক্লাউড আপনার ল্যাপটপ থেকে দূরবর্তীভাবে পরিচালনা করা যায়, এই কোডল্যাবে আপনি ক্লাউড শেল ব্যবহার করবেন, যা ক্লাউডে চালিত একটি কমান্ড লাইন পরিবেশ।

ক্লাউড শেল সক্রিয় করুন

  1. ক্লাউড কনসোল থেকে, Activate Cloud Shell-এ ক্লিক করুন। 853e55310c205094.png .

3c1dabeca90e44e5.png

আপনি যদি প্রথমবারের মতো ক্লাউড শেল চালু করেন, তাহলে এটি কী তা বর্ণনা করে একটি মধ্যবর্তী স্ক্রিন আপনার সামনে আসবে। যদি একটি মধ্যবর্তী স্ক্রিন আসে, তাহলে 'চালিয়ে যান' (Continue) এ ক্লিক করুন।

9c92662c6a846a5c.png

ক্লাউড শেল প্রস্তুত করতে এবং এর সাথে সংযোগ স্থাপন করতে মাত্র কয়েক মুহূর্ত সময় লাগা উচিত।

9f0e51b578fecce5.png

এই ভার্চুয়াল মেশিনটিতে প্রয়োজনীয় সমস্ত ডেভেলপমেন্ট টুলস লোড করা আছে। এটি একটি স্থায়ী ৫ জিবি হোম ডিরেক্টরি প্রদান করে এবং গুগল ক্লাউডে চলে, যা নেটওয়ার্ক পারফরম্যান্স ও অথেনটিকেশনকে ব্যাপকভাবে উন্নত করে। এই কোডল্যাবে আপনার প্রায় সমস্ত কাজই একটি ব্রাউজার দিয়ে করা সম্ভব।

ক্লাউড শেলে সংযুক্ত হওয়ার পর, আপনি দেখতে পাবেন যে আপনাকে প্রমাণীকৃত করা হয়েছে এবং প্রজেক্টটি আপনার প্রজেক্ট আইডিতে সেট করা আছে।

  1. আপনি প্রমাণীকৃত কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud auth list

কমান্ড আউটপুট

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

To set the active account, run:
    $ gcloud config set account `ACCOUNT`
  1. gcloud কমান্ডটি আপনার প্রজেক্ট সম্পর্কে জানে কিনা তা নিশ্চিত করতে ক্লাউড শেলে নিম্নলিখিত কমান্ডটি চালান:
gcloud config list project

কমান্ড আউটপুট

[core]
project = <PROJECT_ID>

যদি তা না থাকে, তবে আপনি এই কমান্ডটি দিয়ে এটি সেট করতে পারেন:

gcloud config set project <PROJECT_ID>

কমান্ড আউটপুট

Updated property [core/project].

৩. ওয়েব অ্যাপটি লিখুন

ক্লাউড শেল চালু হওয়ার পর, আপনি কমান্ড লাইন ব্যবহার করে ক্লাউড এসডিকে-এর gcloud কমান্ড অথবা ভার্চুয়াল মেশিন ইনস্ট্যান্সে উপলব্ধ অন্যান্য টুল চালু করতে পারেন। আপনি বিভিন্ন প্রোজেক্ট এবং ক্লাউড শেল সেশনের মধ্যে ফাইল সংরক্ষণের জন্য পারসিস্টেন্ট ডিস্ক স্টোরেজে আপনার $HOME ডিরেক্টরি ব্যবহার করতে পারেন। আপনার $HOME ডিরেক্টরিটি শুধুমাত্র আপনার জন্য ব্যক্তিগত এবং অন্য ব্যবহারকারীরা এটি অ্যাক্সেস করতে পারে না।

অ্যাপ্লিকেশনটির জন্য আপনার $HOME ডিরেক্টরিতে একটি নতুন ফোল্ডার তৈরি করে শুরু করা যাক:

mkdir ~/helloworld
cd ~/helloworld

main.py নামে একটি ফাইল তৈরি করুন:

touch main.py

আপনার পছন্দের কমান্ড লাইন এডিটর (ন্যানো, ভিম বা ইম্যাক্স) দিয়ে অথবা ক্লাউড শেল এডিটর বোতামে ক্লিক করে ফাইলটি সম্পাদনা করুন:

10af7b1a6240e9f4.gif

ক্লাউড শেল এডিটর দিয়ে সরাসরি ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

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)

৪. নির্ভরতাগুলো সংজ্ঞায়িত করুন

আপনার ওয়েব অ্যাপের নির্ভরতাগুলো নির্দিষ্ট করতে, টার্মিনালে ফিরে যান এবং আপনার প্রজেক্টের রুট ডিরেক্টরিতে requirements.txt নামে একটি ফাইল তৈরি করুন, যেখানে ব্যবহার করার জন্য Flask-এর সঠিক সংস্করণটি উল্লেখ করবেন:

touch requirements.txt

ক্লাউড শেল এডিটর দিয়ে ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

cloudshell edit requirements.txt

requirements.txt

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

৫. ডেপ্লয়মেন্ট কনফিগার করুন

আপনার ওয়েব অ্যাপ অ্যাপ ইঞ্জিনে ডেপ্লয় করতে একটি app.yaml ফাইল প্রয়োজন। এই কনফিগারেশন ফাইলটি অ্যাপ ইঞ্জিনের জন্য আপনার ওয়েব অ্যাপের সেটিংস নির্ধারণ করে।

টার্মিনাল থেকে, আপনার প্রোজেক্টের রুট ডিরেক্টরিতে app.yaml ফাইলটি তৈরি ও সম্পাদনা করুন:

touch app.yaml

ক্লাউড শেল এডিটর দিয়ে ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

cloudshell edit app.yaml

app.yaml

runtime: python312

৬. ওয়েব অ্যাপটি স্থাপন করুন

টার্মিনাল থেকে আপনার ডিরেক্টরির বিষয়বস্তু পরীক্ষা করুন:

ls

আপনার কাছে নিম্নলিখিত ৩টি ফাইল থাকা উচিত:

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]

আপনার ওয়েব অ্যাপটি এখন https://PROJECT_ID.REGION_ID.r.appspot.com -এ HTTP অনুরোধগুলির প্রতিক্রিয়া জানাতে প্রস্তুত।

৭. ওয়েব অ্যাপটি পরীক্ষা করুন

আপনার ওয়েব অ্যাপটি https://PROJECT_ID.REGION_ID.r.appspot.com -এ HTTP অনুরোধগুলির প্রতিক্রিয়া জানাতে প্রস্তুত।

প্রথমে, gcloud app describe কমান্ড ব্যবহার করে আপনার ওয়েব অ্যাপের হোস্টনেমটি সংগ্রহ করুন:

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

এই সহজ HTTP GET অনুরোধটি দিয়ে আপনার ওয়েব অ্যাপটি পরীক্ষা করুন:

curl https://$APPENGINE_HOSTNAME

আপনার নিম্নলিখিত উত্তরটি পাওয়া উচিত:

Hello World!

সারসংক্ষেপ

পূর্ববর্তী ধাপগুলোতে, আপনি একটি সাধারণ পাইথন ওয়েব অ্যাপ সেট আপ করেছেন, অ্যাপ্লিকেশনটি রান করেছেন এবং অ্যাপ ইঞ্জিনে ডিপ্লয় করেছেন।

৮. ওয়েব অ্যাপটি আপডেট করুন

আপনার main.py ফাইলের hello() ফাংশনের বডি পরিবর্তন করে আপনার ওয়েব অ্যাপটি পরিমার্জন করুন।

ক্লাউড শেল এডিটর দিয়ে ফাইলটি সম্পাদনা করতে, এই কমান্ডটি ব্যবহার করুন:

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!

সারসংক্ষেপ

এই ধাপে, আপনি কোনো পরিষেবা বিঘ্ন ছাড়াই আপনার ওয়েব অ্যাপটি আপডেট এবং পুনরায় স্থাপন করেছেন।

৯. অভিনন্দন!

আপনি পাইথনে আপনার প্রথম অ্যাপ ইঞ্জিন ওয়েব অ্যাপ্লিকেশন লিখতে শিখেছেন!

আরও জানুন

লাইসেন্স

এই কাজটি ক্রিয়েটিভ কমন্স অ্যাট্রিবিউশন ২.০ জেনেরিক লাইসেন্সের অধীনে রয়েছে।