אפליקציות Django שפועלות ב-App Engine flexible משנות את קנה המידה באופן דינמי בהתאם לתנועת הגולשים.
במדריך הזה אנחנו יוצאים מנקודת הנחה שאתם מכירים את פיתוח האינטרנט ב-Django. אם אתם חדשים בפיתוח Django, מומלץ לעבור על כתיבת אפליקציית Django הראשונה לפני שתמשיכו.
במדריך הזה נדגים את Django באופן ספציפי, אבל אפשר להשתמש בתהליך הפריסה הזה עם מסגרות אחרות שמבוססות על Django, כמו Wagtail ו-Django CMS.
במדריך הזה נעשה שימוש ב-Django 6, שמחייב לפחות Python 3.12. מומלץ מאוד להשתמש בגרסה האחרונה בסדרה הזו. הסביבה הגמישה של App Engine תומכת עד Python 3.14.
מטרות
במדריך הזה תלמדו:
- יצירה וחיבור של מסד נתונים ב-Cloud SQL.
- יצירה ושימוש בערכי סודות ב-Secret Manager.
פריסת אפליקציית Django בסביבה גמישה ב-App Engine.
אירוח קבצים סטטיים ב-Cloud Storage.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של Google Cloud, והשימוש בהם כרוך בתשלום:
כדי ליצור הערכת עלויות בהתאם לשימוש החזוי, אתם יכולים להשתמש במחשבון התמחור.
לפני שמתחילים
- נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
-
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API, Secret Manager, and Cloud Build APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init -
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
-
Verify that billing is enabled for your Google Cloud project.
Enable the Cloud SQL Admin API, Secret Manager, and Cloud Build APIs, if any are not already enabled.
Roles required to enable APIs
To enable APIs, you need the
serviceusage.services.enablepermission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init - אם עדיין לא עשיתם את זה, מאתחלים את App Engine ובוחרים את האזור המועדף:
gcloud app create
הכנת הסביבה
שכפול של אפליקציה לדוגמה
הקוד של אפליקציית Django לדוגמה נמצא במאגר GoogleCloudPlatform/python-docs-samples ב-GitHub.
אפשר להוריד את הדוגמה כקובץ ZIP ולחלץ אותה, או לשכפל את המאגר למכונה המקומית:
git clone https://github.com/GoogleCloudPlatform/python-docs-samples.gitעוברים לספרייה שמכילה את הקוד לדוגמה:
Linux/macOS
cd python-docs-samples/appengine/flexible/django_cloudsqlWindows
cd python-docs-samples\appengine\flexible\django_cloudsql
אישור ההגדרה של Python
המדריך הזה מסתמך על Python להרצת אפליקציית הדוגמה במחשב. כדי להשתמש בקוד לדוגמה, צריך גם להתקין יחסי תלות
פרטים נוספים מופיעים במדריך לסביבת פיתוח בשפת Python.
מוודאים שגרסת Python היא 3.14 לפחות.
python -Vצריך לראות גרסה
Python 3.14.0ומעלה.יוצרים סביבה וירטואלית של Python ומתקינים יחסי תלות:
Linux/macOS
python -m venv venv source venv/bin/activate pip install --upgrade pip pip install -r requirements.txtWindows
python -m venv venv venv\scripts\activate pip install --upgrade pip pip install -r requirements.txt
הורדת Cloud SQL Auth Proxy כדי להתחבר ל-Cloud SQL מהמחשב המקומי
בזמן הפריסה, האפליקציה משתמשת בשרת proxy ל-Cloud SQL Auth שמוטמע בסביבה הגמישה ב-App Engine כדי לתקשר עם מכונת Cloud SQL. עם זאת, כדי לבדוק את האפליקציה באופן מקומי, אתם צריכים להתקין ולהשתמש בעותק מקומי של ה-proxy בסביבת הפיתוח. פרטים נוספים זמינים במדריך לשרת proxy ל-Cloud SQL Auth.
שרת proxy ל-Cloud SQL Auth משתמש ב-Cloud SQL API כדי ליצור אינטראקציה עם מכונת SQL. כדי לעשות את זה, נדרש אימות של האפליקציה באמצעות ה-CLI של gcloud.
מאמתים ומקבלים פרטי כניסה ל-API:
gcloud auth application-default loginמורידים ומתקינים את שרת ה-proxy ל-Cloud SQL Auth במחשב המקומי.
לפני שמתחילים, צריך לקבוע את הארכיטקטורה של המכונה.
אם מריצים ב-Linux או ב-Mac, אפשר למצוא את זה על ידי הרצת הפקודה הבאה:
uname -a
Linux 64 סיביות
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.amd64
- הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
Linux 32 סיביות
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.linux.386
- אם הפקודה
curlלא נמצאה, מריצים את הפקודהsudo apt install curlוחוזרים על פקודת ההורדה. - הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
macOS 64 סיביות
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.darwin.amd64
- הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
Mac M1
- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
curl -o cloud-sql-proxy https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.darwin.arm64
- הופכים את שרת ה-proxy ל-Cloud SQL Auth לקובץ הפעלה:
chmod +x cloud-sql-proxy
Windows 64 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x64.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.Windows 32 סיביות
לוחצים לחיצה ימנית על https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.26.0/cloud-sql-proxy.x86.exe ובוחרים באפשרות שמירת קישור בשם כדי להוריד את שרת ה-proxy ל-Cloud SQL Auth. משנים את שם הקובץ ל-cloud-sql-proxy.exe.קובץ אימג' של Docker לשרת proxy ל-Cloud SQL Auth
לשרת ה-proxy ל-Cloud SQL Auth יש תמונות קונטיינר שונות, כמו
distroless,alpineו-buster. קובץ האימג' של קונטיינר ברירת המחדל של Cloud SQL Auth Proxy משתמש ב-distroless, שלא מכיל מעטפת. אם אתם צריכים מעטפת או כלים קשורים, אתם יכולים להוריד תמונה שמבוססת עלalpineאו עלbuster. מידע נוסף זמין במאמר תמונות קונטיינר של Cloud SQL Auth Proxy.אפשר למשוך את התמונה העדכנית ביותר למחשב המקומי באמצעות Docker באמצעות הפקודה הבאה:
docker pull gcr.io/cloud-sql-connectors/cloud-sql-proxy:2.26.0
מערכת הפעלה אחרת
במערכות הפעלה אחרות שלא נכללות כאן, אפשר לקמפל את שרת ה-proxy ל-Cloud SQL Auth ממקור.אתם יכולים להעביר את ההורדה למיקום נפוץ, כמו מיקום ב-
PATHאו בספריית הבית. אם תבחרו לעשות זאת, כשתפעילו את שרת ה-proxy ל-Cloud SQL Auth בהמשך המדריך, הקפידו לציין את המיקום שבחרתם כשמשתמשים בפקודותcloud-sql-proxy.- מורידים את שרת ה-proxy ל-Cloud SQL Auth:
יצירת שירותים תומכים
במדריך הזה נעשה שימוש בכמה שירותים Google Cloud כדי לספק את מסד הנתונים, את אחסון המדיה ואת אחסון הסודות שתומכים בפרויקט Django שנפרס. השירותים האלה נפרסים באזור ספציפי. כדי לשפר את היעילות בין השירותים, מומלץ לפרוס את כל השירותים באותו אזור. מידע נוסף על האזור הקרוב ביותר אליכם זמין במאמר מוצרים שזמינים לפי אזור.
הגדרת מכונת Cloud SQL ל-PostgreSQL
Django תומך רשמית במספר מסדי נתונים רלציוניים, אבל התמיכה הכי טובה היא ב-PostgreSQL. Cloud SQL תומך ב-PostgreSQL, ולכן במדריך הזה נבחר להשתמש בסוג הזה של מסד נתונים.
בקטע הבא מתואר תהליך היצירה של מכונת PostgreSQL, מסד נתונים ומשתמש במסד הנתונים עבור האפליקציה.
יוצרים את מכונת PostgreSQL:
המסוף
נכנסים לדף Cloud SQL Instances במסוף Google Cloud .
לוחצים על Create Instance.
לוחצים על Choose PostgreSQL (בחירת PostgreSQL).
בקטע SQL Edition, בוחרים באפשרות Enterprise.
בקטע הגדרה קבועה מראש של מהדורה, בוחרים באפשרות 'ארגז חול'.
בשדה Instance ID (מזהה המופע), מזינים את הערך
INSTANCE_NAME.מזינים סיסמה למשתמש postgres.
משאירים את ערכי ברירת המחדל בשאר השדות.
לוחצים על Create Instance.
יחלפו כמה דקות עד שהמכונה תהיה מוכנה לשימוש.
gcloud
יוצרים את מכונת PostgreSQL:
gcloud sql instances create INSTANCE_NAME \ --project PROJECT_ID \ --database-version POSTGRES_16 \ --tier db-n1-standard-2 \ --region REGION
מחליפים את מה שכתוב בשדות הבאים:
-
INSTANCE_NAME: שם המכונה של Cloud SQL -
PROJECT_ID: מזהה הפרויקט Google Cloud -
REGION: Google Cloud האזור
יחלפו כמה דקות עד שהמכונה תיווצר ותהיה מוכנה לשימוש.
בתוך המכונה שנוצרה, יוצרים מסד נתונים:
המסוף
- בדף של המופע, עוברים לכרטיסייה Databases (מסדי נתונים).
- לוחצים על יצירת מסד נתונים.
- בתיבת הדו-שיח Database Name, מזינים
DATABASE_NAME. - לוחצים על יצירה.
gcloud
יוצרים את מסד הנתונים במופע שנוצר לאחרונה:
gcloud sql databases create DATABASE_NAME \ --instance INSTANCE_NAMEמחליפים את
DATABASE_NAMEבשם של מסד הנתונים בתוך המכונה.
יוצרים משתמש במסד הנתונים:
המסוף
- בדף של המופע, עוברים לכרטיסייה משתמשים.
- לוחצים על הוספת חשבון משתמש.
- בתיבת הדו-שיח בחירת שיטה לאימות בקטע 'אימות מובנה':
- מזינים את שם המשתמש
DATABASE_USERNAME. - מזינים את הסיסמה
DATABASE_PASSWORD - לוחצים על הוספה.
gcloud
יוצרים את המשתמש במכונה שנוצרה לאחרונה:
gcloud sql users create DATABASE_USERNAME \ --instance INSTANCE_NAME \ --password DATABASE_PASSWORDמחליפים את
PASSWORDבסיסמה מאובטחת.
הגדרת קטגוריה של Cloud Storage
אתם יכולים לאחסן ב-Cloud Storage נכסים סטטיים שכלולים ב-Django, וגם מדיה שהמשתמשים העלו, במאגר אובייקטים עם זמינות גבוהה.
חבילת django-storages[google] מטפלת באינטראקציה של Django עם קצה העורף של האחסון הזה.
המסוף
פותחים את הדף Cloud Storage במסוף Google Cloud .
לוחצים על Create Bucket.
מזינים את הפרטים הבאים (לוחצים על 'המשך' כשצריך):
- בשדה שם, מזינים 'PROJECT_ID_MEDIA_BUCKET'.
- בשדה אזור, בוחרים באפשרות REGION.
- בקטע Storage Class, משאירים את הגדרות ברירת המחדל.
- בקטע Prevent public access, מסירים את הסימון מהתיבה 'Enforce public access prevention'.
- בקטע Access Control, בוחרים באפשרות Fine-grained.
משאירים את ערכי ברירת המחדל בשאר השדות.
לוחצים על יצירה.
gcloud
יוצרים קטגוריה של Cloud Storage:
gcloud storage buckets create gs://PROJECT_ID_MEDIA_BUCKET --location=REGIONמחליפים את
MEDIA_BUCKETבסיומת של קטגוריית המדיה. השם הזה, בשילוב עם מזהה הפרויקט, יוצר שם ייחודי לקטגוריה.
אחסון ערכים סודיים ב-Secret Manager
אחרי שמגדירים את שירותי הגיבוי, צריך לספק ל-Django מידע על השירותים האלה. במקום להזין את הערכים האלה ישירות בקוד המקור של Django, במדריך הזה נעשה שימוש ב-Secret Manager כדי לאחסן את המידע הזה בצורה מאובטחת.
יצירת קובץ סביבת Django כסוד ב-Secret Manager
אתם מאחסנים את ההגדרות שנדרשות להפעלת Django בקובץ env מאובטח.
אפליקציית הדוגמה משתמשת ב-Secret Manager API כדי לאחזר את ערך הסוד, ובחבילה django-environ כדי לטעון את הערכים לסביבת Django. הסוד מוגדר כך שניתן לגשת אליו באמצעות סביבה גמישה ב-App Engine.
יוצרים קובץ בשם
.env, מגדירים את מחרוזת החיבור למסד הנתונים, את שם קטגוריית המדיה ואת הערך החדש שלSECRET_KEY:echo DATABASE_URL=postgres://DATABASE_USERNAME:DATABASE_PASSWORD@//cloudsql/PROJECT_ID:REGION:INSTANCE_NAME/DATABASE_NAME > .env echo GS_BUCKET_NAME=PROJECT_ID_MEDIA_BUCKET >> .env echo SECRET_KEY=$(cat /dev/urandom | LC_ALL=C tr -dc '[:alpha:]'| fold -w 50 | head -n1) >> .envמאחסנים את הסוד ב-Secret Manager:
המסוף
נכנסים לדף Secret Manager במסוף Google Cloud .
לוחצים על יצירת סוד.
בשדה שם מזינים
django_settings.בתיבת הדו-שיח Secret value, מדביקים את התוכן של קובץ
.env.לוחצים על יצירת סוד.
כדי למנוע ביטול של הגדרות מקומיות, צריך למחוק את הקובץ המקומי.
gcloud
יוצרים סוד חדש,
django_settings, עם הערך של הקובץ.env:gcloud secrets create django_settings --data-file .envכדי למנוע ביטול של הגדרות מקומיות, צריך למחוק את הקובץ המקומי:
rm .env
הגדרת הגישה לסוד:
המסוף
- לוחצים על הכרטיסייה Permissions.
- לוחצים על הענקת גישה.
- בשדה New Members (חברים חדשים), מזינים
PROJECT_ID@appspot.gserviceaccount.comולוחצים עלEnter. - בתפריט הנפתח Role, בוחרים באפשרות Secret Manager Secret Accessor.
- לוחצים על Save.
gcloud
נותנים גישה לסוד לחשבון השירות הגמיש של App Engine:
gcloud secrets add-iam-policy-binding django_settings \ --member serviceAccount:PROJECT_ID@appspot.gserviceaccount.com \ --role roles/secretmanager.secretAccessorבפלט, מוודאים שחשבון השירות החדש מופיע ברשימה
bindings.
הפעלת האפליקציה במחשב המקומי
אחרי שמגדירים את שירותי הגיבוי, אפשר להריץ את האפליקציה במחשב. ההגדרה הזו מאפשרת פיתוח מקומי, יצירת משתמש על והחלת העברות של מסד נתונים.
במסוף נפרד, מפעילים את שרת ה-proxy ל-Cloud SQL Auth:
Linux/macOS
./cloud-sql-proxy PROJECT_ID:REGION:INSTANCE_NAMEWindows
cloud-sql-proxy.exe PROJECT_ID:REGION:INSTANCE_NAMEבשלב הזה נוצר חיבור מהמחשב המקומי למכונת Cloud SQL לצורכי בדיקה מקומית. חשוב להשאיר את Cloud SQL Auth Proxy פועל לאורך כל הבדיקה של האפליקציה באופן מקומי. הפעלת התהליך הזה בטרמינל נפרד מאפשרת לכם להמשיך לעבוד בזמן שהתהליך הזה פועל.
בטרמינל המקורי, מגדירים את מזהה הפרויקט באופן מקומי (משמש את Secret Manager API):
Linux/macOS
export GOOGLE_CLOUD_PROJECT=PROJECT_IDWindows
set GOOGLE_CLOUD_PROJECT=PROJECT_IDמגדירים משתנה סביבה כדי לציין שמשתמשים בשרת proxy ל-Cloud SQL Auth (הערך הזה מזוהה בקוד):
Linux/macOS
export USE_CLOUD_SQL_AUTH_PROXY=trueWindows
set USE_CLOUD_SQL_AUTH_PROXY=trueמריצים את ההעברות של Django כדי להגדיר את המודלים והנכסים:
python manage.py makemigrations python manage.py makemigrations polls python manage.py migrate python manage.py collectstaticמפעילים את שרת האינטרנט של Django:
python manage.py runserver 8080בדפדפן, עוברים אל http://localhost:8080.
אם אתם ב-Cloud Shell, לוחצים על הלחצן Web Preview (תצוגה מקדימה של אתר) ובוחרים באפשרות Preview on port 8080 (תצוגה מקדימה ביציאה 8080).
בדף מוצג הטקסט: Hello, world. אתה נמצא באינדקס של הסקרים". שרת האינטרנט של Django שפועל במחשב שלכם מספק את הדפים של אפליקציית הדוגמה.
לוחצים על
Ctrl/Cmd+Cכדי לעצור את שרת האינטרנט המקומי.
שימוש במסוף Admin של Django
כדי להתחבר למסוף Admin של Django, צריך ליצור משתמש על. מכיוון שיש לכם חיבור למסד הנתונים שאפשר לגשת אליו באופן מקומי, אתם יכולים להריץ פקודות ניהול:
יוצרים משתמש על. תוצג בקשה להזין שם משתמש, כתובת אימייל וסיסמה.
python manage.py createsuperuserמפעילים שרת אינטרנט מקומי:
python manage.py runserverבדפדפן, עוברים לכתובת http://localhost:8000/admin.
מתחברים לאתר הניהול באמצעות שם המשתמש והסיסמה שבהם השתמשתם כשביצעתם את הפקודה
createsuperuser.
פריסת האפליקציה בסביבה גמישה ב-App Engine
אחרי שמגדירים את כל שירותי התמיכה ובודקים את האפליקציה באופן מקומי, אפשר לפרוס את האפליקציה ב-App Engine flexible:
- פותחים את
app.yamlומעדכנים את הערך שלcloud_sql_instancesבמחרוזת של מכונת Cloud SQL:... beta_settings: cloud_sql_instances: PROJECT_ID:REGION:INSTANCE_NAME - מעלים את האפליקציה על ידי הרצת הפקודה הבאה, שפורסת את האפליקציה כמו שמתואר במאמר
app.yamlומגדירה את הגרסה החדשה שנפרסה כגרסת ברירת המחדל, כך שהיא תציג את כל התנועה החדשה:gcloud app deploy - כשמוצגת בקשה, מקלידים yes כדי לאשר את ההגדרות.
- מחכים להודעה שהעדכון הסתיים.
הפעלת האפליקציה שנפרסה
האפליקציה נפרסה ועכשיו אפשר לגשת אליה:
פותחים את האתר שנפרס:
gcloud app browseאפשרות אחרת היא להציג את כתובת ה-URL ולפתוח אותה באופן ידני:
gcloud app describe --format "value(defaultHostname)"
הבקשה שלכם מטופלת על ידי שרת אינטרנט שפועל בסביבה גמישה ב-App Engine.
עדכון האפליקציה
כדי לעדכן את האפליקציה, מבצעים שינויים בקוד ומריצים שוב את הפקודה gcloud app deploy.
הפריסה יוצרת גרסה חדשה של האפליקציה ומקדמת אותה לגרסת ברירת המחדל. הגרסאות הקודמות של האפליקציה נשארות, וכך גם המכונות הווירטואליות (VM) שמשויכות אליהן. כל הגרסאות של האפליקציה והמכונות הווירטואליות האלה הן משאבים שחלים עליהם חיובים. כדי להפחית את העלויות, מוחקים את הגרסאות של האפליקציה שלא מוגדרות כברירת מחדל.
הגדרה לסביבת הייצור
עכשיו יש לכם פריסת Django פעילה, אבל יש עוד פעולות שאתם יכולים לבצע כדי לוודא שהאפליקציה שלכם מוכנה לייצור.
השבתת ניפוי הבאגים
מוודאים שהמשתנה DEBUG ב-mysite/settings.py מוגדר ל-False. ההגדרה הזו תמנע הצגה של דפי שגיאה מפורטים למשתמש, כי הם עלולים לחשוף מידע על ההגדרות.
הגבלת ההרשאות של משתמש מסד הנתונים
לכל המשתמשים שנוצרים באמצעות Cloud SQL יש את ההרשאות שמשויכות לתפקיד cloudsqlsuperuser: CREATEROLE, CREATEDB ו-LOGIN.
כדי למנוע ממשתמש מסד הנתונים של Django את ההרשאות האלה, צריך ליצור את המשתמש ב-PostgreSQL באופן ידני. צריך להתקין את הטרמינל האינטראקטיבי psql או להשתמש ב-Cloud Shell שבו הכלי הזה מותקן מראש.
המסוף
-
במסוף Google Cloud , מפעילים את Cloud Shell.
ב-Cloud Shell, משתמשים בטרמינל המובנה כדי להתחבר למכונת
INSTANCE_NAME:gcloud sql connect INSTANCE_NAME --user postgresמזינים את הסיסמה של משתמש postgres.
המודל שלך כרגע הוא
psql. אמורה להופיע ההנחיהpostgres=>.יצירת משתמש:
CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';מחליפים את
PASSWORDבסיסמה ייחודית ואקראית.נותנים למשתמש החדש הרשאות מלאות במסד הנתונים החדש:
GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;יציאה מ-
psql:\q
gcloud
מתחילים חיבור למכונת SQL:
gcloud sql connect INSTANCE_NAME --user postgresמחליפים את
INSTANCE_NAMEבמכונה של Cloud SQL שנוצרה.מזינים את הסיסמה של משתמש postgres.
המודל שלך כרגע הוא
psql. אמורה להופיע ההנחיהpostgres=>.יצירת משתמש:
CREATE USER DATABASE_USERNAME WITH PASSWORD 'DATABASE_PASSWORD';נותנים למשתמש החדש הרשאות מלאות במסד הנתונים החדש:
GRANT ALL PRIVILEGES ON DATABASE DATABASE_NAME TO DATABASE_USERNAME;יציאה מ-
psql:\q
הסבר על הקוד
אפליקציה לדוגמה
אפליקציית הדוגמה של Django נוצרה באמצעות כלי Django רגילים. הפקודות הבאות יוצרות את הפרויקט ואת אפליקציית הסקרים:
django-admin startproject mysite
python manage.py startapp polls
התצוגות, המודלים והגדרות הניתוב הבסיסיים הועתקו מתוך כתיבת האפליקציה הראשונה ב-Django (חלק 1 וחלק 2).
סודות מ-Secret Manager
הקובץ settings.py מכיל קוד שמשתמש ב-Secret Manager API בשפת Python כדי לאחזר את הגרסה העדכנית של הסוד שצוין, ולשלוף אותו לסביבה (באמצעות django-environ):
הסוד משמש לאחסון של כמה ערכי סוד כדי לצמצם את מספר הסודות השונים שצריך להגדיר.
שינויים מקומיים מברירת המחדל של סודות
אם נמצא קובץ .env במערכת הקבצים המקומית, הוא ישמש במקום הערך מ-Secret Manager. יצירת קובץ .env באופן מקומי יכולה לעזור בבדיקות מקומיות (למשל, פיתוח מקומי מול מסד נתונים של SQLite או הגדרות מקומיות אחרות).
חיבור למסד נתונים
הקובץ settings.py מכיל את ההגדרות של מסד הנתונים של SQL. הוא משתמש בעזר env.db() מ-django-environ כדי לטעון את מחרוזת החיבור שהוגדרה ב-DATABASE_URL להגדרה DATABASES.
כשמריצים את האפליקציה באופן מקומי ומשתמשים בשרת proxy ל-Cloud SQL Auth כדי לגשת למסד הנתונים המתארח, הדגל USE_CLOUD_SQL_AUTH_PROXY משנה את הגדרות מסד הנתונים כך שישתמשו בשרת ה-proxy.
תוכן סטטי שמאוחסן בענן
קובץ settings.py משתמש גם ב-django-storages כדי לשלב את קטגוריית המדיה של Cloud Storage ישירות בפרויקט:
App Engine app.yaml
הקובץ app.yaml
מכיל פרטי הגדרות לפריסה בסביבה הגמישה:
הסרת המשאבים
כדי להימנע מחיובים בחשבון Google Cloud בגלל השימוש במשאבים שנעשה במסגרת המדריך הזה, אפשר למחוק את הפרויקט שמכיל את המשאבים או להשאיר את הפרויקט ולמחוק את המשאבים בנפרד.
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.