لم تعد الكثير من التطبيقات التي تعمل على الأجهزة المحمولة، مع تقدم تقنيات مثل التخزين المحلّي Local storage على المتصفحات، تحتاج إلى الاستخدام الكثيف لقواعد البيانات؛ مع بقاء الحاجة للاتصال بخادوم بعيد يخزّن ويحدّث بيانات ضرورية مثل معلومات المستخدم، نتائج مسابقة أو غيرها من البيانات التي لا يمكن تخزينها على العميل. تأتي منصات خدمات النهاية الخلفية للأجهزة المحمولة Mobile Backend as a Service لحل هذا الإشكال:
تخزين بيانات على الخادوم لتوفيرها للأجهزة العميلة بأقل تكلفة. Parse التي تمتلكها فيس بوك هي إحدى هذه المنصات.
أعلنت فيس بوك في شهر يناير 2016 عن إغلاق المنصة مع فتح مصدر النهاية الخلفية ونشرها باسم Parse server ليستمر تطويرها ويمكن تثبيتها في أي بيئة تشغّل Node.js و MongoDB دون الاعتماد على منصة الشركة؛ على أن تتوقف المنصة التابعة للشركة في شهر يناير 2017.
يقدّم هذا الدليل تفاصيل تثبيت Parse server على خادوم أوبنتو 14.04؛ ويتوجّه ليكون مدخلا لتهجير التطبيقات من Parse أو لاستخدام النهاية الخلفية التي يوفرها في تطبيقات جديدة.
المتطلبات
سنفترض أن لديك خادوم أوبنتو 14.04 وحساب مستخدم بصلاحيات إدارية، غير المستخدم الجذر root
. تمكن مراجعة درس الإعداد الابتدائي لخادوم أوبنتو 14.04 لإعدادات نظام التشغيل. يتطلّب الدرس كذلك تثبيت MongoDB.
تأكد من إعداد المتطلبات ثم عد لهذا الدليل واتّبع الخطوات التالية.
الخطوة الأولى: تثبيت Node.js وأدوات التطوير
ابدأ بالانتقال إلى مجلد المستخدم الشخصي:
cd ~
سنستخدم مستودع Apt الذي توفره NodeSource عن طريق سكربت تثبيت النسخة المستقرة الأخيرة من Node.js (الإصدار 5.5.0
أثناء كتابة هذا الدليل). نزّل السكربت بالأمر التالي:
curl -sL https://deb.nodesource.com/setup_5.x -o nodesource_setup.sh
يمكنك، إن أردت، رؤية محتوى السكربت باستخدام nano
أو أي محرّر نصوص آخر:
nano ./nodesource_setup.sh
نفذ السكربت بصلاحيات إدارية مع استخدام خيار E-
لإخبار sudo
بالحفاظ على متغيرات النظام Environment variables الخاصّة بالمستخدم:
sudo -E bash ./nodesource_setup.sh
تُضاف مستودعات NodeSource إلى النظام بعد انتهاء السكربت، ويمكننا بالتالي استخدام apt-get
لتثبيت حزمة nodejs
. سنثبت حزمة التعريف build-essential
التي تتيح مجموعة من أدوات التطوير التي يمكن أن تكون مفيدة لنا في ما بعد، إضافة إلى نظام التحكّم في النسخ Git لنستخدمه في تنزيل المشروعات من GitHub:
sudo apt-get install -y nodejs build-essential git
الخطوة الثانية: تثبيت تطبيق Parse Server تجريبي
صُمّم Parse Server للعمل بالتزامن مع Express، وهو إطار عمل Node.js شائع الاستخدام لتطبيقات الويب، يسمح بتركيب عناصر البرمجيات الوسيطة Middleware المستجيبة لتعريف واجهة تطبيقات برمجية API على مسار محدَّد. يحوي مستودع parse-server-example
على GitHub مثالا لتطبيق يتبع هذا النمط في تصميم البرامج.
انسخ المستودع باستخدام git
على النحو التالي:
git clone https://github.com/ParsePlatform/parse-server-example.git
ادخل إلى مجلد parse-server-example
الذي نسخته للتو:
cd ~/parse-server-example
ثم استخدم npm
لتثبيت الاعتماديات بما فيها parse-server
في المجلد الحالي:
npm install
سيعثُر npm
على جميع الوحدات Modules المطلوبة لـ parse-server
ثم يخزّنها على المسار parse-server-example/node_modules/~
.
الخطوة الثالثة: اختبار التطبيق التجريبي
استخدم أمر npm
لبدء تشغيل الخدمة. يُنفَّذ الأمر المعرَّف في خاصية start
من ملف package.json
؛ أي في هذه الحالة node index.js
:
npm start
مخرجات الأمر:
> parse-server-example@1.0.0 start /home/sammy/parse-server-example > node index.js DATABASE_URI not specified, falling back to localhost. parse-server-example running on port 1337.
يمكن إنهاء تشغيل التطبيق في أي وقت بالضغط على الزرين Ctrl
وC
.
يمرّر تطبيق Express المعرَّف في index.js
طلبات HTTP إلى وحدة parse-server
التي تتواصل مع قاعدة بيانات MongoDB وتطلُب تنفيذ الدوال المعرَّفة في الملف parse-server-example/cloud/main.js/~
.
نقطة النهاية Endpoint المبدئية لواجهة تطبيقات Parse Server في هذا المثال هي:
http://your_server_IP/parse
يمكن استخدام أمر curl
في سطر أوامر آخر، أثناء عمل التطبيق، لتجربة نقطة النهاية. تأكد أولا من تسجيل دخولك إلى الخادوم إذ أن هذه الأوامر تستدعي المضيف المحلّي localhost
بدلا من عنوان IP آخر.
أنشئ تسجيلة Record بإرسال طلب POST
مع ترويسة X-Parse-Application-Id
لتحديد التطبيق، إضافة لبيانات أخرى بصيغة JSON
:
curl -X POST \ -H "X-Parse-Application-Id: myAppId" \ -H "Content-Type: application/json" \ -d '{"score":1337,"playerName":"Sammy","cheatMode":false}' \ http://localhost:1337/parse/classes/GameScore
مخرجات الأمر:
{"objectId":"fu7t4oWLuW","createdAt":"2016-02-02T18:43:00.659Z"}
تُخزَّن البيانات المرسَلة في قاعدة بيانات MongoDB ويمكن إيجادها بإرسال طلب GET
باستخدام curl
مرة أخرى:
curl -H "X-Parse-Application-Id: myAppId" http://localhost:1337/parse/classes/GameScore
مخرجات الأمر:
{"results":[{"objectId":"GWuEydYCcd","score":1337,"playerName":"Sammy","cheatMode":false,"updatedAt":"2016-02-02T04:04:29.497Z","createdAt":"2016-02-02T04:04:29.497Z"}]}
استدع الدالة hello
المعرَّفة في الملف parse-server-example/cloud/main.js/~
باستخدام واجهة التطبيقات البرمجية:
curl -X POST \ -H "X-Parse-Application-Id: myAppId" \ -H "Content-Type: application/json" \ -d '{}' \ http://localhost:1337/parse/functions/hello
مخرجات الأمر:
{"result":"Hi"}
الخطوة الرابعة: إعدادات التطبيق التجريبي
اضغط على Ctrl
وC
في نافذة سطر الأوامر الأولى لإيقاف تطبيق Parse Server. يمكن إعداد التطبيق باستخدام ستة متغيرات نظام يبينها الجدول التالي.
المتغير | الوصف |
---|---|
DATABASE_URI
|
مسار الاتصال بقاعدة بيانات MongoDB، مثلاmongodb://localhost:27017/dev
|
CLOUD_CODE_MAIN
|
مسار إلى ملف يحوي الشفرة المصدرية لدوال Cloud Code الخاصّة بـParse |
APP_ID
|
سلسلة محارف لتعريف التطبيق، مثلا myAppId. |
MASTER_KEY
|
مفتاح سري رئيس يمكّن من تجاوز جميع آليات الأمان في التطبيق. |
PARSE_MOUNT
|
المسار الذي توجد عليه واجهة تطبيقات Parse Server |
PORT
|
المنفذ الذي ينصت عليه التطبيق، مثلا 1337
|
ننفذ أمر export
قبل تشغيل التطبيق لإعداد متغيرات النظام، مثلا:
export APP_ID=fooApp
يمكننا إنشاء نسخة أسهل من التطبيق لأخذ صورة عن آلية العمل. أنشئ ملف سكربت جديدا:
nano my_app.js
ثم ألصق الشفرة التالية مع تغيير القيم بما يناسب:
var express = require('express'); var ParseServer = require('parse-server').ParseServer; // إعداد واجهة التطبيقات البرمجية var api = new ParseServer({ databaseURI: 'mongodb://localhost:27017/dev', cloud: __dirname + '/cloud/main.js', appId: 'myOtherAppId', masterKey: 'myMasterKey' }); var app = express(); // ضبط مسار التطبيق app.use('/myparseapp', api); // الإنصات للاتصالات القادمة على المنفذ 9999 var port = 9999; app.listen(port, function() { console.log('parse-server-example running on port ' + port + '.'); });
احفظ الملف ثم نفذ الأمر التالي بعد إغلاقه:
node my_app.js
مخرجات الأمر:
parse-server-example running on port 9999.
يمكنك في أي وقت إيقاف التطبيق بالضغط على Ctrl
وC
. يعمل my_app.js
بنفس الطريقة التي يعمل بها index.js
تقريبا، مع فرق أنه ينصت على المنفذ 9999
مع تركيب Parse Server على المسار myparseapp/
بحيث يصبح مسار نقطة النهاية كما يلي:
http://yourserverIP:9999/myparseapp
يمكن تجربتها بـاستخدام curl
على النحو التالي:
curl -H "X-Parse-Application-Id: myOtherAppId" http://localhost:9999/myparseapp/classes/GameScore
خاتمة
قدّمنا في هذا الدرس أساسيات تشغيل تطبيق Node.js مثل Parse Server على أوبنتو. يتطلّب تهجير تطبيق من Parse حذرا أكبر وربما تعديلات على الشفرة البرمجية ويجب أن يُستعدّ له جيدا من ناحية تهيئة البنية التحتية.
ترجمة -وبتصرّف- للمقال How To Run Parse Server on Ubuntu 14.04 لصاحبه Brennen Bearnes.
أفضل التعليقات
لا توجد أية تعليقات بعد
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.