באפליקציות רבות נדרש ניהול סשנים לצורך אימות והעדפות משתמש. Sinatra כולל הטמעה מבוססת-זיכרון לביצוע הפונקציה הזו. עם זאת, ההטמעה הזו לא מתאימה לאפליקציה שאפשר להציג מכמה מופעים, כי יכול להיות שהסשן שמתועד במופע אחד יהיה שונה ממופעים אחרים. במדריך הזה מוסבר איך לנהל סשנים ב-App Engine.
מטרות
- כותבים את האפליקציה.
- מריצים את האפליקציה באופן מקומי.
- פורסים את האפליקציה ב-App Engine.
עלויות
במסמך הזה משתמשים ברכיבים הבאים של 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 Firestore 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.-
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 Firestore 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.- הכנת סביבת הפיתוח.
הגדרת הפרויקט
בחלון המסוף, מתחילים בספרייה לפי בחירתכם ויוצרים ספרייה חדשה בשם
sessions. כל הקוד של המדריך הזה נמצא בספרייהsessions.עוברים לספרייה
sessions:cd sessionsמפעילים את
Gemfile:bundle initמוסיפים את השורות הבאות לקובץ Gemfile שנוצר:
ב-Gemfile מפורטות כל ספריות Ruby הלא סטנדרטיות שהאפליקציה צריכה ש-App Engine יטען בשבילה:
google-cloud-firestoreהוא לקוח Ruby ל-Firestore API.Sinatra הוא ה-framework של Ruby לאינטרנט שמשמש את האפליקציה.
מתקינים את יחסי התלות:
bundle install
כתיבת אפליקציית האינטרנט
האפליקציה הזו מציגה ברכות בשפות שונות לכל משתמש. המשתמשים החוזרים תמיד יקבלו את פנייה באותה שפה.
בעזרת עורך טקסט, יוצרים קובץ בשם
app.rbבספרייהsessionsעם התוכן הבא:
יצירת מאגר הסשנים
לפני שהאפליקציה יכולה לאחסן העדפות של משתמש, צריך לאחסן מידע על המשתמש הנוכחי בסשן. הדיאגרמה הבאה ממחישה איך Firestore מטפל בסשנים באפליקציית App Engine.
ל-Sinatra יש תמיכה מובנית בשמירת נתוני הפעילות בקובץ Cookie. כדי לשמור ב-Firestore במקום זאת, צריך להגדיר אובייקט Rack::Session משלכם.
בספרייה
sessions, יוצרים קובץ בשםfirestore_session.rbעם התוכן הבא:
מחיקת סשנים
כפי שכתוב, האפליקציה הזו לא מוחקת סשנים ישנים או כאלה שתוקפם פג. אפשר למחוק נתוני סשנים במסוףGoogle Cloud , או להטמיע אסטרטגיה למחיקה אוטומטית.
הרצה מקומית
מפעילים את שרת ה-HTTP:
bundle exec ruby app.rbצופים באפליקציה בדפדפן האינטרנט.
מוצג אחד מחמשת המשפטים הבאים: Hello World, Hallo Welt, Hola mundo, Salut le Monde או Ciao Mondo. השפה משתנה אם פותחים את הדף בדפדפן אחר או במצב פרטי. אפשר לראות ולערוך את נתוני הסשן בGoogle Cloud מסוף.
כדי לעצור את שרת ה-HTTP, בחלון הטרמינל לוחצים על
Control+C.
פריסה והרצה ב-App Engine
אתם יכולים להשתמש בסביבה רגילה של App Engine כדי ליצור ולפרוס אפליקציה שפועלת בצורה מהימנה בעומס כבד ועם כמויות גדולות של נתונים.
במדריך הזה משתמשים בסביבה הרגילה של App Engine כדי לפרוס את השרת.
בחלון הטרמינל, יוצרים קובץ
app.yamlומדביקים בו את הטקסט הבא:פורסים את האפליקציה ב-App Engine:
gcloud app deployאפשר לראות את האפליקציה הפעילה בכתובת ה-URL הבאה, כאשר
PROJECT_IDהוא מזהה הפרויקט: Google Cloudhttps://PROJECT_ID.appspot.com
ההודעה מועברת עכשיו על ידי שרת אינטרנט שפועל במופע של App Engine.
ניפוי באגים באפליקציה
אם אתם לא מצליחים להתחבר לאפליקציית App Engine, כדאי לבדוק את הדברים הבאים:
- בודקים שהפקודות
gclouddeploy הושלמו בהצלחה ולא הוחזרו שגיאות. אם היו שגיאות (לדוגמה,message=Build failed), צריך לתקן אותן ולנסות שוב לפרוס את אפליקציית App Engine. נכנסים לדף Logs Explorer במסוף Google Cloud .
בתפריט הנפתח Recently selected resources (משאבים שנבחרו לאחרונה), לוחצים על App Engine Application (אפליקציית App Engine) ואז על All module_id (כל מזהי המודולים). מוצגת רשימה של בקשות מהביקור שלכם באפליקציה. אם לא מוצגת רשימה של בקשות, צריך לוודא שבחרתם באפשרות All module_id מהרשימה הנפתחת. אם הודעות השגיאה מודפסות ב Google Cloud מסוף, צריך לוודא שהקוד של האפליקציה זהה לקוד שבקטע על כתיבת אפליקציית האינטרנט.
מוודאים ש-Firestore API מופעל.
הסרת המשאבים
מחיקת הפרויקט
- במסוף Google Cloud , נכנסים לדף Manage resources.
- ברשימת הפרויקטים, בוחרים את הפרויקט שרוצים למחוק ולוחצים על Delete.
- כדי למחוק את הפרויקט, כותבים את מזהה הפרויקט בתיבת הדו-שיח ולוחצים על Shut down.
מחיקת מכונת App Engine
- במסוף Google Cloud , נכנסים לדף Versions של App Engine.
- מסמנים את התיבה שלצד גרסת האפליקציה שלא מוגדרת כברירת מחדל ושרוצים למחוק.
- כדי למחוק את גרסת האפליקציה, לוחצים על Delete.
המאמרים הבאים
- אפשר לנסות עוד מדריכים בנושא פונקציות Cloud Run.
- מידע נוסף על App Engine
- כדאי לנסות את Cloud Run, שמאפשר להריץ קונטיינרים ללא שמירת מצב בסביבה מנוהלת או באשכול Google Kubernetes Engine משלכם.