لذا قررت استخدام 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 (نوبل)، 22.04 (جامي)، 20.04 (بؤري) على أنظمة 64 بت، مع دعم ARM64 على منصات مختارة.
المتطلبات الأساسية لـ GnuPG وCurl
قبل تثبيت المسؤول mongodb-org الحزمة، يتطلب Ubuntu شرطين أساسيين: GnuPG و حليقة. تمنح هذه الأدوات Ubuntu الإذن بتنزيل MongoDB، لأنها خاصة بـ Ubuntu com.mongodb لا تتم صيانة الحزمة بواسطة شركة MongoDB Inc. وتتعارض مع المسؤول mongodb-org طَرد. إذا كنت قد قمت بتثبيت بالفعل com.mongodb تأكد من إلغاء تثبيته.
بعد ذلك، قم بتشغيل الأمر sudo apt-get install gnupg curl. Curl هي أداة لتنزيل الملفات من الإنترنت وهي ضرورية لاسترداد مفتاح أمان MongoDB. GnuPG هو ما يستخدمه Ubuntu للتحقق من صحة البرنامج. إذا كان GnuPG مفقودًا، فسيفشل Ubuntu في التحقق من حزم MongoDB.
تأكد من تثبيت جهازك الطرفي لـ GnuPG وCurl بنجاح. إذا حدث ذلك، فيجب أن يبدو كما يلي:
استيراد مفتاح MongoDB GPG
يستخدم مدير حزم Ubuntu، APT، مفاتيح GPG للتحقق من الحزم قبل التثبيت. بدون مفتاح 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 قراءته، وحفظه في مجلد نظام آمن. فيما يلي تفاصيل قسم سطر الأوامر حسب القسم:
- حليقة -fsSL URL يقوم بتنزيل المفتاح الرسمي لـ MongoDB
- -عزيزي يحول المفتاح من تنسيق النص إلى تنسيق ثنائي لكي يفهمه 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 الدقيقة مسبقًا وتستخدمها بدلاً من ذلك سودو ملائمة مفتاح لأن Ubuntu الحديث لا ينصح به.
أضف مستودع MongoDB
تؤدي إضافة مستودع MongoDB إلى إنشاء ملف يخبر Ubuntu بأن حزم MongoDB موجودة على عنوان إنترنت محدد. قم بإنشاء ملف القائمة في /etc/apt/sources.list.d/mongodb-org-8.0.list عن طريق كتابة سطر المستودع فيه باستخدام صدى … | سودو تي…
هذا هو المكان الذي يصبح فيه الأمر صعبًا، نظرًا لأن الإصدارات المختلفة من Ubuntu تتطلب شكلاً مختلفًا لهذا الأمر. سندرس الآن كيفية استيراد ملف القائمة على الإصدارات الثلاثة من Ubuntu المذكورة سابقًا.
أوبونتو 24.04 (نوبل)
من أجل إنشاء ملف القائمة على Ubuntu 24.04، ببساطة صدى "deb [arch=amd64,arm64 Sign-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntuNoble/mongodb-org/8.0 الكون المتعدد" | سودو تي /etc/apt/sources.list.d/mongodb-org-8.0.list على المحطة الخاصة بك.
قد يبدو هذا مربكًا، لكن لا تقلق. بمجرد تقسيم الأمر إلى أقسام، سيكون الأمر واضحًا تمامًا.
- صدى طباعة النص
- /etc/apt/sources.list.d هو المجلد الذي يقوم Ubuntu بتخزين تعريفات مصدر البرنامج فيه. كل ملف مع .قائمة يشير التنسيق الموجود داخل المجلد إلى Ubuntu إلى موقع محدد لتنزيل البرنامج منه
- لا يمكنك كتابة أي شيء في مجلدات النظام بشكل افتراضي كمستخدم عادي. قمزة يمنح المستخدم إذنًا خاصًا لكتابة النص في ملفات النظام أثناء الاستخدام sudo
- النبيل هو الاسم الرمزي لـ Ubuntu 24.04. يحتوي كل إصدار من Ubuntu على اسم رمزي مثل:
| إصدار | الاسم الرمزي |
| 20.04 | بؤري |
| 22.04 | جامي |
| 24.04 | النبيل |
إذا لم تقم بمطابقة إصدار Ubuntu الخاص بك مع سطر الأوامر الصحيح، فسيفشل Ubuntu في التعرف على مستودع MongoDB.
أوبونتو 22.04 (جامي)
تبدو إضافة ملف القائمة إلى Ubuntu 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 الخاص بك، وإلا فسوف يفشل مرة أخرى.
أوبونتو 20.04 (البؤري)
اتبع نفس الخطوات هنا، ولكن بدلاً من ذلك النبيل or جامي، ضع في بؤري:
صدى "deb [arch=amd64,arm64sign-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu focus/mongodb-org/8.0 الكون المتعدد" | سودو تي /etc/apt/sources.list.d/mongodb-org-8.0.list
الآن بعد إعداد المستودع، يمكنك متابعة التثبيت mongodb-org.
قم بتحديث قاعدة بيانات الحزمة
الآن بعد أن تعرف Ubuntu على المستودع، تحتاج إلى إعادة تحميل قاعدة بيانات الحزمة بداخله، لذا من الآن فصاعدًا يتضمن MongoDB أيضًا. قم بإصدار الأمر المذكور أدناه:
sudo apt-get update
يظل هذا الأمر كما هو في كل إصدار من إصدارات Ubuntu، وإذا تم تخطيه، فلن يتضمن Ubuntu MongoDB. إذا قام الأمر بعمله، فيجب أن يكون الإخراج الطرفي الخاص بك:
الآن، بعد إعادة تحميل قاعدة بيانات الحزمة الخاصة بك، حان الوقت لتنزيل حزم MongoDB.
قم بتثبيت خادم مجتمع MongoDB
هناك العديد من إصدارات 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’s أوبونتو فس للحصول على تجربة نظيفة على خادمك الخاص مع توزيعة Ubuntu التي تفضلها. يأتي مع 24/7 دعم وما يصل إلى 40Gbps سرعة الشبكة، وذلك بفضل ان في مي اس اس دي و ذاكرة الوصول العشوائي DDR5 تخزين.
علاوة على ذلك، فهو يتميز بالحد الأدنى من زمن الوصول، 99.95% وقت التشغيل، و 14 يومًا ضمان استعادة الاموال. ليس هذا فحسب، بل إنه متوفر أيضًا في 12 المواقع في جميع أنحاء العالم وبأسعار في متناول الجميع.
ثلاثة إصلاحات شائعة لتشغيل MongoDB
لا توجد طريقة مطلقة للتعرف على المشكلة الدقيقة لنظامك مع MongoDB وإصلاحها بخطوة واحدة سهلة. إذن، إليك بعض الإصلاحات الشائعة التي يمكنك استخدامها لبدء تشغيل MongoDB.
- خطأ في المسافة البادئة لتكوين YAML. لنفترض أنك قمت بالتحرير /etc/mongod.conf أعد التحقق من المسافة البادئة عن طريق المطالبة سودو نانو /etc/mongod.conf. ملف YAML حساس جدًا للمسافات البيضاء، لذا تأكد من وجود مسافتين فقط لكل مستوى /etc/mongod.conf.
- المنفذ المحتل 27017. إذا كان هناك شيء آخر يستخدم المنفذ 27017، فأوقف تشغيله أو قم بتغيير منفذ MongoDB mongod.conf. إذا لم تكن متأكدًا من تشغيل أي شيء على المنفذ 27017، فلا تتردد في تشغيله سودو ss -lntp | جريب 27017 للتحقق من ذلك
- مشكلة الإذن في دليل البيانات. في بعض الأحيان يفتقر MongoDB إلى الإذن للتشغيل على نظامك، وبالتالي لا يعمل على الإطلاق. التشغيل الأول Sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb، ثم أعد تشغيل MongoDB باستخدام سودو systemctl إعادة تشغيل mongod
وفق الموقع الرسمي لMongoDBهناك طريقة أخرى للتغلب على هذه المشكلة وهي إعادة تحميل البرنامج الخفي باستخدام sudo systemctl daemon-reload، وقم بتشغيل الأمر الأول، سودو systemctl بدء mongod، مرة أخرى.
إذا لم يكن هناك mongod.service، التثبيت لم يضع وحدة systemd، لذا أعد تثبيت mongodb-org مجموعة الحزمة.
مع كل ما قيل، يمكنك بعد ذلك التحقق مما إذا كان MongoDB قد بدأ بنجاح أم لا حالة سودو systemctl mongod. إذا تقول المحطة نشط (قيد التشغيل)، أنت على ما يرام. ولكن لا تزال هناك بعض التكوينات الإضافية التي تجعل تجربتك أكثر سلاسة.
جعل MongoDB آليًا
لا يتم فتح MongoDB تلقائيًا في كل مرة تقوم فيها بتشغيل الخادم الخاص بك؛ سيكون عليك تكرار بعض الخطوات المذكورة في كل مرة. اختياريًا، يمكنك إخبار Ubuntu ببدء تشغيل MongoDB بعد التشغيل على سطح المكتب.
تشغيل ببساطة سودو systemctl تمكين mongod على جهازك، والذي، من الآن فصاعدًا، سيخبر نظامك بتشغيل MongoDB بعد كل عملية إعادة تشغيل. علاوة على ذلك، يمكنك إعادة تشغيل mongod العملية عن طريق إصدار الأمر سودو systemctl إعادة تشغيل mongod. بالإضافة إلى ذلك، قد يحتاج المستخدمون إلى متابعة العملية بحثًا عن أي أخطاء أو رسائل مهمة من خلال مراجعة الإخراج في الملف:
/var/log/mongodb/mongod.log
الآن بعد أن تم إعداد كل ذلك، فلنبدأ في استخدام mongod الخاص بك.
فتح MongoDB Shell
للتفاعل مع قاعدة البيانات الخاصة بهم، يجب على المستخدمين فتح MongoDB Shell عن طريق إصدار الأمر مونغوش. فكر في الأمر كمحطة موجه أوامر مخصصة لـ MongoDB أو وحدة تحكم MySQL. وبدلاً من ذلك، يمكنك التفاعل مع MongoDB باستخدام أدوات واجهة المستخدم الرسومية، مثل برامج تشغيل MongoDB. ولكن إذا كنت تريد التفاعل معها من خلال المحطة، مونغوش تم صنعه لتحقيق ذلك.
سيصبح الآن MongoDB الخاص بك يعمل بكامل طاقته، ولكن هناك بعض الخطوات الإضافية التي يجب عليك مراعاتها لجعله آمنًا.
قم بالمصادقة على MongoDB
لا يحتوي MongoDB افتراضيًا على حماية بكلمة مرور لأنه يجب أن يكون لديك حق الوصول بالفعل لإنشاء مستخدم. إليك طريقة بسيطة لتحقيق ذلك
إنشاء مستخدم إداري
أولاً، تحتاج إلى التبديل إلى قاعدة بيانات المسؤول باستخدام:
use admin
ثم قم بإنشاء مستخدم باستخدام db.createUser({…}). املأها بك
- اسم المستخدم
- كلمة المرور
- دور
بالنسبة للدور، يفضل الكتابة جذر وهو ما يعني السيطرة الكاملة أو المشرف.
تمكين المصادقة
الآن بعد أن أصبح لدينا إعداد المستخدم الخاص بنا، نحتاج إلى تعديل ملف /etc/mongod.conf ملف. وذلك لأن هذا الملف يتحكم في كيفية تصرف MongoDB. لكن ضع في اعتبارك أنه من خلال تحرير الملف، يجب عليك دائمًا إعادة تشغيل الملف mongod الخدمة بعد ذلك مع سودو systemctl إعادة تشغيل mongod. ما نحتاج إلى تغييره هنا هو معلمة واحدة تسمى التفويض والتي تبدو كما يلي:
security:
authorization:
لإكمال عملية المصادقة، ما عليك سوى تغيير قيمة التفويض على النحو التالي:
security:
authorization: enabled
من الآن فصاعدا، يتطلب MongoDB تسجيل الدخول، لذلك تم الانتهاء من المصادقة الخاصة بك. لننتقل الآن إلى تكوين آخر يستخدم MongoDB بشكل كامل.
افتح جدار الحماية الخاص بك
كما ذكرنا سابقًا، يعمل MongoDB على المنفذ 27017. وبما أن جدران الحماية تحظر المنافذ بشكل افتراضي، فيجب عليك إخبار جدار الحماية الخاص بك بالسماح بتشغيل التطبيقات على المنفذ 27017. ولتحقيق ذلك، ما عليك سوى إصدار الأمر:
ufw allow from YOUR_IP to any port 27017
وبدلاً من ذلك، يمكنك أيضًا إصدار الأمر ufw تسمح 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 الخدمة مع سودو systemctl إعادة تشغيل mongod كما هو الحال مع كل التعديلات الأخرى التي تجريها على الملف.
لقد منحت الآن الخاص بك mongod إذن الخدمة لقبول الاتصالات عن بعد. لكن كن حذرًا، لأنه من خلال القيام بذلك، ستعرض قاعدة البيانات الخاصة بك إلى الإنترنت بالكامل إذا لم تكن قد قمت بتوثيق بياناتك بعد mongod مستخدم. هناك العديد من برامج الروبوت التي تبحث باستمرار عن منافذ MongoDB المفتوحة، لذا تأكد دائمًا من أن مستخدم mongod لديه كلمة مرور.
ملخص الصورة الكبيرة
تهانينا، لقد قمت الآن بكل شيء لإنشاء خدمة MongoDB محسنة لنظام Ubuntu الخاص بك. وإليك أيضًا خريطة ذهنية لتتبع كل خطوة معروضة في هذه المقالة.
| يأمر | ماذا يفعل |
| تحديث مناسب | تحديث قائمة البرامج |
| تثبيت مناسب | تثبيت البرنامج |
| حليقة | تنزيل الملف |
| gpg | إدارة مفاتيح التشفير |
| صدى | طباعة النص |
| قمزة | الكتابة إلى الملف المحمي |
| بداية النظام | ابدأ الخدمة |
| تمكين Systemctl | البدء في التمهيد |
| حالة النظام | تحقق من الخدمة |
| مونغوش | أدخل قذيفة MongoDB |
| يحرر /etc/mongod.conf | تمكين المصادقة |
| ufw | إدارة جدار الحماية |
| bindIp | السماح بالوصول عن بعد |
من المفترض أن يساعدك ذلك على فهم العملية برمتها بشكل أفضل. ولكن إذا كان إعداد MongoDB بنفسك أمرًا صعبًا بالنسبة لك، فتأكد من تشغيل Cloudzy مونجودب فس لخادم Ubuntu 24.04 LTS الخاص بك مع MongoDB المثبت مسبقًا.
يأتي مع 99.95% وقت التشغيل, 24/7 الدعم، و أ 14 يومًا ضمان استعادة الاموال. وبصرف النظر عن ذلك، فهو يدعم ما يصل إلى 40 Gbps من عرض النطاق الترددي بفضل لها ذاكرة الوصول العشوائي DDR5 و ان في مي اس اس دي تخزين. ولا تقلق بشأن المكان الذي تعيش فيه، لأنه متوفر أيضًا فيه 12 مواقع في جميع أنحاء العالم بأسعار في متناول الجميع.
ولكن مع كل ما قيل، فقد تمكنت أخيرًا من إعداد خدمة MongoDB القادرة الخاصة بك والمجهزة بكل التكوين لدعم أعباء العمل والشركات على مستوى الإنتاج.