ربط تطبيق Spring Kiosk بـ Cloud SQL

ربط تطبيق Spring Kiosk بـ Cloud SQL

لمحة عن هذا الدرس التطبيقي حول الترميز

subjectتاريخ التعديل الأخير: أبريل 22, 2020
account_circleتأليف موظف Google

1. قبل البدء

Cloud SQL هي خدمة قواعد بيانات مُدارة بالكامل تسهِّل إعداد قواعد البيانات المتعلقة بالعلاقات وإدارتها على Google Cloud وإدارتها وإدارتها. يمكنك استخدام Cloud SQL مع Cloud SQL لـ MySQL أو Cloud SQL لـ PostgreSQL.

في هذا الدرس التطبيقي حول الترميز، ستتعلّم كيفية إعداد مثيل Cloud SQL لمثيل MySQL، ثم تحديث تطبيق Spring Kiosk لاستخدام مثيل Cloud SQL كمساحة تخزين خلفية. يوفر Spring Start Starter for Google Cloud SQL مصدر بيانات مهيأ تلقائيًا، مما يسمح لك بالاستفادة من Cloud SQL بسهولة بأقل تغييرات في الرمز. يستخدم هذا الدرس التطبيقي رمز مصدر Spring Petclinic.

المتطلبات الأساسية

  • الإلمام بلغة البرمجة Java وأدواتها
  • معرفة بالمحرِّرين النصيين العاديين لنظام التشغيل Linux، مثل Vim وEmacs وnano

المهام التي ستنفِّذها

  • استخدم Cloud SQL في تطبيق Spring Bot.

المتطلبات اللازمة

2. الإعداد والمتطلبات

إعداد البيئة الذاتية

  1. سجِّل الدخول إلى Cloud Console وأنشئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب في Gmail أو G Suite حاليًا، يجب إنشاء حساب.)

عذرًا! وسيُشار إليه لاحقًا في هذا الدرس التطبيقي بعنوان PROJECT_ID.

  1. بعد ذلك، ستحتاج إلى تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.

من المفترَض ألا يكلفك تنفيذ هذا الدرس التطبيقي أكثر من بضعة دولارات، ولكن قد يكلف ذلك أكثر إذا قررت استخدام المزيد من الموارد أو إذا تركتها قيد التشغيل.

يكون مستخدمو Google Cloud الجدد مؤهّلين للاستفادة من فترة تجريبية مجانية بقيمة 300 دولار أمريكي.

تفعيل Cloud Shell

  1. من Cloud Console، انقر على تفعيل Cloud Shell .

إذا لم تكن قد بدأت استخدام Cloud Shell من قبل، ستظهر لك شاشة متوسطة (في الجزء السفلي غير المرئي من الصفحة) تصف المقصود بذلك. وإذا كان الأمر كذلك، انقر على متابعة (ولن تظهر لك مرة أخرى مطلقًا). في ما يلي الشكل الذي تظهر به الشاشة لمرة واحدة:

من المفترض أن تستغرق إدارة إمكانيات Cloud Shell والاتصال بها بضع لحظات فقط.

يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. ويوفر دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يعزّز بشكل كبير أداء الشبكة والمصادقة. يمكن إتمام معظم عملك إن لم يكن كلّه في هذا الدرس التطبيقي باستخدام متصفّح أو جهاز Chromebook.

بعد الربط بخدمة Cloud Shell، من المفترض أن تتم مصادقتها وأن المشروع مُعدّ على رقم تعريف المشروع.

  1. شغِّل الأمر التالي في 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`
gcloud config list project

مخرجات الأوامر

[core]
project = <PROJECT_ID>

إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:

gcloud config set project <PROJECT_ID>

مخرجات الأوامر

Updated property [core/project].

3. إعداد Cloud SQL لمثيل MySQL

  1. بعد إطلاق Cloud Shell، يمكنك استخدام سطر الأوامر لإنشاء مثيل Cloud SQL جديد:
$ gcloud sql instances create my-instance

بعد اكتمال هذه العملية، سيصبح المثيل جاهزًا للاستخدام.

  1. الآن أنشئ قاعدة بيانات ستستخدمها لتطبيق Petclinic:
$ gcloud sql databases create petclinic --instance my-instance

يمكنك أيضًا الوصول إلى المثيل وضبطه من خلال Cloud Console.

  1. احصل على اسم اتصال المثيل بالتنسيق project-id:zone-id:instance-id من خلال تنفيذ الأمر التالي. وستستخدم هذا الخيار لاحقًا في ضبط تطبيق Spring Bot.
$ gcloud sql instances describe my-instance |grep connectionName

4. استنساخ تطبيق Petclinic واختباره محليًا

  1. عليك الآن إنشاء نسخة طبق الأصل واختبار تطبيق Petclinic محليًا.
$ git clone https://github.com/spring-projects/spring-petclinic
$ cd spring-petclinic
$ ./mvnw spring-boot:run
  1. انقر على معاينة الويب في Cloud Shell، ثم اختَر معاينة على المنفذ 8080.

من المفترض أن تظهر لك صفحة Petclinic كما هو موضّح هنا في متصفحك:

  1. تجربة ألعاب جديدة وإضافة بيانات يستخدم التطبيق قاعدة بيانات HyperSQL في الذاكرة. سيتم الآن التبديل من HyperSQL إلى استخدام Cloud SQL كقاعدة بيانات.

5. استخدام Cloud SQL في Petclinic

تعديل ملف Maven pom.xml

عدِّل ملف pom.xml كما هو موضح هنا. يوفر إجراء التفعيل عنصر DataSource تم ضبطه تلقائيًا للاتصال بقاعدة بيانات Cloud SQL. ويمكنك استخدام Vim أو nano أو Emacs لتعديل الملف.

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" ...>
    ...
   
<!-- Add Spring Cloud GCP Dependency BOM -->
   
<dependencyManagement>
       
<dependencies>
         
<dependency>
         
<groupId>org.springframework.cloud</groupId>
         
<artifactId>spring-cloud-gcp-dependencies</artifactId>
         
<version>1.0.0.RC1</version>
         
<type>pom</type>
         
<scope>import</scope>
         
</dependency>
     
</dependencies>
   
</dependencyManagement>
   
<dependencies>
      ...
     
<!-- Add CloudSQL Starter for MySQL -->
     
<dependency>
       
<groupId>org.springframework.cloud</groupId>
       
<artifactId>spring-cloud-gcp-starter-sql-mysql</artifactId>
     
</dependency>
      ...
   
</dependencies>
   
<repositories>
     
<!-- Use Spring Milestone Repository -->
     
<repository>
       
<id>repository.spring.milestone</id>
       
<name>Spring Milestones Repository</name>
       
<url>http://repo.spring.io/milestone</url>
     
</repository>
   
</repositories>
</project>

تحديث application-mysql.properties

  1. استبدِل محتوى src/main/resources/application-mysql.properties بالخصائص التالية. ستحتاج إلى ضبط اسم اتصال المثيل من الخطوة السابقة.

src/main/resources/application-mysqlproperties

database=mysql

# Delete the rest of the original content of the file and replace with the following:
spring
.cloud.gcp.sql.database-name=petclinic
spring
.cloud.gcp.sql.instance-connection-name=YOUR_CLOUD_SQL_INSTANCE_CONNECTION_NAME

# Initialize the database since the newly created Cloud SQL database has no tables. The following flag is for Spring Boot 2.
spring
.datasource.initialization-mode=always
  1. أخيرًا، فعِّل ملفًا شخصيًا في Cloud SQL لخدمة MySQL في تطبيق Spring Bot عن طريق إضافة mysql إلى موقع application.properties' spring.profiles.active:

src/main/resources/application.properties

# Keep the content of the file the same
...

# In the last line, add mysql to the spring.profiles.active property
spring
.profiles.active=mysql

6. تشغيل التطبيق في Cloud Shell

  1. يمكنك بدء تطبيق Spring Bot عادةً باستخدام المكون الإضافي Spring Kiosk:
$ ./mvnw -DskipTests spring-boot:run
  1. بعد بدء تشغيل التطبيق، انقر على معاينة الويب في شريط أدوات Cloud Shell، ثم اختَر معاينة على المنفذ 8080.

من المفترض أن تظهر لك صفحة Spring Petclinic مرة أخرى كما هو موضح هنا في متصفحك:

  1. إضافة إدخال مالك حيوان أليف.

اختياري: تحقَّق من أن خدمة Cloud SQL قد احتفظت بالبيانات

يمكنك التحقُّق من الاحتفاظ بالبيانات التي أدخلتها في Cloud SQL كما هو موضَّح هنا. اضغط على Enter (الرجوع إلى نظام التشغيل Macintosh) عند طلب كلمة مرور.

$ gcloud sql connect my-instance -u root
Whitelisting your IP for incoming connection for 5 minutes...done.
Enter password: <Press Enter, there is no password by default>
...
mysql> use petclinic;
mysql> select * from owners;
  

اختياري: حذف مثيل Cloud SQL

وبعد إيقاف تطبيقك، يمكنك حذف مثيل Cloud SQL باستخدام الأمر التالي:

$ gcloud sql instances delete my-instance 

7. تهانينا

لقد تعلّمت كيفية الاتصال بخدمة Cloud SQL في تطبيق Spring Bot.

مزيد من المعلومات