1. Tổng quan
Các ứng dụng Google App Engine rất dễ tạo, dễ bảo trì và dễ mở rộng quy mô khi nhu cầu lưu lượng truy cập và lưu trữ dữ liệu của bạn thay đổi. Với App Engine, không có máy chủ nào để duy trì. Bạn chỉ cần tải ứng dụng của mình lên và ứng dụng đã sẵn sàng hoạt động.
Trong lớp học lập trình này, bạn sẽ tìm hiểu cách triển khai một ứng dụng web Python đơn giản được viết bằng khung web Flask. Mặc dù mẫu này sử dụng Flask, nhưng bạn có thể sử dụng các khung web khác, bao gồm Django, Pyramid, Bottle và web.py.
Hướng dẫn này được điều chỉnh từ https://cloud.google.com/appengine/docs/standard/python3/quickstart
Kiến thức bạn sẽ học được
- Cách tạo một máy chủ Python đơn giản trên Google App Engine.
- Cách cập nhật mã mà không cần gỡ máy chủ.
Bạn cần có
- Quen thuộc với Python
- Quen thuộc với các trình chỉnh sửa văn bản tiêu chuẩn của Linux như vim, emacs hoặc nano
Khảo sát
Bạn sẽ sử dụng hướng dẫn này như thế nào?
Bạn đánh giá thế nào về trải nghiệm sử dụng Python?
Bạn đánh giá thế nào về trải nghiệm khi sử dụng các dịch vụ của Google Cloud?
2. Thiết lập và yêu cầu
Thiết lập môi trường theo tiến độ riêng
- Đăng nhập vào Google Cloud Console rồi tạo dự án mới hoặc sử dụng lại dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.
- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật ứng dụng.
- Mã dự án là duy nhất trong tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường bạn không quan tâm đến sản phẩm đó là gì. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham khảo Mã dự án của mình (thường được xác định là
PROJECT_ID
). Nếu không thích mã đã tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Ngoài ra, bạn có thể thử cách riêng của mình để xem có thể sử dụng hay không. Bạn không thể thay đổi mã này sau bước này và mã vẫn giữ nguyên trong thời gian dự án. - Đối với thông tin của bạn, có giá trị thứ ba, Project Number (Số dự án), mà một số API sử dụng. Tìm hiểu thêm về cả ba giá trị này trong tài liệu này.
- Tiếp theo, bạn sẽ phải bật tính năng thanh toán trong Cloud Console để sử dụng API/tài nguyên trên đám mây. Việc chạy qua lớp học lập trình này sẽ không tốn nhiều chi phí. Để tắt các tài nguyên nhằm tránh phát sinh việc thanh toán ngoài hướng dẫn này, bạn có thể xoá các tài nguyên bạn đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí 300 USD.
Khởi động Cloud Shell
Mặc dù bạn có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Cloud Shell, một môi trường dòng lệnh chạy trong Đám mây.
Kích hoạt Cloud Shell
- Trong Cloud Console, hãy nhấp vào Kích hoạt Cloud Shell .
Nếu đây là lần đầu tiên khởi động Cloud Shell, bạn sẽ thấy một màn hình trung gian mô tả về Cloud Shell. Nếu bạn nhìn thấy màn hình trung gian, hãy nhấp vào Tiếp tục.
Quá trình cấp phép và kết nối với Cloud Shell chỉ mất vài phút.
Máy ảo này được tải tất cả các công cụ phát triển cần thiết. Dịch vụ này cung cấp thư mục gốc có dung lượng ổn định 5 GB và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất và khả năng xác thực của mạng. Nhiều (nếu không nói là) tất cả công việc của bạn trong lớp học lập trình này đều có thể thực hiện bằng trình duyệt.
Sau khi kết nối với Cloud Shell, bạn sẽ thấy mình đã được xác thực và dự án được đặt thành mã dự án.
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng bạn đã được xác thực:
gcloud auth list
Kết quả lệnh
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- Chạy lệnh sau trong Cloud Shell để xác nhận rằng lệnh gcloud biết về dự án của bạn:
gcloud config list project
Kết quả lệnh
[core] project = <PROJECT_ID>
Nếu chưa, bạn có thể thiết lập chế độ này bằng lệnh sau:
gcloud config set project <PROJECT_ID>
Kết quả lệnh
Updated property [core/project].
3. Viết ứng dụng web
Sau khi Cloud Shell chạy, bạn có thể sử dụng dòng lệnh để gọi lệnh Cloud SDK gcloud
hoặc các công cụ khác có trên phiên bản máy ảo. Bạn có thể sử dụng thư mục $HOME
trong bộ nhớ ổ đĩa lưu trữ dài lâu để lưu trữ tệp trong nhiều dự án và giữa các phiên Cloud Shell. Chỉ bạn mới có thể truy cập vào thư mục $HOME
và những người dùng khác không thể truy cập được.
Hãy bắt đầu bằng cách tạo một thư mục mới trong thư mục $HOME
cho ứng dụng:
mkdir ~/helloworld cd ~/helloworld
Tạo một tệp có tên main.py
:
touch main.py
Chỉnh sửa tệp bằng trình chỉnh sửa dòng lệnh mà bạn muốn (nano, vim hoặc emacs) hoặc bằng cách nhấp vào nút Trình chỉnh sửa Cloud Shell:
Để chỉnh sửa trực tiếp tệp bằng Cloud Shell Editor, hãy dùng lệnh sau:
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. Xác định phần phụ thuộc
Để chỉ định các phần phụ thuộc của ứng dụng web, hãy quay lại cửa sổ dòng lệnh rồi tạo tệp requirements.txt
trong thư mục gốc của dự án, chứa đúng phiên bản Flask mà bạn muốn sử dụng:
touch requirements.txt
Để chỉnh sửa tệp bằng Cloud Shell Editor, hãy dùng lệnh sau:
cloudshell edit requirements.txt
requirements.txt
# https://pypi.org/project/Flask
Flask==3.0.2
5. Định cấu hình quá trình triển khai
Để triển khai ứng dụng web cho App Engine, bạn cần có tệp app.yaml
. Tệp cấu hình này xác định chế độ cài đặt ứng dụng web của bạn cho App Engine.
Trên cửa sổ dòng lệnh, hãy tạo và chỉnh sửa tệp app.yaml
trong thư mục gốc của dự án:
touch app.yaml
Để chỉnh sửa tệp bằng Cloud Shell Editor, hãy dùng lệnh sau:
cloudshell edit app.yaml
app.yaml
runtime: python312
6. Triển khai ứng dụng web
Trên cửa sổ dòng lệnh, hãy kiểm tra nội dung trong thư mục của bạn:
ls
Bạn sẽ có 3 tệp sau:
app.yaml main.py requirements.txt
Triển khai ứng dụng web của bạn bằng lệnh sau:
gcloud app deploy
Ở lần đầu tiên, bạn cần chọn một khu vực triển khai:
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:
Xác nhận để bắt đầu triển khai:
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)?
Ứng dụng của bạn được triển khai:
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]
Ứng dụng web của bạn hiện đã sẵn sàng phản hồi các yêu cầu HTTP trên https://PROJECT_ID.REGION_ID.r.appspot.com
.
7. Kiểm thử ứng dụng web
Ứng dụng web của bạn đã sẵn sàng phản hồi các yêu cầu HTTP trên https://PROJECT_ID.REGION_ID.r.appspot.com
.
Trước tiên, hãy truy xuất tên máy chủ của ứng dụng web bằng lệnh gcloud app describe
:
APPENGINE_HOSTNAME=$(gcloud app describe --format "value(defaultHostname)")
Kiểm thử ứng dụng web của bạn bằng yêu cầu HTTP GET đơn giản sau:
curl https://$APPENGINE_HOSTNAME
Bạn sẽ nhận được câu trả lời sau:
Hello World!
Tóm tắt
Ở các bước trước, bạn đã thiết lập một ứng dụng web Python đơn giản, chạy và triển khai ứng dụng đó trên App Engine.
8. Cập nhật ứng dụng web
Sửa đổi ứng dụng web bằng cách thay đổi nội dung hàm hello()
trong tệp main.py
.
Để chỉnh sửa tệp bằng Cloud Shell Editor, hãy dùng lệnh sau:
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)
Trên cửa sổ dòng lệnh, hãy triển khai lại để cập nhật ứng dụng web:
gcloud app deploy --quiet
Phiên bản mới của ứng dụng đã được triển khai:
Beginning deployment of service [default]... Uploading 1 file to Google Cloud Storage ... Deployed service [default] to [https://PROJECT_ID.REGION_ID.r.appspot.com]
Kiểm thử phiên bản mới của ứng dụng web, giống hệt như bạn đã làm trước đây:
curl https://$APPENGINE_HOSTNAME
Bạn sẽ nhận được câu trả lời tương tự:
Hello World!
Hãy kiểm thử bằng tham số không bắt buộc:
curl https://$APPENGINE_HOSTNAME?who=Universe
Bạn sẽ nhận được câu trả lời sau:
Hello Universe!
Tóm tắt
Ở bước này, bạn đã cập nhật và triển khai lại ứng dụng web của mình mà không bị gián đoạn dịch vụ.
9. Xin chúc mừng!
Bạn đã học cách viết ứng dụng web App Engine đầu tiên bằng Python!
Tìm hiểu thêm
- Tài liệu về App Engine: https://cloud.google.com/appengine
- Hãy khám phá hướng dẫn này để viết một ứng dụng Python hoàn chỉnh trên App Engine: https://cloud.google.com/appengine/docs/standard/python3/building-app
Giấy phép
Tác phẩm này được cấp phép theo Giấy phép chung Ghi nhận tác giả Creative Commons 2.0.