1. قبل البدء
من السهل إنشاء تطبيقات App Engine وصيانتها وتوسيع نطاقها نظرًا إلى الحاجة إلى التغيير في عدد الزيارات ومساحة تخزين البيانات. باستخدام App Engine، ليست هناك خوادم للصيانة. ما عليك سوى تحميل التطبيق وسيصبح جاهزًا للاستخدام.
يتم تغيير حجم تطبيقات App Engine تلقائيًا استنادًا إلى الزيارات الواردة. وتشمل كل هذه الميزات كلاً من موازنة التحميل، والخدمات المصغّرة، والتفويض، وقواعد بيانات SQL وNoSQL، والتخزين المؤقت للذاكرة، وتقسيم حركة البيانات، والتسجيل، والبحث، وتعيين الإصدارات، وعمليات الطرح والتراجع، والفحص الأمني، وجميعها تتوفّر بشكل أصلي وهي قابلة للتخصيص بدرجة عالية.
تدعم بيئة App Engine العادية وبيئة App Engine المرنة مجموعة من لغات البرمجة، بما في ذلك Java وPython وPHP وNodeJS وGo. تمنح البيئتين المطوِّرين أقصى قدر من المرونة في ما يخص سلوك تطبيقاتهم. لكل بيئة نقاط قوة معينة. لمزيد من المعلومات، راجِع اختيار بيئة App Engine.
وسوف تتعلم كيفية نشر تطبيق Spring Boot في بيئة App Engine العادية. ويتم تقليل حجم البيئة العادية إلى صفر من الحالات التي لا يستخدمها أي شخص، ويتم تكبيرها تلقائيًا.
المتطلبات الأساسية
- الإلمام بلغة وأدوات البرمجة Java
- معرفة أدوات تحرير النصوص القياسية في Linux، مثل Vim وEmacs وnano
الأنشطة
- كيفية إنشاء تطبيق Spring Boot Java على App Engine
المتطلبات
- مشروع على Google Cloud
- متصفّح، مثل Google Chrome
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Google Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. إذا لم يكن لديك حساب على Gmail أو Google Workspace، عليك إنشاء حساب.
- اسم المشروع هو الاسم المعروض للمشاركين في هذا المشروع. وهي سلسلة أحرف لا تستخدمها Google APIs. ويمكنك تعديلها في أي وقت.
- يكون رقم تعريف المشروع فريدًا في جميع مشاريع Google Cloud وغير قابل للتغيير (لا يمكن تغييره بعد تحديده). تنشئ Cloud Console سلسلة فريدة تلقائيًا. فعادةً لا تهتم بما هو. في معظم الدروس التطبيقية حول الترميز، يجب الإشارة إلى رقم تعريف المشروع (الذي يتم تحديده عادةً على أنّه
PROJECT_ID
). وإذا لم يعجبك رقم التعريف الذي تم إنشاؤه، يمكنك إنشاء رقم تعريف عشوائي آخر. ويمكنك بدلاً من ذلك تجربة طلبك الخاص ومعرفة ما إذا كان متاحًا. ولا يمكن تغييره بعد هذه الخطوة ويبقى طوال مدة المشروع. - لمعلوماتك، هناك قيمة ثالثة، وهي رقم المشروع، الذي تستخدمه بعض واجهات برمجة التطبيقات. اطّلِع على مزيد من المعلومات حول هذه القيم الثلاث في المستندات.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام الموارد/واجهات برمجة التطبيقات في Cloud. لن يؤدي إكمال هذا الدرس التطبيقي حول الترميز إلى فرض أي تكاليف، إن وُجدت. لإيقاف تشغيل الموارد لتجنب تحمُّل الفواتير إلى ما هو أبعد من هذا البرنامج التعليمي، يمكنك حذف الموارد التي أنشأتها أو حذف المشروع. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج فترة تجريبية مجانية بقيمة 300 دولار أمريكي.
Cloud Shell
ستستخدم Cloud Shell، وهي بيئة سطر أوامر يتم تشغيلها في Google Cloud.
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell .
إذا كانت هذه هي المرة الأولى التي تبدأ فيها Cloud Shell، ستظهر لك شاشة وسيطة تصف ماهيتها. إذا ظهرت لك شاشة وسيطة، انقر على متابعة.
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.
يتم تحميل هذا الجهاز الافتراضي مع جميع أدوات التطوير اللازمة. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح.
بعد الربط بخدمة Cloud Shell، من المفترض أن تتأكّد من أنّه تمّت مصادقتك وأنّ المشروع مضبوط على رقم تعريف مشروعك.
- شغِّل الأمر التالي في Cloud Shell لتأكيد مصادقتك:
gcloud auth list
مخرجات الأمر
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
- شغّل الأمر التالي في Cloud Shell للتأكد من معرفة الأمر gcloud بمشروعك:
gcloud config list project
مخرجات الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
مخرجات الأمر
Updated property [core/project].
3- إنشاء تطبيق ويب جديد لـ Spring Boot
بعد إطلاق Cloud Shell، يمكنك استخدام سطر الأوامر لإنشاء تطبيق Spring Boot جديد باستخدام Spring Initializr.
$ curl https://start.spring.io/starter.tgz \ -d bootVersion=3.0.5 \ -d dependencies=web \ -d type=maven-project \ -d baseDir=gae-standard-example | tar -xzvf - $ cd gae-standard-example
4. تعديل ملف Maven pom.xml
هناك طريقتان لنشر تطبيق خادم Java، إما باستخدام المكوّن الإضافي Maven App Engine أو المكوّن الإضافي Gradle App Engine، أو من خلال نشر دليل حزمة war
. ستستخدم المكوّن الإضافي Maven App Engine لنشر التطبيق.
إضافة المكوّن الإضافي Maven App Engine
عليك تحديث pom.xml
لتضمين مكوّن Google Cloud الإضافي الذي يسهِّل عملية النشر. يمكنك استخدام Vim أو nano أو Emacs لتعديل الملف.
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
...
<build>
<plugins>
...
<plugin>
<groupId>com.google.cloud.tools</groupId>
<artifactId>appengine-maven-plugin</artifactId>
<version>2.4.4</version>
<configuration>
<version>1</version>
<projectId>GCLOUD_CONFIG</projectId>
</configuration>
</plugin>
...
</plugins>
</build>
</project>
5- إضافة أداة وصف App Engine
- لنشر التطبيق في بيئة App Engine العادية، عليك إنشاء ملف واصف جديد باسم
src/main/appengine/app.yaml
.
$ mkdir -p src/main/appengine/ $ touch src/main/appengine/app.yaml
- عدِّل ملف
src/main/appengine/app.yaml
وأضِف المحتوى التالي:
src/main/appengine/app.yaml
runtime: java17
instance_class: F1
6- إضافة وحدة تحكّم
يمكنك إضافة وحدة تحكّم جديدة تعرض ""hello world!"
" في "DemoApplication.java
".
src/main/java/com/example/demo/DemoApplication.java
package com.example.demo;
...
// Add imports
import org.springframework.web.bind.annotation.*;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
// Add the controller.
@RestController
class HelloWorldController {
@GetMapping("/")
public String hello() {
return "hello world!";
}
}
7. تشغيل التطبيق محليًا
- احرص على ضبط JAVA_Home على إصدار JDK الصحيح:
$ export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
- يمكنك بدء تشغيل تطبيق Spring Boot باستخدام المكوّن الإضافي Spring Boot:
$ ./mvnw -DskipTests spring-boot:run
- بعد بدء التطبيق، انقر على معاينة الويب في شريط أدوات Cloud Shell واختَر معاينة على المنفذ 8080.
ستفتح علامة تبويب في المتصفّح وتتصل بالخادم الذي بدأته.
8. نشر التطبيق في App Engine
- عليك أولاً إعداد المشروع لتتمكّن من تشغيل تطبيقات App Engine. أيضًا، قم بتهيئة المشروع للتشغيل في المنطقة الوسطى من الولايات المتحدة.
$ gcloud app create --region us-central You are creating an app for project [...]. WARNING: Creating an App Engine application for a project is irreversible and the region cannot be changed. More information about regions is at https://cloud.google.com/appengine/docs/locations
- بعد ذلك، يمكنك نشر تطبيقك في بيئة App Engine العادية من خلال تشغيل
mvn appengine:deploy
.
$ ./mvnw -DskipTests package appengine:deploy ... first time deploy may take a couple of minutes
- بعد نشر التطبيق، يمكنك زيارته من خلال فتح http://<project-id>.appspot.com في متصفح الويب أو استخدام الأمر التالي في Cloud Shell:
$ gcloud app browse ... [It may print out the URL for your app]
9. تنظيف
لا يمكنك حذف تطبيق App Engine ولكن يمكنك إيقافه.
انتقِل إلى App Engine
وSettings
في Google Cloud Console واختَر Disable Application
:
بدلاً من ذلك، يمكنك حذف المشروع بالكامل:
$ gcloud projects delete YOUR-PROJECT-ID
10. تهانينا
لقد تعلمت كتابة أول تطبيق ويب App Engine لك!