إعداد وتشغيل مشروع LoopBack في ServBay
ما هو LoopBack؟
LoopBack هو إطار عمل مفتوح المصدر وقابل للتوسع بدرجة عالية تم تطويره بواسطة IBM، ويهدف إلى بناء واجهات برمجة التطبيقات (APIs) والخدمات الصغيرة بسرعة باستخدام Node.js. يعتمد على نمط تطوير مدفوع بالنماذج (MDD)، مما يمكّن المطورين من تعريف نماذج البيانات بكفاءة مع توليد APIs قوية تلقائيًا. يضم الإطار مجموعة غنية من الميزات، مثل ربط مصادر البيانات، وأنظمة المصادقة والتفويض، ومستكشف API، بالإضافة إلى دعم مجموعة متنوعة من قواعد البيانات والبروتوكولات.
مزايا LoopBack وميزاته الرئيسية
- تطوير مدفوع بالنماذج (MDD): يتيح تعريف نماذج البيانات بطريقة بديهية وتوليد نقاط نهاية API والتحقق من البيانات تلقائيًا.
- دعم مصادر بيانات متعددة: يتيح الاتصال السهل بقواعد البيانات الرائجة مثل MongoDB وMySQL وPostgreSQL وMariaDB وغيرها، بالإضافة إلى خدمات RESTful وSOAP وغيرها.
- واجهة سطر أوامر قوية: يوفر LoopBack CLI أوامر غنية تُبسط كثيرًا عمليات تهيئة المشروع، وتعريف النماذج، وضبط مصادر البيانات، وغيرها من مهام التطوير.
- هيكلية معيارية وقابلة للتوسع: يمكن توسيع الإطار بسهولة من خلال المكونات والإضافات لدمج مكتبات وخدمات الجهات الخارجية وفق احتياجات العمل الخاصة.
- أمان مدمج: يدعم مباشرة آليات المصادقة (Authentication) والتفويض (Authorization)، لتسهيل بناء APIs آمنة بسرعة.
مع LoopBack، يستطيع المطورون رفع كفاءة تطوير تطبيقات الويب وواجهات البرمجة الخلفية بشكل ملحوظ، وإنشاء تطبيقات عالية الأداء وسهلة الصيانة.
إعداد وتشغيل مشروع LoopBack باستخدام ServBay
ستتعلم هنا كيفية إنشاء وتشغيل مشروع LoopBack باستخدام بيئة Node.js التي يوفرها ServBay. سنستخدم خاصية "المواقع" ضمن ServBay لضبط خادم ويب محلي، وإعداد وكيل عكسي (Reverse Proxy) لتوجيه الطلبات الواردة إلى منفذ تطبيق LoopBack، ما يمنحك سهولة في التطوير والاختبار المحلي.
إنشاء مشروع LoopBack
تثبيت LoopBack CLI
قبل البدء، تأكد من أنك قمت بتثبيت وتفعيل حزمة Node.js في ServBay. بعد ذلك، افتح الطرفية وقم بتثبيت أداة LoopBack CLI عالميًا عبر npm:
bashnpm install -g @loopback/cli
1تهيئة المشروع
انتقل إلى الدليل الرئيسي للمواقع في ServBay
/Applications/ServBay/www
، واستخدم CLI لبدء مشروع جديد. يُفضل أن تختار اسماً للمشروع مكوناً من أحرف صغيرة وشرطات، مثلservbay-loopback-app
:bashcd /Applications/ServBay/www lb4 app servbay-loopback-app
1
2سيقوم CLI بإرشادك خلال إعداد المشروع، كاختيار الميزات (مثل REST API، أو التسلسل، أو التوثيق) وتركيب الهيكل التنظيمي المناسب، حسب حاجتك.
تثبيت الاعتماديات
ادخل إلى مجلد المشروع الجديد وثبّت اعتمادية Node.js للمشروع:
bashcd servbay-loopback-app npm install
1
2
تعديل محتوى الاستجابة في مشروع LoopBack (اختياري)
للتجربة، يمكنك تعديل نقطة النهاية الافتراضية /ping
لتعيد استجابة مخصصة عند الوصول إليها عبر ServBay.
تعديل ملف
src/controllers/ping.controller.ts
حدد موقع الملف
src/controllers/ping.controller.ts
داخل مشروعك وغيّر محتواه ليعيد قيمة "Hello ServBay!" عند زيارة/ping
:typescriptimport {get} from '@loopback/rest'; export class PingController { constructor() {} @get('/ping') ping(): string { // عدل الاستجابة إلى "Hello ServBay!" return 'Hello ServBay!'; } }
1
2
3
4
5
6
7
8
9
10
11
تشغيل المشروع في وضع التطوير
عادةً، خلال مرحلة التطوير، يمكنك تشغيل خادم LoopBack الخاص بك مع خادم التطوير المدمج لمساعدتك في التكرار والتجربة بشكل سريع. سنستخدم وكيل ServBay العكسي لمساعدتك على الوصول إلى هذا الخادم.
تشغيل خادم التطوير
من المجلد الرئيسي للمشروع شغل التطبيق عبر الطرفية. غالباً ما ينتظر تطبيق LoopBack على منفذ معين ويمكنك تحديده عبر متغير البيئة
PORT
، مثلاً8585
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8585 npm start
1
2بعد بدء التطبيق، ينبغي أن ترى في الطرفية رسالة مماثلة لـ"Server is running at http://[::1]:8585".
ضبط موقع ServBay (وكيل عكسي)
افتح لوحة التحكم في ServBay وانتقل إلى تبويب "المواقع". ثم أضف موقع وكيل عكسي جديد لتوجيه طلبات الدومين الخارجي والمنفذ إلى عنوان ومنفذ تطبيق LoopBack المحلي:
- الاسم (Name): مثلاً
موقعي الأول لتطوير LoopBack
(لتيسير التعرف عليه في ServBay) - الدومين (Domain): مثلاً
servbay-loopback-dev.servbay.demo
(وهو العنوان الذي ستستخدمه محلياً) - نوع الموقع (Type): اختر
وكيل عكسي (Reverse Proxy)
- العنوان IP: أدخل
127.0.0.1
(تطبيق LoopBack يعمل محلياً) - المنفذ (Port): أدخل
8585
(منفذ تطبيق LoopBack)
بعد الانتهاء، احفظ الإعدادات وفعّلها في ServBay. سيقوم ServBay تلقائياً بضبط DNS المحلي (بتحديث ملف
/etc/hosts
أو عبر أداة مساعد ServBay) وضبط خادم الويب (Caddy أو Nginx)، ما يسمح بالوصول من خلال الدومين.لمزيد من التفاصيل، راجع المستند: إضافة موقع تطوير Node.js.
- الاسم (Name): مثلاً
اختبار التطبيق في وضع التطوير
افتح المتصفح وادخل عنوان الدومين والمسار المناسب لتطبيق LoopBack، مثلاً:
https://servbay-loopback-dev.servbay.demo/ping
بما أن ServBay يدعم تهيئة شهادات SSL للمواقع المحلية تلقائياً (باستخدام ServBay User CA أو ServBay Public CA)، يمكنك اختبار موقعك مباشرة عبر HTTPS. هذا يساعدك على اكتشاف مشاكل SSL المحتملة في وقت مبكر. لمزيد عن SSL في ServBay، راجع: تأمين الموقع باستخدام SSL.
نشر نسخة الإنتاج (اختياري)
عندما يكون مشروعك جاهزًا للنشر، قد ترغب في تشغيله في وضع الإنتاج لتحصل على أداء أفضل وتقليل رسائل التصحيح.
تشغيل خادم الإنتاج
من مجلد المشروع، شغّل التطبيق في وضع الإنتاج بتحديد المنفذ (مثلاً
8586
) وتعيين متغير البيئةNODE_ENV
إلىproduction
:bashcd /Applications/ServBay/www/servbay-loopback-app PORT=8586 NODE_ENV=production npm start
1
2ضبط موقع ServBay (وكيل عكسي)
انتقل مجددًا إلى لوحة التحكم في ServBay وعدل أو أضف موقع وكيل عكسي يشير إلى تطبيق LoopBack العامل على المنفذ الجديد:
- الاسم (Name): مثلاً
موقع الإنتاج الأول لـ LoopBack
- الدومين (Domain): مثلاً
servbay-loopback-prod.servbay.demo
- نوع الموقع (Type): وكيل عكسي (Reverse Proxy)
- العنوان IP:
127.0.0.1
- المنفذ (Port):
8586
(منفذ الإنتاج)
احفظ التعديلات وفعّلها.
- الاسم (Name): مثلاً
الوصول إلى التطبيق في وضع الإنتاج
افتح المتصفح وانتقل إلى الدومين الخاص بالإنتاج، مثلاً:
https://servbay-loopback-prod.servbay.demo/ping
ستحصل على دعم HTTPS تلقائيًا عبر ServBay.
ربط قواعد البيانات
يدعم إطار LoopBack ربط عدة أنواع من قواعد البيانات من خلال موصلات مصادر البيانات. يوفر ServBay باقات لمجموعة من قواعد البيانات كالـ MySQL وMariaDB وPostgreSQL وMongoDB وRedis، مما يتيح لك تشغيل قواعد البيانات وتهيئة الاتصال بها من مشروعك بسهولة.
فيما يلي أمثلة لضبط الاتصال ببعض قواعد البيانات المدعومة من ServBay. عدل الإعدادات حسب حاجتك.
ملاحظة هامة: بيانات المستخدم وكلمة المرور في الأمثلة التالية مجرد نماذج. ينبغي عليك دائماً استخدام كلمة المرور الحقيقية أو بيانات الاعتماد الأخرى التي ضبطتها في ServBay. يمكنك إدارة المستخدمين عبر لوحة تحكم ServBay.
الاتصال بـ MongoDB
تأكد أولاً من تثبيت وتشغيل حزمة MongoDB ضمن ServBay. ثبّت موصل LoopBack الخاص بـ MongoDB:
bashnpm install --save @loopback/connector-mongodb
1بعدها عدل إعدادات مصدر البيانات (عادة ضمن
src/datasources/mongodb.datasource.ts
أو ملف مشابه):typescript// src/datasources/mongodb.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mongodb', connector: 'mongodb', // MongoDB في ServBay يعمل افتراضيًا على localhost:27017 url: 'mongodb://localhost:27017/servbay-loopback-app', // استبدل باسم قاعدة بياناتك host: 'localhost', port: 27017, user: '', // أدخل اسم المستخدم في حال تفعيل المصادقة password: '', // أدخل كلمة المرور إذا لزم الأمر database: 'servbay-loopback-app', // استبدل باسم قاعدة بياناتك // إعدادات إضافية... }; export class MongodbDataSource extends juggler.DataSource { static dataSourceName = 'mongodb'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22الاتصال بـ Redis
تأكد من تثبيت وتشغيل حزمة Redis ضمن ServBay. ثبّت موصل LoopBack الخاص بـ Redis (لاحظ أن LoopBack لا يملك موصل رسمي باسم
@loopback/connector-redis
حتى الآن، ويستخدم غالبًا المجتمع موصلات مثلloopback-connector-redis
أو حتى مكتبة Node.jsredis
مع خدمات LoopBack):bashnpm install --save loopback-connector-redis # أو أي مكتبة Redis متوافقة
1ثم اضبط إعدادات مصدر البيانات (مثال باستخدام
loopback-connector-redis
):typescript// src/datasources/redis.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'redis', connector: 'redis', // يعمل Redis في ServBay على المنفذ 6379 url: 'redis://localhost:6379', // إعدادات إضافية... }; export class RedisDataSource extends juggler.DataSource { static dataSourceName = 'redis'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17ملاحظة: طريقة استخدام مصادر البيانات في LoopBack 4 تختلف قليلاً عن LoopBack 3. هذا المثال يعبر عن نهج LoopBack 3 بشكل مبسط. في LoopBack 4، يُفضل استخدام الديكور
@datasource
من@loopback/repository
وطرق ضبط حديثة. لكن تظل معايير الربط مثلhost
,port
,user
,password
,database
شائعة على كل حال.الاتصال بـ MariaDB (أو MySQL)
تأكد من تثبيت وتشغيل حزمة MariaDB أو MySQL ضمن ServBay. يدعم LoopBack موصل MySQL المتوافق أيضًا مع MariaDB.
ثبّت موصل LoopBack لـ MySQL:
bashnpm install --save @loopback/connector-mysql
1ثم عدل إعدادات مصدر البيانات:
typescript// src/datasources/mariadb.datasource.ts أو mysql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'mariadb', // أو 'mysql' connector: 'mysql', // استخدم موصل mysql // url: '', // يمكنك استخدام صيغة url أو الإعدادات المنفصلة host: 'localhost', // يعمل ServBay DB افتراضيًا على localhost port: 3306, // المنفذ الافتراضي لماريا دي بي/ماي إس كيو إل user: 'root', // المستخدم الافتراضي غالبًا root password: 'password', // << استبدل بكلمة مرور قاعدة بياناتك في ServBay >> database: 'servbay_loopback_app', // استبدل باسم قاعدة بياناتك // إعدادات إضافية... }; export class MariaDbDataSource extends juggler.DataSource { static dataSourceName = 'mariadb'; // أو 'mysql' constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21تنبيه: قيمة
password: 'password'
هنا توضيحية فقط. عليك مراجعة أو تعيين كلمة مرور المستخدم root أو المستخدم المطلوب عن طريق لوحة تحكم قواعد البيانات في ServBay ووضعها هنا.الاتصال بـ PostgreSQL
تأكد من تثبيت وتشغيل حزمة PostgreSQL ضمن ServBay. ثبت موصل LoopBack الخاص بـ PostgreSQL:
bashnpm install --save @loopback/connector-postgresql
1ثم عدل إعدادات مصدر البيانات:
typescript// src/datasources/postgresql.datasource.ts import {juggler} from '@loopback/repository'; const config = { name: 'postgresql', connector: 'postgresql', // url: '', // يمكنك استخدام url أو الإعدادات الفردية host: 'localhost', // يعمل PostgreSQL في ServBay على localhost port: 5432, // المنفذ الافتراضي user: 'user', // << استبدل باسم المستخدم في ServBay >> password: 'password', // << استبدل بكلمة مرور المستخدم في ServBay >> database: 'servbay_loopback_app', // استبدل باسم قاعدة البيانات // إعدادات إضافية... }; export class PostgresqlDataSource extends juggler.DataSource { static dataSourceName = 'postgresql'; constructor() { super(config); } }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21تنبيه:
user: 'user'
وpassword: 'password'
هنا توضيحيان فقط. عليك استخدام اسم المستخدم وكلمة المرور الحقيقية اللذين عينتهما أو حصلت عليهما من إدارة قواعد بيانات ServBay.
ملخص
باتباعك الخطوات أعلاه، ستكون قد أنشأت وضبطت وشغلت مشروع LoopBack على بيئة ServBay المحلية. تعلمت كذلك كيفية الاستفادة من خاصية "المواقع" (وكيل عكسي) للوصول إلى تطبيقك، وربط LoopBack بعدة قواعد بيانات مدعومة.
توفر ServBay بيئة تطوير محلية ثابتة وسهلة لإطارات Node.js مثل LoopBack، مع تكامل خوادم الويب، وقواعد البيانات، ودعم عدة لغات برمجية، ما يبسط أعمال المطورين اليومية بشكل واضح. عبر الاستفادة من إدارة المواقع، ودعم SSL، وتكامل قواعد البيانات في ServBay، يمكنك جعل التطوير والاختبار المحلي أسرع وأكثر أمانًا.