از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
نحوه نصب MongoDB با پشتیبانی OpenSSL 3 در فدورا 39
سرفصلهای مطلب
در این آموزش، نحوه نصب 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 در فدورا به شرح زیر است:
- سیستم مدیریت بسته را پیکربندی کنید
- بسته های 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
فایلی که مخزن را پیکربندی می کند.
اگر سعی کنید در را باز کنید baseurl
در مرورگر خود یک را دریافت خواهید کرد 404
خطا نیز:
این هسته اصلی مشکل است.
راه حل برای نصب MongoDB
می توانید استنباط کنید که برای رفع مشکل باید مقدار اختصاص داده شده به را تغییر دهید baseurl
. سوال این است: URL که به صفحه حاوی بسته ها منتهی می شود چیست؟
پاسخ ها توسط اسناد رسمی MongoDB ارائه شده است:
“همچنین می توانید دانلود کنید
.rpm
فایل های مستقیم از مخزن MongoDB. دانلودها بر اساس نسخه Red Hat / CentOS سازماندهی می شوند (به عنوان مثال7
، سپس نسخه انتشار MongoDB (به عنوان مثال6.0
، سپس معماری (مثلاx86_64
).” (منبع: MongoDB)
اکنون، بازدید از مخزن MongoDB شما را به این صفحه می برد:
از اینجا به مخزن مناسب رفتم و نسخه MongoDB و معماری سیستم مورد نظر خود را انتخاب کردم. شما باید کار مشابه انجام دهید.
من به آدرس زیر رسیدم:
https://repo.mongodb.org/yum/redhat/9Server/mongodb-org/6.0/x86_64/RPMS/
این URL به مخزن منتهی می شود که در آن بسته های 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 را نصب کرده اید، برای رفع مشکل این مراحل لازم است:
- MongoDB را متوقف کنید
- را حذف کنید mongodb-org بسته بندی
- را حذف کنید mongodb-mongosh بسته بندی
- را نصب کنید mongodb-mongosh-shared-openssl3 بسته بندی
- 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
توجه داشته باشید: اگر همه چیز خوب پیش برود، دستور هیچ خروجی نخواهد داشت.
برای حذف 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 را نصب می کنید، فقط باید دو مرحله را انجام دهید:
- سیستم مدیریت بسته را پیکربندی کنید
- بسته های 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)
همانطور که در تصویر زیر می بینید بسته ها با سیستم شما به روز می شوند.
نتیجه
بهروزرسانیهای بسته مهم هستند، زیرا عملکردهای جدیدی را به ارمغان میآورند و/یا امنیت برنامهها را افزایش میدهند. اما در صورت بروز خطاهایی مانند آنچه در این مقاله به آن پرداختیم، می توانند باعث سردرد شوند.
اگر چه ممکن است وسوسه شوید که به روز رسانی را به عقب برگردانید تا از شر مشکل خلاص شوید، این کار را نکنید. در عوض سعی کنید آن را حل کنید.
توجه به پیام های خطا، خواندن اسناد رسمی و تحقیق در وب به احتمال زیاد برای حل اکثر مشکلاتی که با آن مواجه می شوید کافی خواهد بود.
علاوه بر این، دانستن اینکه چگونه دستورات مختلف بر نحوه نصب/حذف بستهها بر روی سیستم عامل شما تأثیر میگذارد، میتواند در زمان و دادههای شما صرفهجویی کند (اگر از یک اتصال اندازهگیری شده استفاده میکنید).
اگر این مقاله برای شما مفید بود، آن را نشانه گذاری کنید و با دوستان خود به اشتراک بگذارید. شما همچنین می توانید من را دنبال کنید توییتر.
در قسمت بعدی می بینمت!
منتشر شده در 1402-12-26 04:34:24