מזהה אזור
REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, המחרוזת REGION_ID.r כלולה בכתובות URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
איך יוצרים אפליקציה ב-App Engine באמצעות PHP גרסה 7.4 או 8.1 אפליקציית הדוגמה מאפשרת למשתמשים לפרסם דף אינטרנט עם הכותרים, המחברים, התיאורים, תאריך הפרסום והתמונות של הספרים המועדפים עליהם. האפליקציה מאחסנת את נתוני הטקסט במסד נתונים של Cloud SQL ואת התמונות בקטגוריה של Cloud Storage.
מבנה המדריך
לפני שמתחילים
-
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 Build API, if it is 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.-
Install the Google Cloud CLI.
-
Configure the gcloud CLI to use your federated identity.
For more information, see Sign in to the gcloud CLI with your federated identity.
-
To initialize the gcloud CLI, run the following command:
gcloud init - מתקינים את Composer, כלי לניהול יחסי תלות ב-PHP. צריך להתקין את Composer באופן גלובלי במערכות Linux ו-Mac OS X.
- בגלל שינויים בהתנהגות ברירת המחדל של Cloud Build בנוגע לשימוש בחשבונות שירות בפרויקטים חדשים, ושינויים במדיניות הארגון שמוגדרת כמאובטחת כברירת מחדל, יכול להיות שתצטרכו להקצות תפקידים נוספים לחשבון השירות שמשמש לפריסה. מידע נוסף על מתן תפקידים ספציפיים זמין במדריך לפתרון בעיות.
הורדת האפליקציה לדוגמה
עיון בקוד ב-GitHub
מורידים או משכפלים את האפליקציה.
git clone https://github.com/GoogleCloudPlatform/php-docs-samples.git
אפשר גם להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
מנווטים לספרייה
getting-started.cd php-docs-samples/appengine/standard/getting-started
ציון יחסי תלות באמצעות composer.json
האפליקציה משתמשת בבקר קדמי כדי לנתב בקשות. קוד הדוגמה במדריך הזה משתמש ב-Slim Framework, אבל אתם יכולים להשתמש בכל מסגרת אינטרנט שתבחרו.
פותחים את הקובץ
composer.jsonכדי לבדוק את כל התלויות הישירות:כדי להתקין את התלויות וליצור קובץ
composer.lock, מריצים את הפקודה הבאה:composer installקובץ
composer.lockעוזר לאפליקציה לאחזר את אותן גרסאות של החבילות שבהן אתם משתמשים בכמה גרסאות build ובכמה סביבות.
הפעלת האפליקציה והגדרת בקרי קצה חזיתי
קובץ index.php מאתחל את האפליקציה ומעביר את כל הבקשות לבקרים שמוגדרים בקובץ ./src/controllers.php.
מידע נוסף על טיפול בבקשות זמין במאמרים בנושא הפעלת אפליקציות וטיפול בבקשות.
שילוב עם שירותי Google Cloud
ב-App Engine, האפליקציות צריכות להשתלב עם מערכות חיצוניות לאחסון נתונים. אפליקציית הדוגמה מאחסנת נתונים טקסטואליים ב-Cloud SQL ותמונות ב-Cloud Storage.
בדף 'בחירת אפשרות אחסון' מפורטות כל Google Cloud אפשרויות האחסון.
שימוש ב-Cloud SQL
באפליקציה לדוגמה, משתמשים מפרסמים ספרים בדף אינטרנט. האפליקציה משתמשת במסד נתונים של Cloud SQL כדי לאחסן את השמות, המחברים, תאריך הפרסום והתיאורים של הספרים.
כדי להוסיף תוכן למסד הנתונים של האפליקציה, צריך ליצור מכונת מסד נתונים ב-Cloud SQL.
יצירת מכונה של Cloud SQL
משתמשים ב-CLI של gcloud כדי ליצור מכונה של Cloud SQL:
gcloud sql instances create INSTANCE_NAME --tier=MACHINE_TYPE --region=REGION
לדוגמה, אם רוצים לתת למכונה את השם bookshelf ולהשתמש בסוג המכונה db-n1-standard-2 באזור המרכזי של ארצות הברית:
gcloud sql instances create bookshelf --tier=db-n1-standard-2 --region=us-central1
הגדרת משתמש Root של MySQL
אתם יכולים להשתמש ב-CLI של gcloud כדי להגדיר את הסיסמה של משתמש הבסיס במופע Cloud SQL:
gcloud sql users set-password USER --host=HOST --instance=INSTANCE_NAME --password=PASSWORD
לדוגמה, אם רוצים להגדיר את הסיסמה של משתמש ה-root למופע Cloud SQL bookshelf ל-passw0rd!:
gcloud sql users set-password root --host=% --instance=bookshelf --password=passw0rd!
הגדרת מסד נתונים במכונה של Cloud SQL
כדי לאחסן את המחברים, השמות, תאריך הפרסום והתיאורים של הספרים, צריך ליצור מסד נתונים של MySQL:
gcloud sql databases create DATABASE_NAME --instance=INSTANCE_NAME
לדוגמה, אם רוצים ליצור מסד נתונים בשם book-data במכונה של Cloud SQL bookshelf:
gcloud sql databases create book-data --instance=bookshelf
חיבור למסד נתונים של Cloud SQL
אפליקציית הדוגמה משתמשת ב-PDO של PHP כדי ליצור אינטראקציה עם מסד הנתונים של MySQL.
במדריך הזה, הפרמטרים האלה מוגדרים כמשתני סביבה בקטע הגדרת האפליקציה.
שאילתה של שורה אחת
כשהמשתמש לוחץ על ספר, האפליקציה שולחת שאילתה למסד הנתונים ומחזירה שורה אחת שכוללת את שם הספר, המחבר, תאריך הפרסום והתיאור.
שימוש ב-Cloud Storage
אפליקציית הדוגמה משתמשת ב-Cloud Storage כדי לאחסן את התמונות, שהן קבצים בינאריים, שהמשתמשים מעלים.
יצירת קטגוריה של Cloud Storage
ב-Cloud Storage משתמשים בקטגוריות כדי לארגן את הנתונים ולשלוט בגישה אליהם.
משתמשים ב-CLI של gcloud כדי ליצור קטגוריה של Cloud Storage:
gcloud storage buckets create gs://BUCKET_NAME/ --location=BUCKET_REGION
לדוגמה, אם רוצים ליצור קטגוריה בשם picture-storage באזור us-central1:
gcloud storage buckets create gs://picture-storage/ --location=us-central1
אם הפעולה בוצעה ללא שגיאות, הפלט ייראה כך:
Creating gs://BUCKET_NAME/
אם הפעולה לא תצליח, יכול להיות שיוצג הפלט הבא:
ServiceException: 409 Bucket BUCKET_NAME already exists
אתם צריכים לנסות שוב עם שם קטגוריה אחר.
קישור פרויקט לקטגוריה של Cloud Storage
כדי להשתמש ב-Cloud Storage, צריך לציין את ספריית Cloud Storage.
אחסון תמונות
אחרי שיצרתם קטגוריה של Cloud Storage והגדרתם חיבור, תוכלו לאחסן תמונות. אפשר להעלות תמונות עם רשימות מוגדרות מראש של בקרת גישה (ACL) כדי לשלוט בגישה לתמונות.
באפליקציה לדוגמה הזו, לתמונות שמועלות תהיה רשימת ה-ACL המוגדרת מראש public-read. אפשר לגשת לכתובת ה-URL הציבורית דרך המאפיין mediaLink של האובייקט ב-Cloud Storage. אפשר להשתמש בכתובת ה-URL הזו בתג תמונה ב-HTML.
הוראות לקריאת אובייקט פרטי ב-Cloud Storage מופיעות בדף הורדת אובייקטים.
מחיקת תמונות
כשמשתמש מוחק ספר מהאפליקציה, הקוד הזה מסיר את התמונה מהקטגוריה של Cloud Storage.
הגדרת האפליקציה
מגדירים אפליקציות להפעלה ב-App Engine באמצעות קובץ app.yaml, שבו מציינים את זמן הריצה של האפליקציה, משתני הסביבה והגדרות אחרות.
אם האפליקציה דורשת הגדרות מינימליות, קובץ app.yaml יכול להיות שורה אחת:
PHP 8.1
runtime: php81
PHP 7.4
runtime: php74
אתם יכולים להוסיף אפשרויות הגדרה נוספות ומשתני סביבה ספציפיים לאפליקציה לקובץ ההגדרה app.yaml.
הוספת משתני סביבה
בקובץ app.yaml מוגדרת הסביבה של האפליקציה. בדוגמה של מדף הספרים שמופיעה במדריך הזה, ההגדרות מוגדרות כמשתני סביבה כדי שהאפליקציה תדע איך להתחבר למופע הנכון של Cloud SQL ולדלי הנכון ב-Cloud Storage.
כדי לפרוס את האפליקציה, צריך לערוך את קובץ התצורה app.yaml:
מגדירים את המשתנה
GOOGLE_STORAGE_BUCKETלפי שם הקטגוריה שלכם ב-Cloud Storage.מגדירים את המשתנה
CLOUDSQL_CONNECTION_NAMEלערך app-name:region:instance-name אפשר לאחזר את הפרטים הנדרשים באמצעות הפקודה הבאהgcloud:gcloud sql instances describe INSTANCE
במכונה מדור שני של Cloud SQL,
CLOUDSQL_CONNECTION_NAMEיהיה בפורמט הבא:your_project_name:your_region:your_instanceאם מסד הנתונים שיצרתם לא נקרא
bookshelf, צריך לבטל את ההערה של המשתנהCLOUD_SQL_DATABASE_NAMEולהגדיר אותו. בדוגמה הזו, מסד הנתונים נוצר עם השםbook-data.בודקים את קובץ
app.yaml, שאמור להיראות כך:
PHP 8.1
runtime: php81
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
PHP 7.4
runtime: php74
env_variables:
GOOGLE_STORAGE_BUCKET: picture-storage
CLOUDSQL_CONNECTION_NAME: sample-application:us-central1:bookshelf
CLOUDSQL_USER: root
CLOUDSQL_PASSWORD: passw0rd!
CLOUDSQL_DATABASE_NAME: book-data
פריסת האפליקציה
כדי לפרוס את האפליקציה, עוברים לספרייה
getting-startedומריצים את הפקודה הבאה:gcloud app deploy
כשמופיעה בקשה לבחירת מיקום, בוחרים מיקום שקרוב למשתמשי האפליקציה. App Engine הוא אזורי, כלומר התשתית שמריצה את האפליקציה שלכם ממוקמת באזור גיאוגרפי ספציפי. לדוגמה, במדריך הזה נעשה שימוש באזור
us-central1כדי לפרוס את משאבי האחסון. כדי לצמצם את זמן האחזור ולשפר את הביצועים, כדאי לפרוס את האפליקציה באותו אזור.באופן כללי, כדאי לבחור מיקום שקרוב למשתמשים, אבל יש מקרים שבהם מומלץ לפרוס את האפליקציה קרוב למיקום של המשאבים שלה. מידע על מיקומים זמינים ב-App Engine ועל מיקומים של משאבים
צפייה באפליקציה:
gcloud app browse
סידור וארגון
כדי להפסיק את החיוב על המשאבים שבהם השתמשתם בפרויקט, אתם יכולים למחוק את הפרויקט ב- Google Cloud .
כדי למחוק את הפרויקט, מריצים את הפקודה הבאה:
gcloud projects delete PROJECT_ID
כדי לוודא שהפרויקט נמחק, מריצים את הפקודה הבאה כדי להציג את רשימת הפרויקטים:
gcloud projects list
המאמרים הבאים
- איך מאמתים משתמשים
- מידע נוסף על כתיבת יומני אפליקציות ופירוש יומני מערכת זמין במאמר בנושא קריאה וכתיבה של יומני אפליקציות.
- Cloud Tasks מאפשר לבצע עבודה ברקע באופן אסינכרוני אחרי שליחת הבקשה.
- מידע על טיפול בבקשות ועל ניתוב בקשות
- למידע נוסף על אופן הפעולה של App Engine, אפשר לעיין במאמר בנושא סביבת זמן הריצה של PHP.