البحث في الموقع
المحتوى عن 'parse server'.
-
لم تعد الكثير من التطبيقات التي تعمل على الأجهزة المحمولة، مع تقدم تقنيات مثل التخزين المحلّي 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.