יצירת אפליקציית Ruby בסביבה הגמישה של App Engine
מזהה אזור
REGION_ID הוא קוד מקוצר ש-Google מקצה על סמך האזור שבוחרים כשיוצרים את האפליקציה. הקוד לא תואם למדינה או למחוז, למרות שחלק ממזהי האזורים עשויים להיראות דומים לקודים נפוצים של מדינות ומחוזות. באפליקציות שנוצרו אחרי פברואר 2020, המחרוזת REGION_ID.r כלולה בכתובות ה-URL של App Engine. באפליקציות קיימות שנוצרו לפני התאריך הזה, מזהה האזור הוא אופציונלי בכתובת ה-URL.
במדריך למתחילים הזה נסביר איך ליצור ולפרוס אפליקציה שמציגה הודעה קצרה.
כדי להשתמש באפליקציה לדוגמה שבמדריך הזה עם כל גרסה נתמכת של Ruby, צריך לציין את גרסת זמן הריצה ואת מערכת ההפעלה בקובץ app.yaml.
לפני שמתחילים
- נכנסים לחשבון 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 Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (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 Build API.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin), which contains theserviceusage.services.enablepermission. Learn how to grant roles.-
התקינו את ה-CLI של Google Cloud.
-
אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.
-
כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:
gcloud init
התפקידים הנדרשים
כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:
- אדמין App Engine (
roles/appengine.appAdmin) בפרויקט - עריכה ב-Cloud Build (
roles/cloudbuild.builds.editor) בפרויקט - אדמין של אובייקט אחסון (
roles/storage.objectAdmin) בפרויקט - מציג היומנים (
roles/logging.viewer) בפרויקט - משתמש בחשבון שירות (
roles/iam.serviceAccountUser) בחשבון השירות -
מבקשים מהאדמין להקצות את התפקידים הבאים לחשבון השירות שמוגדר כברירת מחדל של App Engine:
- קורא של Artifact Registry (
roles/artifactregistry.reader) בפרויקט - חשבון השירות של Cloud Build (
roles/cloudbuild.builds.builder) בפרויקט - צפייה באובייקטים באחסון (
roles/storage.objectViewer) בפרויקט
- קורא של Artifact Registry (
להסבר על מתן תפקידים, ראו איך מנהלים את הגישה ברמת הפרויקט, התיקייה והארגון.
יכול להיות שאפשר לקבל את ההרשאות הנדרשות גם באמצעות תפקידים בהתאמה אישית או תפקידים מוגדרים מראש.
דרישות מוקדמות נוספות
מאתחלים את אפליקציית App Engine עם הפרויקט ובוחרים את האזור שלה:
gcloud app create --project=[YOUR_PROJECT_ID]כשמופיעה בקשה, בוחרים את האזור שבו רוצים למקם את אפליקציית App Engine.
מתקינים את הרכיבים הבאים במחשב המקומי:
המיקומים של App Engine
App Engine הוא אזורי, כלומר התשתית שמריצה את האפליקציות שלכם ממוקמת באזור ספציפי, ו-Google מנהלת אותה כך שהיא זמינה באופן יתירתי בכל התחומים באזור הזה.
הקריטריונים העיקריים לבחירת האזור שבו האפליקציות יפעלו הם זמן האחזור, הזמינות והעמידות. בדרך כלל אפשר לבחור את האזור הקרוב ביותר למשתמשים באפליקציה, אבל כדאי גם לבדוק איפה App Engine זמין ואיפה מוצרים ושירותים אחרים שבהם האפליקציה משתמשת. שימוש בשירותים בכמה מיקומים יכול להשפיע על זמן האחזור של האפליקציה וגם על התמחור שלה.Google Cloud
אחרי שמגדירים את האזור של אפליקציה, אי אפשר לשנות אותו.
אם כבר יצרתם אפליקציית App Engine, תוכלו לראות את האזור שלה באחת מהדרכים הבאות:
מריצים את הפקודה
gcloud app describe.פותחים את מרכז הבקרה של App Engine במסוף Google Cloud . האזור מופיע בחלק העליון של הדף.
הורדת אפליקציית Hello World
יצרנו אפליקציית Hello World ל-App Engine כדי שתוכלו להתרשם במהירות מפריסת אפליקציה ב- Google Cloud.
משכפלים את מאגר האפליקציות לדוגמה Hello World למחשב המקומי.
git clone https://github.com/GoogleCloudPlatform/ruby-docs-samplesאפשרות נוספת היא להוריד את הדוגמה כקובץ ZIP ולחלץ אותה.
עוברים לספרייה שמכילה את הקוד לדוגמה.
cd ruby-docs-samples/appengine/flexible/hello_world
הפעלת Hello World במחשב המקומי
בדוגמה הזו נעשה שימוש ב-Bundler כדי להריץ את אפליקציית Hello World במחשב המקומי:
אם שפת התכנות לא מותקנת בסביבת זמן הריצה, צריך להוריד ולהתקין את Ruby.
מתקינים את Bundler:
gem install bundlerהתקנת יחסי תלות בפרויקט הזה:
bundle installמפעילים שרת אינטרנט מקומי.
bundle exec ruby app.rb -p 8080בדפדפן האינטרנט, מזינים:
ההודעה Hello World מאפליקציית הדוגמה מוצגת בדף. בחלון הטרמינל, מקישים על Ctrl+C כדי לצאת משרת האינטרנט.
פריסה והפעלה של Hello World ב-App Engine
כדי לפרוס את האפליקציה בסביבה הגמישה של App Engine:-
מריצים את הפקודה הבאה מהספרייה
flexible/hello_worldכדי לפרוס את אפליקציית Hello World:gcloud app deploy
דיווחים נפוצים של פקודת
gcloud-
כוללים את הדגל
--versionכדי לציין מזהה שמזהה באופן ייחודי את הגרסה הזו של האפליקציה, אחרת המערכת תיצור מזהה בשבילכם. לדוגמה:--version [YOUR_VERSION_ID] -
כוללים את הדגל
--projectכדי לציין מזהה פרויקט חלופי ב- Google Cloud , שונה מזה שהוגדר כברירת מחדל בכליgcloud. דוגמה:--project [YOUR_PROJECT_ID]
דוגמה:
gcloud app deploy --version pre-prod-5 --project my-sample-app
במאמר בדיקה ופריסה של האפליקציה מוסבר איך לפרוס את האפליקציה משורת הפקודה. רשימה של כל הדגלים של הפקודות מופיעה במאמר בנושא
gcloud app deploy. -
כוללים את הדגל
-
מפעילים את הדפדפן כדי לראות את האפליקציה בכתובת
https://PROJECT_ID.REGION_ID.r.appspot.com כאשרgcloud app browse
PROJECT_IDמייצג את מזהה הפרויקט Google Cloud.
הפעם, הדף שמציג את ההודעה Hello World מועבר על ידי שרת אינטרנט שפועל במופע App Engine.
מזל טוב! פרסתם את האפליקציה הראשונה שלכם ב-App Engine בסביבה הגמישה של App Engine.
אם נתקלתם בשגיאות כלשהן במהלך פריסת האפליקציה, תוכלו להיעזר בטיפים לפתרון בעיות.בקטעים הבאים מפורט מידע על ניקוי, וגם קישורים לפעולות אפשריות שאפשר לבצע.
הסרת המשאבים
כדי להימנע מחיובים, אפשר למחוק את הפרויקט כדי להפסיק את החיוב על כל המשאבים שנעשה בהם שימוש במסגרת הפרויקט. Google Cloud
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
המאמרים הבאים
לומדים את כל הפלטפורמה
עכשיו, אחרי שהבנתם איך מפתחים ומפעילים אפליקציות App Engine, אתם יכולים לעיין בשאר התוכן של Google Cloud. כבר מותקן אצלכם Google Cloud CLI, שכולל את הכלים שמאפשרים לכם ליצור אינטראקציה עם מוצרים כמו Cloud SQL, Cloud Storage, Firestore ועוד.
מידע על סביבה גמישה של App Engine
הנה כמה נושאים שיעזרו לכם להמשיך ללמוד על App Engine:
סקר קוד של Hello World
האפליקציה Hello World היא האפליקציה הכי פשוטה שאפשר ליצור ב-App Engine, כי היא מכילה רק שירות אחד, יש לה רק גרסה אחת וכל הקוד שלה נמצא בספריית השורש של האפליקציה. בקטע הזה מתואר כל אחד מקובצי האפליקציה בפירוט.
app.rb
אפליקציית Hello World היא אפליקציית Sinatra בסיסית עם קובץ אחד:
app.yaml
בקובץ app.yaml מפורטות ההגדרות הבאות של האפליקציה:
- הערך
env: flexמציין שהאפליקציה משתמשת בסביבה הגמישה של App Engine. מציינת את זמן הריצה שבו האפליקציה משתמשת.
מידע נוסף על אופן הפעולה של זמן הריצה של Ruby זמין במאמר בנושא זמן הריצה של Ruby.
לפרטים נוספים על תכנון האפליקציה כדי לנצל את היתרונות של גרסאות ושירותים, אפשר לעיין במאמר סקירה כללית של App Engine.
פרטים נוספים על הגדרות התצורה של App Engine זמינים במאמר בנושא הגדרת האפליקציה באמצעות app.yaml.
Gemfile
Gemfile משמש לציון התלויות של האפליקציה ב-RubyGem, ו-Bundler משמש להצהרה על תלויות ולהתקנתן. אפליקציית Hello World דורשת Ruby gem אחד: מסגרת האינטרנט Sinatra: