إذن، قررت استخدام MongoDB، وهو خيار رائع alternative to MariaDB لبناء تطبيق MERN stack، أو منصة تحليلات، أو أي نظام قائم على المستندات، لكنك وجدت نفسك أمام طريق مسدود بسبب أوامر Linux وأخطاء الطرفية التي لا تنتهي.
لا داعي للقلق، فهذا الدليل يغطي كل ما تحتاج إلى معرفته من الألف إلى الياء لتثبيت MongoDB على Ubuntu.
MongoDB يستخدم X.Y.Z الإصدارات. 8.0 هو رئيسي سلسلة الإصدارات، و 8.2 هو ثانوي إصدار ضمن دورة الإصدار 8.0 ذاتها. تضيف الإصدارات الثانوية ميزات جديدة داخل نفس الدورة الرئيسية، وابتداءً من الإصدار 8.0، أصبح بالإمكان تثبيتها على البنية التحتية المحلية لحالات استخدام محددة (مثل البحث والبحث المتجهي). MongoDB 8.0 على Ubuntu يدعم 24.04 (Noble) و22.04 (Jammy) و20.04 (Focal) على الأنظمة ذات ٦٤ بت، مع دعم ARM64 على منصات مختارة.
المتطلبات الأساسية: GnuPG وCurl
قبل تثبيت الإصدار الرسمي mongodb-org الحزمة Ubuntu تتطلب شرطين أساسيين: GnuPG و Curlهذه الأدوات تمنح Ubuntu صلاحية تنزيل MongoDB، لأن Ubuntu نفسه mongodb الحزمة غير مُدارة من قِبل MongoDB Inc. وتتعارض مع الرسمية mongodb-org الحزمة. إذا كنت قد قمت بتثبيت mongodb تأكد من إلغاء تثبيته.
بعد ذلك، نفّذ الأمر sudo apt-get install gnupg curl. Curl أداة لتنزيل الملفات من الإنترنت، وهي ضرورية لاسترداد مفتاح الأمان الخاص بـ MongoDB. أما GnuPG فيستخدمه Ubuntu للتحقق من صحة البرامج. إذا لم يكن GnuPG مثبتاً، فلن يتمكن Ubuntu من التحقق من حزم MongoDB.
تحقق من أن الطرفية نجحت في تثبيت GnuPG وCurl. إذا تم ذلك بنجاح، ستبدو النتيجة على النحو التالي:
استيراد مفتاح GPG الخاص بـ MongoDB
يستخدم مدير الحزم APT في Ubuntu مفاتيح GPG للتحقق من الحزم قبل تثبيتها. بدون هذا المفتاح، لن يسمح Ubuntu بإضافة مستودعات MongoDB. اكتب الأمر التالي في الطرفية لإضافة المفتاح:
curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \
--dearmor
إذا نجح الأمر، ستبدو مخرجات الطرفية على النحو التالي:
باختصار، يقوم هذا الأمر بتنزيل التوقيع الأمني لـ MongoDB، وتحويله إلى صيغة يستطيع Ubuntu قراءتها، ثم حفظه في مجلد نظام آمن. فيما يلي شرح لكل جزء من سطر الأمر:
- curl -fsSL رابط يُنزّل المفتاح الرسمي لـ MongoDB
- –dearmor يحوّل المفتاح من صيغة نصية إلى صيغة ثنائية ليتمكن Ubuntu من قراءته
- -o /usr/share/keyrings/mongodb-server-8.0.gpg يحفظ الملف الثنائي في المجلد الذي يخزن فيه Ubuntu المفاتيح الموثوقة
إذا نفّذت جميع الأوامر بدقة، سيُضاف مفتاح GPG العام دون أي مشكلات. غير أن بعض المستخدمين يواجهون أخطاءً عند تنزيل MongoDB بسبب عدم تطابق مفتاح GPG. أخطاء من قبيل:
NO_PUBKEY
The following signatures couldn't be verified
public key not available
تظهر حين لا تتّبع أوامر مفتاح GPG السابقة بالضبط، وتستخدم بدلاً منها sudo apt-key لأن الإصدارات الحديثة من Ubuntu لا توصي باستخدامه.
إضافة مستودع MongoDB
إضافة مستودع MongoDB تُنشئ ملفاً يُخبر Ubuntu بأن حزم MongoDB متاحة على عنوان إنترنت محدد. أنشئ ملف القائمة في /etc/apt/sources.list.d/mongodb-org-8.0.list عن طريق كتابة سطر المستودع فيه باستخدام echo … | sudo tee …
هنا تصبح الأمور أكثر تعقيداً، إذ تتطلب كل نسخة من Ubuntu صيغة مختلفة من هذا الأمر. سنستعرض الآن كيفية استيراد ملف القائمة في كل نسخة من النسخ الثلاث لـ Ubuntu المذكورة سابقاً.
Ubuntu 24.04 (Noble)
لإنشاء ملف القائمة على Ubuntu 24.04، ضع ببساطة echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list على طرفيّتك.
قد يبدو هذا الأمر معقداً للوهلة الأولى، لكن لا تقلق. سنقوم بتقسيم الأمر إلى أجزاء، وعندها سيصبح واضحاً تماماً.
- echo يطبع نصاً
- /etc/apt/sources.list.d هو المجلد الذي يخزن فيه Ubuntu تعريفات مصادر البرامج. كل ملف بامتداد .list تنسيق داخل المجلد يوجّه Ubuntu إلى موقع محدد لتنزيل البرنامج منه
- لا يمكنك الكتابة في مجلدات النظام افتراضياً بوصفك مستخدماً عادياً. تي شيرت تمنح المستخدم صلاحية خاصة لكتابة النص في ملفات النظام، عند استخدام sudo
- نبيل هو الاسم الرمزي لـ Ubuntu 24.04. لكل إصدار من Ubuntu اسم رمزي، مثل:
| الإصدار | اسم الكود |
| 20.04 | فوكال |
| 22.04 | Jammy |
| 24.04 | نبيل |
إذا لم تُطابق إصدار Ubuntu مع سطر الأوامر الصحيح، فلن يتعرف Ubuntu على مستودع MongoDB.
Ubuntu 22.04 (Jammy)
إضافة ملف القائمة إلى Ubuntu Jammy تبدو بنفس الطريقة، لكن يجب إدخال سطر الأوامر مع استبدال نبيل مع jammy، كما يلي:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
تأكد من أن هذا الإصدار يطابق نسخة Ubuntu لديك، وإلا فستفشل العملية مجدداً.
Ubuntu 20.04 (Focal)
اتبع نفس الخطوات هنا، لكن بدلاً من نبيل or jammy، ضع focal:
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list
بعد إعداد المستودع، يمكنك المتابعة لتثبيت mongodb-org.
تحديث قاعدة بيانات الحزم
بعد أن أصبح المستودع معروفاً لـ Ubuntu، تحتاج إلى إعادة تحميل قاعدة بيانات الحزم داخله، لكي تشمل MongoDB من الآن فصاعداً. نفّذ الأمر التالي:
sudo apt-get update
هذا الأمر موحّد عبر جميع إصدارات Ubuntu، وإن تخطّيته، لن تتعرف Ubuntu على MongoDB. إذا نجح الأمر، ستظهر في طرفيتك النتيجة التالية:
الآن، بعد إعادة تحميل قاعدة بيانات الحزم، حان وقت تنزيل حزم MongoDB.
تثبيت MongoDB Community Server
تتوفر إصدارات متعددة من MongoDB للتثبيت، غير أن معظم المستخدمين يختارون أحدث إصدار مستقر كونه الخيار الأنسب. لتثبيت أحدث إصدار مستقر، نفّذ sudo apt-get install -y mongodb-org
قامت Ubuntu الآن بتنزيل حزم MongoDB وتثبيتها، وأنشأت حساب مستخدم MongoDB ومجلد البيانات الخاص به، وسجّلت MongoDB كخدمة نظام. بهذا نكون قد أتممنا تثبيت MongoDB على Ubuntu. والآن، لنقم بتشغيله.
كيفية تشغيل MongoDB
لتشغيل MongoDB، تحتاج إلى إخبار مدير الخدمات في Ubuntu وهو "systemd" بأن يتعامل مع MongoDB كخدمة تعمل في الخلفية. للقيام بذلك، اكتب الأمر التالي في طرفيتك:
sudo systemctl start mongod
إذا نجح الأمر، ستشغّل Ubuntu تطبيق MongoDB في الخلفية. أما إذا لم ينجح، فقد تظهر لك رسالة خطأ مشابهة لـ فشل في بدء mongod.service.
قد يحدث هذا بسبب عدة مشكلات شائعة:
- خطأ في ملف الإعدادات in /etc/mongod.conf (أخطاء المسافات البادئة في YAML شائعة الحدوث)
- تعارض في المنفذ (المنفذ 27017 مشغول بالفعل)
- مشكلة في الأذونات على مجلدات البيانات أو السجلات (var/lib/mongodb أو var/log/mongodb)
- القرص ممتلئ or تلف في نظام الملفات
ثلاثة أوامر لتشخيص المشكلة
قد يكون من السهل تخمين سبب عدم تشغيل MongoDB، لكن تحديد السبب الدقيق أمر آخر. إليك ثلاث طرق للكشف عن مصدر الخطأ:
- التحقق من حالة الخدمة: sudo systemctl status mongod –no-pager
- فحص السجلات التفصيلية (الأهم): sudo journalctl -u mongod –no-pager -n 100
- فحص ملف سجل MongoDB الخاص
تجدر الإشارة إلى أنه إذا كان القرص ممتلئاً أو كانت ملفات النظام تالفة، فإن الحل يتعلق بالأجهزة لا بالبرمجيات. قد يحتاج المستخدمون إلى ترقية أجهزة خادمهم لتشغيل MongoDB بكفاءة إذا كان إعدادهم الحالي قديماً.
إذا كان شراء خادم كامل خارج ميزانيتك، فألقِ نظرة على Cloudzy Ubuntu VPS للحصول على بيئة نظيفة على خادمك الخاص مع توزيعة Ubuntu من اختيارك. يأتي مع 24/7 دعم وسرعة شبكة تصل إلى 40Gbps سرعة الشبكة، بفضل تخزين NVMe SSD و DDR5 RAM تخزين.
علاوة على ذلك، يتميز بزمن استجابة منخفض، 99.95% وقت تشغيل، و ١٤ يوماً ضمان استرداد الأموال. والأهم من ذلك أنه متاح في 12 موقعاً حول العالم بسعر مناسب.
أبرز ثلاثة حلول لتشغيل MongoDB
لا توجد طريقة واحدة تكفي لتشخيص مشكلة MongoDB وإصلاحها في خطوة واحدة. إليك أكثر الحلول شيوعاً التي قد تساعدك على تشغيل MongoDB.
- خطأ في مسافات البادئة بملف إعداد YAML. لنفترض أنك عدّلت /etc/mongod.conf أعِد التحقق من المسافات البادئة عبر الأمر التالي sudo nano /etc/mongod.conf. الملف YAML حساس جداً للمسافات، لذا تأكد من أن كل مستوى يحتوي على مسافتين فقط في /etc/mongod.conf.
- المنفذ 27017 مشغول. إذا كان برنامج آخر يستخدم المنفذ 27017، أوقفه أو غيّر منفذ MongoDB في mongod.conf. إذا لم تكن متأكداً مما يعمل على المنفذ 27017، يمكنك تشغيل الأمر sudo ss -lntp | grep 27017 للتحقق من ذلك
- مشكلة في صلاحيات مجلد البيانات. في بعض الأحيان لا تملك MongoDB الصلاحيات الكافية للتشغيل على نظامك، مما يمنعها من العمل كلياً. شغّل أولاً sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb، ثم أعد تشغيل MongoDB بالأمر sudo systemctl restart mongod
وفقاً لـ الموقع الرسمي لـ MongoDB، وهناك طريقة أخرى للتعامل مع هذه المشكلة، وهي إعادة تحميل الـ daemon بالأمر sudo systemctl daemon-reload، ثم تشغيل الأمر الأول، sudo systemctl start mongod، مرة أخرى.
إذا لم يكن هناك mongod.service، فهذا يعني أن عملية التثبيت لم تضع وحدة systemd، لذا أعد تثبيت حزمة mongodb-org .
بعد كل ما سبق، يمكنك التحقق من نجاح تشغيل MongoDB بالأمر sudo systemctl status mongod. إذا أظهر الطرفية نشط (قيد التشغيل)، أنت جاهز للبدء. لكن ثمة بعض الإعدادات الإضافية التي ستجعل تجربتك أكثر سلاسةً.
أتمتة MongoDB
لا يعمل MongoDB تلقائياً عند كل تشغيل للخادم؛ ستحتاج إلى تكرار بعض الخطوات السابقة في كل مرة. يمكنك اختيارياً إعداد Ubuntu لتشغيل MongoDB تلقائياً بعد تحميل سطح المكتب.
نفّذ ببساطة sudo systemctl enable mongod في الطرفية، وسيُخبر ذلك النظامَ بتشغيل MongoDB تلقائياً بعد كل إعادة تشغيل. كما يمكنك إعادة تشغيل عملية mongod بإصدار الأمر sudo systemctl restart mongod. علاوةً على ذلك، يمكن للمستخدمين تتبع أي أخطاء أو رسائل مهمة من خلال مراجعة المخرجات في الملف:
/var/log/mongodb/mongod.log
بعد اكتمال الإعداد، لنبدأ باستخدام mongod.
فتح واجهة MongoDB
للتفاعل مع قاعدة البيانات، يجب على المستخدمين فتح واجهة MongoDB بإصدار الأمر mongosh. فكّر فيها كطرفية أوامر مخصصة لـ MongoDB أو كوحدة تحكم MySQL. يمكنك أيضاً التفاعل مع MongoDB عبر أدوات واجهة رسومية كبرامج تشغيل MongoDB. أما إن أردت التفاعل معه من الطرفية، mongosh فهذا هو الأمر المناسب لذلك.
سيعمل MongoDB الآن بشكل كامل، غير أن ثمة خطوات إضافية يجب مراعاتها لتأمينه.
تفعيل المصادقة في MongoDB
لا يتضمن MongoDB حماية بكلمة مرور افتراضياً، إذ يُفترض أن يكون لديك وصول مسبق لإنشاء مستخدم. إليك طريقة بسيطة للقيام بذلك:
إنشاء مستخدم مسؤول
أولاً، انتقل إلى قاعدة بيانات المسؤول بالأمر:
use admin
ثم أنشئ مستخدماً باستخدام db.createUser({…}). أدخل فيه
- اسم المستخدم
- كلمة المرور
- الدور
بالنسبة للدور، يُفضَّل كتابة root وهو ما يعني التحكم الكامل أو صلاحيات المسؤول.
تفعيل المصادقة
الآن بعد أن أنشأنا المستخدم الخاص بنا، نحتاج إلى تعديل ملف /etc/mongod.conf لأن هذا الملف يتحكم في طريقة عمل MongoDB. ضع في اعتبارك أنك بعد تعديل هذا الملف يجب دائماً إعادة تشغيل خدمة mongod باستخدام sudo systemctl restart mongod. ما نحتاج إلى تغييره هنا هو معامل يُسمى authorization ويبدو كالتالي:
security:
authorization:
لإتمام عملية المصادقة، ما عليك سوى تغيير قيمة authorization على النحو التالي:
security:
authorization: enabled
من الآن فصاعداً، يتطلب MongoDB تسجيل الدخول، وبذلك تكون المصادقة قد اكتملت. لننتقل الآن إلى إعداد آخر يستفيد من إمكانات MongoDB بالكامل.
فتح منفذ جدار الحماية
كما أشرنا سابقاً، يعمل MongoDB على المنفذ 27017. بما أن جدار الحماية يحجب المنافذ بشكل افتراضي، عليك إخباره بالسماح للتطبيقات بالعمل على المنفذ 27017. لتحقيق ذلك، نفِّذ الأمر التالي:
ufw allow from YOUR_IP to any port 27017
بدلاً من ذلك، يمكنك أيضاً تنفيذ الأمر ufw allow 27017، لكن كن حذراً، لأن تنفيذ هذا الأمر سيسمح لأي جهاز على الإنترنت بالوصول إلى هذا المنفذ. الخيار الأول هو الأكثر أماناً على الأرجح، إذ يقصر الوصول إلى المنفذ على عنوان IP الخاص بك فقط.
قد يواجه المستخدمون بعض التحديات عند تشغيل MongoDB، كمشكلة الوصول عن بُعد. تابع القراءة لمعرفة كيفية حلها.
مشكلة الوصول عن بُعد
يُشغَّل MongoDB بالمعامل bindIp. bindIp يحصر MongoDB على 127.0.0.1، مما يسمح بالاتصالات المحلية فقط. لذلك، إذا حاولت الاتصال بخادم MongoDB من موقع آخر، فلن يُمنح لك الوصول، إذ يُهيَّأ MongoDB افتراضياً للسماح بالاتصالات المحلية فقط ما لم يُعدَّل هذا الإعداد.
مجدداً، توجّه إلى /etc/mongod.conf، وستجد ثلاثة أسطر كالتالي:
net:
port: 27017
bindIp: 127.0.0.1
إذا أردت السماح بالاتصالات عن بُعد للمستخدم mongod ، فعدّل القيم الموضحة أعلاه على النحو التالي:
net:
port: 27017
bindIp: 0.0.0.0
بعد ذلك، أعد تشغيل خدمة mongod باستخدام sudo systemctl restart mongod كما تفعل مع أي تعديل آخر تجريه على الملف.
لقد منحت خدمة mongod صلاحية قبول الاتصالات عن بُعد. لكن كن حذراً، فهذا الإجراء سيعرّض قاعدة بياناتك للإنترنت بالكامل إن لم تكن قد ضبطت المصادقة للمستخدم mongod بعد. ثمة الكثير من البوتات التي تفحص باستمرار منافذ MongoDB المفتوحة، لذا تأكد دائماً من أن مستخدم mongod لديه كلمة مرور.
ملخص عام
تهانينا، لقد أتممت جميع الخطوات اللازمة لإعداد خدمة MongoDB محسّنة لنظام Ubuntu. فيما يلي خريطة ذهنية تتتبع كل خطوة وردت في هذا المقال.
| الأمر | الوظيفة |
| تحديث apt | تحديث قائمة الحزم |
| تثبيت apt | تثبيت البرامج |
| curl | تنزيل ملف |
| gpg | إدارة مفاتيح التشفير |
| echo | طباعة نص |
| تي شيرت | الكتابة إلى ملف محمي |
| systemctl start | تشغيل الخدمة |
| تفعيل الخدمة عند الإقلاع | بدء التشغيل عند الإقلاع |
| حالة systemctl | التحقق من الخدمة |
| mongosh | الدخول إلى shell الخاص بـ MongoDB |
| تحرير /etc/mongod.conf | تفعيل المصادقة |
| ufw | إدارة جدار الحماية |
| bindIp | السماح بالوصول عن بُعد |
هذا من شأنه أن يساعدك على فهم العملية بأكملها. لكن إن كان إعداد MongoDB بنفسك أمرًا مرهقًا، فلا تتردد في تشغيل MongoDB VPS للحصول على خادم Ubuntu 24.04 LTS خاص بك مع تثبيت MongoDB مسبقًا.
يأتي مع 99.95% uptime, 24/7 دعم، و ١٤ يوماً ضمان استرداد الأموال. علاوةً على ذلك، يدعم ما يصل إلى 40 Gbps من النطاق الترددي بفضل DDR5 RAM و تخزين NVMe SSD من التخزين. ولا داعي للقلق بشأن موقعك الجغرافي، فهو متاح أيضًا في 12 موقعاً حول العالم بسعر مناسب.
بعد كل ما سبق، تكون قد نجحت في إعداد خدمة MongoDB الخاصة بك بالكامل، مزوّدةً بجميع الإعدادات اللازمة لدعم أحمال العمل والأعمال على مستوى الإنتاج.