در این آموزش، نحوه نصب MongoDB با پشتیبانی از آخرین نسخه OpenSSL را در سیستم عامل لینوکس فدورا خواهید آموخت.

اگر قبلاً آن را نصب کرده اید، این آموزش به شما کمک می کند تا خطای پیکربندی مونگوش OpenSSL را برطرف کنید.

برای پیگیری، به یک ترمینال با دسترسی روت و اتصال اینترنت برای دانلود بسته ها نیاز دارید.

در اینجا چیزی است که ما پوشش خواهیم داد:

  • هسته اصلی مشکل
  • راه حل برای نصب MongoDB
  • درک خطای OpenSSL Mongosh
  • راه حلی برای رفع خطا در نصب های MongoDB موجود
  • نحوه نصب MongoDB با پشتیبانی OpenSSL 3 از ابتدا
  • نتیجه

هسته اصلی مشکل

اگر از مستندات رسمی MongoDB بازدید کنید و به دنبال دستورالعمل‌هایی در مورد نحوه نصب آن در سیستم‌عامل Fedora Workstation باشید، چیزی پیدا نخواهید کرد. اما می‌توانید دستورالعمل‌هایی در مورد نحوه نصب آن در سیستم‌عامل لینوکس Red Hat Enterprise پیدا کنید.

“پروژه فدورا توزیع بالادستی و اجتماعی Red Hat® Enterprise Linux است.” (منبع: کلاه قرمزی)

به عبارت دیگر فدورا و لینوکس Red Hat Enterprise بسیار شبیه هم هستند.

“تفاوت اصلی بین توزیع‌های انجمن و سازمانی این است که چه کسی تصمیم می‌گیرد چه چیزی برای کاربران مهم است. جهت توزیع انجمن توسط مشارکت‌کنندگان تعیین می‌شود، که بسته‌ها را از طیف گسترده‌ای از گزینه‌های منبع باز انتخاب و نگهداری می‌کنند. جهت توزیع سازمانی توسط یک تنظیم می‌شود. فروشنده، بر اساس نیاز مشتریان خود.” (منبع: کلاه قرمزی)

حالا ممکن است فکر کنید که می توانید MongoDB را با دنبال کردن آموزش نصب آن در Red Hat روی فدورا نصب کنید. به هر حال، این آموزش در نصب MongoDB Community Edition در Red Hat یا CentOS موجود است.

مشکل این است که کار نمی کند – و برای اثبات آن، سعی می کنم آن را نصب کنم و به شما نشان دهم که چه اتفاقی می افتد.

توجه داشته باشید: من از درایور Node.js MongoDB استفاده می کنم که در زمان نوشتن این مقاله، نسخه فعلی MongoDB (7.0) را پشتیبانی نمی کند. بنابراین سعی می کنم نسخه قبلی آن (6.0) را نصب کنم.

مراحل لازم برای نصب MongoDB در فدورا به شرح زیر است:

  1. سیستم مدیریت بسته را پیکربندی کنید
  2. بسته های MongoDB را نصب کنید

برای انجام اولین مرحله، ترمینال خود را باز کنید، دسترسی root داشته باشید و موارد زیر را تایپ کنید:

# touch /etc/yum.repos.d/mongodb-org-6.0.repo

اکنون، فایل را با استفاده از ویرایشگر متن دلخواه خود باز کنید (من از ویرایشگر متن Gnome استفاده می کنم، زیرا با فدورا ارسال شده است):

# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repo

و در این خطوط بچسبانید:

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

فایل را ذخیره کنید و آن را ببندید.

مرحله دوم را می توان با اجرای دستور زیر انجام داد:

# dnf install -y mongodb-org

پس از اجرای دستور با خطای مشابه زیر مواجه خواهید شد:

Fedora 39 - x86_64 - Updates                     34 kB/s |  46 kB     00:01    
MongoDB Repository                               63  B/s | 391  B     00:06    
Errors during downloading metadata for repository 'mongodb-org-6.0':
  - Status code: 404 for https://repo.mongodb.org/yum/redhat/39/mongodb-org/6.0/x86_64/repodata/repomd.xml (IP: 65.8.214.17)
Error: Failed to download metadata for repo 'mongodb-org-6.0': Cannot download repomd.xml: Cannot download repodata/repomd.xml: All mirrors were tried
Ignoring repositories: mongodb-org-6.0
Last metadata expiration check: 0:00:02 ago on Thu 30 Nov 1402 09:15:21 AM -03.
No match for argument: mongodb-org
Error: Unable to find a match: mongodb-org

این یک است 404 خطا، به این معنی که باید آن را تغییر دهید baseurl فایلی که مخزن را پیکربندی می کند.

پیشنهاد می‌کنیم بخوانید:  روش نصب Gradle روی CentOS 8

اگر سعی کنید در را باز کنید baseurl در مرورگر خود یک را دریافت خواهید کرد 404 خطا نیز:

اسکرین شات از خطای 404 که در صورت بازدید از baseurl در مرورگر دریافت خواهید کرد.
baseurl 404 خطا

این هسته اصلی مشکل است.

راه حل برای نصب MongoDB

می توانید استنباط کنید که برای رفع مشکل باید مقدار اختصاص داده شده به را تغییر دهید baseurl. سوال این است: URL که به صفحه حاوی بسته ها منتهی می شود چیست؟

پاسخ ها توسط اسناد رسمی MongoDB ارائه شده است:

“همچنین می توانید دانلود کنید .rpm فایل های مستقیم از مخزن MongoDB. دانلودها بر اساس نسخه Red Hat / CentOS سازماندهی می شوند (به عنوان مثال 7، سپس نسخه انتشار MongoDB (به عنوان مثال 6.0، سپس معماری (مثلا x86_64).” (منبع: MongoDB)

اکنون، بازدید از مخزن MongoDB شما را به این صفحه می برد:

اسکرین شات از صفحه مخزن MongoDB.  عنوان صفحه عبارت است از «شاخص RedHat».  این صفحه مخازن با نسخه های قدیمی MongoDB و همچنین مخازن با نسخه های جدیدتر برای نسخه های مختلف سیستم عامل RedHat را فهرست می کند.
صفحه مخزن MongoDB

از اینجا به مخزن مناسب رفتم و نسخه MongoDB و معماری سیستم مورد نظر خود را انتخاب کردم. شما باید کار مشابه انجام دهید.

من به آدرس زیر رسیدم:

https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/RPMS/

این URL به مخزن منتهی می شود که در آن بسته های MongoDB 6.0 را می توان برای سیستم های مبتنی بر معماری x86_64 یافت.

این چیزی است که من در آنجا پیدا کردم:

تصویری از مخزن MongoDB که حاوی بسته های نسخه ششم آن برای سیستم های مبتنی بر معماری x86_64 است.
بسته های MongoDB 6.0 برای سیستم های x86_64

پس از اطمینان از یافتن بسته ها، فایلی را که مخزن را پیکربندی می کند به روز کردم. اما baseurl باید به والد اشاره کند RPMS دایرکتوری که منجر به URL زیر شد:

https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/

دویدم:

# gnome-text-editor /etc/yum.repos.d/mongodb-org-6.0.repo

به روز شد baseurl:

[mongodb-org-6.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-6.0.asc

و بسته ها را نصب کرد:

# dnf install -y mongodb-org

اینها بسته هایی هستند که نصب شده اند:

Installed:
  mongodb-database-tools-100.9.3-1.x86_64                                       
  mongodb-mongosh-2.1.0-1.el8.x86_64                                           
  mongodb-org-6.0.12-1.el9.x86_64                                               
  mongodb-org-database-6.0.12-1.el9.x86_64                                     
  mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64                         
  mongodb-org-mongos-6.0.12-1.el9.x86_64                                       
  mongodb-org-server-6.0.12-1.el9.x86_64                                       
  mongodb-org-tools-6.0.12-1.el9.x86_64                                         
  openssl-1:3.1.1-4.fc39.x86_64 

درک خطای OpenSSL Mongosh

برای تایید نصب سرور پایگاه داده، این دستور را اجرا کنید:

# mongod --version

پیامی مشابه این دریافت خواهید کرد:

db version v6.0.12
Build Info: {
    "version": "6.0.12",
    "gitVersion": "21e6e8e11a45dfbdb7ca6cf95fa8c5f859e2b118",
    "openSSLVersion": "OpenSSL 3.1.1 30 May 1402",
    "modules": [],
    "allocator": "tcmalloc",
    "environment": {
        "distmod": "rhel90",
        "distarch": "x86_64",
        "target_arch": "x86_64"
    }
}

برای تایید نصب پوسته، این دستور را اجرا کنید:

# mongosh --version

و این پیامی است که دریافت خواهید کرد:

mongosh: OpenSSL configuration error:
00899523A67F0000:error:030000A9:digital envelope routines:alg_module_init:unknown option:../deps/openssl/openssl/crypto/evp/evp_cnf.c:61:name=rh-allow-sha1-signatures, value=yes

اوه! یک خطای وجود دارد.

من نسخه OpenSSL نصب شده را با اجرای این دستور بررسی کردم:

# openssl version

و به این نتیجه رسید:

OpenSSL 3.1.1 30 May 1402 (Library: OpenSSL 3.1.1 30 May 1402)

با آن، عدم تطابق احتمالی بین نسخه های نصب شده و نسخه OpenSSL مورد نیاز را کنار گذاشتم.

بعد از کمی تحقیق متوجه شدم که:

دو بسته PPA جدید از منبع mongosh ایجاد شده است: علاوه بر mongodb-mongosh، mongodb-mongosh-shared-openssl11 و mongodb-mongosh-shared-openssl3 نیز ارائه شده است. ” (منبع: MongoDB Jira)

وقتی به بسته های نصب شده نگاه کردم، دیدم mongodb-mongosh بسته بندی بنابراین می دانستم که باید آن را جایگزین کنم mongodb-mongosh-shared-openssl3.

راستی،

“نام بسته نشان می دهد که این برش mongosh است که در برابر openssl3 کامپایل شده است.” – جک وهر

حالا که مشکل را فهمیدیم، بیایید آن را برطرف کنیم.

راه حلی برای رفع خطا در نصب های موجود MongoDB

اگر قبلاً MongoDB را نصب کرده اید، برای رفع مشکل این مراحل لازم است:

  1. MongoDB را متوقف کنید
  2. را حذف کنید mongodb-org بسته بندی
  3. را حذف کنید mongodb-mongosh بسته بندی
  4. را نصب کنید mongodb-mongosh-shared-openssl3 بسته بندی
  5. MongoDB را فعال کنید

شما باید این مراحل را به ترتیب صحیح انجام دهید. اگر سعی می کنید نصب کنید mongodb-mongosh-shared-openssl3 بسته بدون حذف نصب mongodb-mongosh ابتدا بسته، یک خطای تضاد دریافت خواهید کرد:

Error: Transaction test error:
  file /usr/bin/mongosh from install of mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64 conflicts with file from package mongodb-mongosh-2.1.0-1.el8.x86_64

اگر سعی کنید آن را حذف کنید mongodb-mongosh بسته بدون حذف نصب mongodb-org ابتدا بسته، یک خطای وابستگی دریافت خواهید کرد:

error: Failed dependencies:
	mongodb-mongosh is needed by (installed) mongodb-org-6.0.12-1.el9.x86_64

برای متوقف کردن MongoDB، این دستور را اجرا کنید:

# systemctl stop mongod

توجه داشته باشید: اگر همه چیز خوب پیش برود، دستور هیچ خروجی نخواهد داشت.

پیشنهاد می‌کنیم بخوانید:  مرتب سازی سریع در جاوا اسکریپت به مرتب کردن آیتم های یک لیست در یک ترتیب خاص (عددی یا الفبایی) اشاره دارد. مرتب‌سازی معمولاً همراه با جستجو استفاده می‌شود. در طول سال‌ها، الگوریتم‌های مرتب‌سازی زیادی توسعه یافته‌اند و یکی از سریع‌ترین آنها تا به امروز، Quicksort است. Quicksort از استراتژی تفرقه بینداز و حکومت کن برای مرتب کردن...

برای حذف mongodb-org و mongodb-mongosh بسته ها، اجرا کنید:

# rpm -e mongodb-org mongodb-mongosh

توجه داشته باشید: من از آن استفاده نمی کنم dnf دستور دهید تا حذف شود mongodb-org و تمام وابستگی های آن

همچنین می‌توانید تأیید کنید که تنها دو بسته با اجرا کردن حذف شده‌اند:

# rpm -qa | grep mongodb-*

خروجی باید این باشد:

mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64

برای نصب mongodb-org و mongodb-mongosh-shared-openssl3 بسته ها، اجرا کنید:

# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3

در نهایت، برای راه اندازی MongoDB با سیستم عامل خود، اجرا کنید:

# systemctl start mongod

اگر می خواهید مطمئن شوید که راه حل کار کرده است، اجرا کنید:

# mongod --version

و بعد این:

# mongosh --version

حال، اگر نگران از بین بردن داده ها هستید، بدانید که لاگ ها و پایگاه های داده تنها در صورتی حذف خواهند شد که دستورات زیر را اجرا کنید:

# rm -r /var/log/mongodb

و این:

# rm -r /var/lib/mongo

یک چیز دیگر: اگر می دوید mongosh و خطای زیر را دریافت کنید:

MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017

دستگاه خود را مجددا راه اندازی کنید مشکل را حل خواهد کرد.

نحوه نصب MongoDB با پشتیبانی OpenSSL 3 از ابتدا

اگر برای اولین بار MongoDB را نصب می کنید، فقط باید دو مرحله را انجام دهید:

  1. سیستم مدیریت بسته را پیکربندی کنید
  2. بسته های MongoDB را با مشخص کردن آنها به صورت جداگانه نصب کنید

می‌توانید اولین مرحله را با دنبال کردن کارهایی که در بخش هسته مشکل و راه‌حل برای نصب MongoDB در این مقاله انجام دادم، انجام دهید.

با این حال، برای نصب بسته های مناسب باید این دستور را جایگزین کنید:

# dnf install -y mongodb-org

با این یکی:

# dnf install -y mongodb-org mongodb-mongosh-shared-openssl3 openssl mongodb-org-database-tools-extra mongodb-database-tools mongodb-org-tools mongodb-org-server mongodb-org-mongos mongodb-org-database

با اجرای زیر می توانید تأیید کنید که همه بسته ها نصب شده اند:

# rpm -qa | grep mongodb-*

که باید چیزی شبیه به این خروجی بدهد:

mongodb-org-database-tools-extra-6.0.12-1.el9.x86_64
mongodb-database-tools-100.9.3-1.x86_64
mongodb-org-tools-6.0.12-1.el9.x86_64
mongodb-org-server-6.0.12-1.el9.x86_64
mongodb-org-mongos-6.0.12-1.el9.x86_64
mongodb-org-database-6.0.12-1.el9.x86_64
mongodb-mongosh-shared-openssl3-2.1.0-1.el8.x86_64
mongodb-org-6.0.12-1.el9.x86_64

به خاطر داشته باشید که دستور قبلی فقط خروجی خواهد داشت مرتبط با mongodb بسته ها برای تایید نصب OpenSSL، اجرا کنید:

# openssl version

شما باید چیزی شبیه به این دریافت کنید:

OpenSSL 3.1.1 30 May 1402 (Library: OpenSSL 3.1.1 30 May 1402)

همانطور که در تصویر زیر می بینید بسته ها با سیستم شما به روز می شوند.

اسکرین شات بسته mongodb-mongosh-shared-openssl3 که به طور خودکار با سیستم عامل به روز می شود.
mongodb-mongosh-shared-openssl3 به روز رسانی

نتیجه

به‌روزرسانی‌های بسته مهم هستند، زیرا عملکردهای جدیدی را به ارمغان می‌آورند و/یا امنیت برنامه‌ها را افزایش می‌دهند. اما در صورت بروز خطاهایی مانند آنچه در این مقاله به آن پرداختیم، می توانند باعث سردرد شوند.

اگر چه ممکن است وسوسه شوید که به روز رسانی را به عقب برگردانید تا از شر مشکل خلاص شوید، این کار را نکنید. در عوض سعی کنید آن را حل کنید.

توجه به پیام های خطا، خواندن اسناد رسمی و تحقیق در وب به احتمال زیاد برای حل اکثر مشکلاتی که با آن مواجه می شوید کافی خواهد بود.

علاوه بر این، دانستن اینکه چگونه دستورات مختلف بر نحوه نصب/حذف بسته‌ها بر روی سیستم عامل شما تأثیر می‌گذارد، می‌تواند در زمان و داده‌های شما صرفه‌جویی کند (اگر از یک اتصال اندازه‌گیری شده استفاده می‌کنید).

اگر این مقاله برای شما مفید بود، آن را نشانه گذاری کنید و با دوستان خود به اشتراک بگذارید. شما همچنین می توانید من را دنبال کنید توییتر.

در قسمت بعدی می بینمت!