حجم اطلاعات سرسامآور است! گستره دادهها در دنیای رایانه به اندازهای زیاد شده است که از طریق بانکهای اطلاعاتی معمولی نمیتوان کلاندادهها را مدیریت کرد و با آنها تعامل داشت. این دادهها نیاز به تحلیلهای دقیقتر دارند و به همین خاطر به دیتابیسهای NoSQL نیاز خواهیم داشت. در این بلاگپست هم قصد آموزش نصب پایگاه داده MongoDB در لینوکس را داریم که یکی از معروفترین این دیتابیسها است.
به لطف این پایگاهدادهها (مثل MongoDB)، اطلاعات مقیاسپذیر میشوند و با عملکرد بیشتری میتوان به آنها دسترسی داشت. دراین مورد بهخصوص، پایگاه داده MongoDB از پلتفرمهای معروفی مانند ویندوز، لینوکس و مکینتاش پشتیبانی میکند و با بیشتر زبانهای برنامهنویسی هم کاملاً سازگار است.
ابتدا بیایید کمی بیشتر با این دیتابیس آشنا شویم.
اطلاعات کلی درباره MongoDB
این آموزش شیوه نصب نسخه تجاری مانگودیبی (MongoDB Enterprise) در گنو/لینوکس ردهت اینترپرایز یا سنتاواس نسخه ۶ و ۷ از طریق پکیجهای rpm را در بر میگیرد. ناگفته نماند در این آموزش تنها به سیستمهای ۶۴ بیتی اشاره میکنیم.
پکیجها
MongoDB به صورت رسمی از پکیجهای اینترپرایزی که داخل مخازن خود دارد، پشتیبانی میکند. این مخازن شامل پکیجهای زیر هستند:
توضیح عملکرد پکیج | نام پکیج |
این پکیج بهصورت خودکار چهار پکیج زیر را نصب میکند. | mongodb-enterprise |
محتوی mongod daemon و تنظیمات مربوطه و اسکریپتها | mongodb-enterprise-server |
محتوی Mongos Daemon | mongodb-enterprise-mongos |
محتوی Mongo Shell | mongodb-enterprise-shell |
حاوی ابزارهای mongoimport bsondump, mongodump, mongoexport, mongofiles, mongorestore, mongostat, و mongotop. | mongodb-enterprise-tools |
تنظیمات به صورت پیشفرض در مسیر /etc/mongod.conf به آدرس آیپی ۱۲۷٫۰٫۰٫۱ اعمال شده است که قبل از نصب باید تغییر دهید.
در بخش بعدی، چگونگی نصب MongoDB روی Centos7 را آموزش خواهیم داد.
آموزش نصب Mongodb در Centos7
Centos7 یکی از محبوبترین توزیعهای لینوکس محسوب میشود. در ادامه، نصب کردن پایگاه داده MongoDB روی این توزیع را یاد میگیرید.
ابتدا وارد ترمینال لینوکس CentOS 7 خود شوید.
به دلیل اینکه پکیج MongoDB در لیست Repository پیشفرض centos7 وجود ندارد، ابتدا باید لیست Repository آن را با اجرای دستور زیر نصب نمائید.
nano /etc/yum.repos.d/mongodb-org.repo
سپس، اطلاعات زیر را در آن کپی کرده و فایل را ذخیره کنید.
[mongodb-org-4.0] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.0/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
در مرحله بعدی، با دستور زیر لیست repository لینوکس خود را چک کنید.
yum repolist
در خروجی دستور بالا، باید نام مخزنی که اضافه کردید را مشاهده کنید.
پس از انجام مراحل بالا، دستور زیر را برای نصب mongoDB وارد کنید.
yum install mongodb-org
بعد از اجرای این دستور، نصب پکیج شروع میشود. دقت داشته باشید که در بین مراحل نصب، تائیدیه نصب و دانلود از شما گرفته خواهد شد! به این ترتیب که سوالی از شما پرسیده میشود که باید در پاسخ گزینه Yes را انتخاب کنید.
منتظر بمانید تا نصب MongoDB تمام شود.
systemctl start mongod systemctl reload mongod
توجه داشته باشید Mongodb تنها برروی سرورهای خارج از ایران قابل نصب است.
حالا همهچیز برای نصب پکیجهای بعدی آماده است.
نصب نسخه MongoDB Enterprise
در این بخش، روشهای مختلف نصب پایگاه داده MongoDB Enterprise را زیر ذرهبین میبریم:
نصب از طریق پکیج rpm.
این روش با استفاده از پکیجهایی که توضیح داده شد انجام میشود. این پکیجها بهصورت خودکار تمامی dependencyهای لازم را نصب میکنند و در نتیجه، توصیه میکنیم حتماً از همین راه نسخه MongoDB Enterprise را نصب کنید.
اگر قصد استفاده از این روش را دارید، مراحل زیر را بهترتیب انجام دهید:
۱. تنظیم مخزن (Configure repository)
یک فایل با نام و آدرس /etc/yum.repos.d/mongodb-enterprise.repo در مسیری که ذکر شد ایجاد کنید تا با استفاده از دستور Yum بتوانید MongoDB Enterprise را نصب کنید:
[mongodb-enterprise]name=MongoDB Enterprise Repositorybaseurl=https://repo.mongodb.com/yum/redhat/$releasever/mongodb-enterprise/4.0/$basearch/gpgcheck=1enabled=1gpgkey=https://www.mongodb.org/static/pgp/server-4.0.asc
۲. نصب پکیجها
در ادامه، دستور نصب هر پکیج را جداگانه آموزش خواهیم داد.
نصب نسخه ۴.۰ MongoDB Enterprise
دستور زیر را اجرا کنید:
sudo yum install -y mongodb-enterprise
نصب نسخهای بهخصوص از MongoDB Enterprise
برای نصب نسخهای خاص از MongoDB Enterprise، باید هر کدام از پکیجها را بهصورت جداگانه به همراه نسخه آنها مشخص کنید. برای روشنتر شدن این موضوع نگاهی به این مثال بیندازید:
sudo yum install -y mongodb-enterprise-4.0.3 mongodb-enterprise-server-4.0.3 mongodb-enterprise-shell-4.0.3 mongodb-enterprise-mongos-4.0.3 mongodb-enterprise-tools-4.0.3
اگر نسخه ۴.۰.۳ مونگودیبی را نصب کردید و این نسخه شامل پکیجهای کامپوننتها نبود، به این معناست که آخرین نسخه از پکیجهای MongoDB بدون توجه به نسخهای که شما مشخص کردهاید نصب میشوند. اگر نمیخواهید چنین اتفاقی بیفتد، بخش بعدی را بخوانید.
جلوگیری از نصب ورژنهای جدید MongoDB Enterprise
همان طور که اشاره شد، میتوانید هر کدام از نسخههای موجود در MongoDB Enterprise را نصب کنید، از طرف دیگر، Yum پکیجهای نصب شده را در صورت وجود پکیج جدید به نسخههای جدیدتر آپدیت میکند. برای جلوگیری از این فرآیند ارتقاء پکیجها، میتوانید دستور exclude را به فایل /etc/yum.conf اضافه کنید:
exclude=mongodb-enterprise,mongodb-enterprise-server,mongodb-enterprise-shell,mongodb-enterprise-mongos,mongodb-enterprise-tools
فرآیند نصب دستی MongoDB از طریق فایلهای فشرده
اگر قرار است Mongo DB را بهصورت دستی نصب کنید، از روشهای زیر استفاده کنید:
نصب از طریق فایلهای فشرده tgz.
برای نصب فایلهای فشرده .tar.gz MongoDB باید Dependensyهای زیر را نصب کنید:
ردهت اینترپرایز نسخه ۶:
yum install cyrus-sasl cyrus-sasl-plain cyrus-sasl-gssapi krb5-libs libcurl libpcap net-snmp openldap openssl
ردهت اینترپرایز نسخه ۷:
yum install cyrus-sasl cyrus-sasl-gssapi cyrus-sasl-plain krb5-libs libcurl libpcap lm_sensors-libs net-snmp net-snmp-agent-libs openldap openssl rpm-libs tcp_wrappers-libs
سپس اقدامات زیر را بهترتیب انجام دهید:
۱. دانلود فایلهای فشرده MongoDB Enterprise با فرمت .tar.gz
پس از نصب پکیجهای پیشنیاز به این آدرس برای دانلود به لینک فایلهای فشرده مانگودیبی مراجعه کنید.
۲. باز کردن فایلهای فشردهای که دانلود کردهاید.
برای باز کردن این فایلها طبق مثال زیر با استفاده از دستور tar عمل کنید:
tar -zxvf mongodb-linux-*-4.0.3.tgz
۳. اطمینان خاطر حاصل کنید فایلهای باینری در دایرکتوری مورد نظر قرار گرفته باشند.
فایلهای باینری MongoDB پس از اینکه از حالت فشرده خارج شدند، باید در دایرکتوری/ bin قرار گرفته بگیرند، در غیر این صورت، اقدامات زیر را انجام دهید:
فایلهای باینری را داخل دایرکتوریای که در مسیر (Path) قرار دارد کپی کنید، مثال: /usr/local/bin
برای هر کدام از این فایلهای باینری از دایرکتوریای که در مسیر (Path) قرار دارد، لینکهای نمادین ایجاد نمایید.
مسیر (Path) را تغییر دهید تا شامل دایرکتوری مورد نظرتان شود.
برای مثال، میتوانید خط زیر را به ابتدای اسکریپت اجرایی (bashrc./) اضافه نمایید:
export PATH=<mongodb-install-directory>/bin:$PATH
دایرکتوی نصب منگو دی بی (mongodb-install-directory) را به مسیری که تعریف کردهاید تغییر دهید و فرآیند استخراج فایلهای فشرده Mongo DB را ادامه دهید.
اعمال تنظیمات لازم MongoDB Enterprise
حالا وقت آن است که تنظیمات لازم را برای Mongo DB اعمال کنیم.
تنظیم SELinux
نکته مهم:
اگر از SELinux استفاده میکنید، باید حتماً آن را تنظیم کنید تا اجازه اجرا به و راهاندازی در توزیعهای ردهت اینترپرایز یا سنتاواس را بدهد. برای تنظیم SELinux، سه گزینه پیشروی مدیر سیستم وجود دارد:
اگر SELinux در حالت enforcing قرار دارد، باید دسترسی به پورتهای مربوطه را صادر کنید تا Mongo DB از این پورتها استفاده کند، (برای نمونه ۲۷۰۱۷). برای اعمال تنظیمات پیشفرض دستور زیر را اجرا کنید:
semanage port -a -t mongod_port_t -p tcp 27017
ناگفته نماند پس از اجرای این فرمان برای اعمال دستورات، سیستم باید حتماً ریاستارت شود.
تنظیمات SELinux را در قسمت /etc/selinux/config در حالت Permissive قرار دهید، این کار از طریق اجرای دستور زیر انجام میشود:
SELINUX=permissive
برای اعمال شدن این دستور، سیستم باید حتماً ریاستارت شود.
استفاده از setenforce نیز SELinux را به حالت Permissive تغییر میدهد و این کار نیازی به ریاستارت هم ندارد، اما خب نتیجه این شیوه دائمی نیست.
از طرفی دیگر، میتوانید انتخاب کنید که پکیج SELinux در حین نصب توزیع گنو/لینوکس نصب نشود، یا اینکه پکیجهای مربوطه را حذف کنید؛ البته این کار دردسرهای خاص خودش را دارد و توصیه نمیشود.
دایرکتوری دیتاها و مجوزها
هشدار:
اگر در ردهت نسخه ۷.۰، مسیر نصب دیتا را تغییر دهید، قوانین (Policies) پیشفرض SELinux جلوی دسترسی mongod به مسیر جدید را نمیدهد؛ مگر اینکه تنظیمات امنیتی را تغییر دهید.
بهصورت پیشفرض، MongoDB instances در این مسیرها قرار میگیرند:
فایلهای دیتا در آدرس /var/lib/mongo
فایلهای لاگ در آدرس /var/log/mongo
اگر MongoDB را از طریق پکیجمنیجر نصب کردید، این دایرکتوریها در حین نصب ایجاد خواهند شد؛ اما اگر Mongo DB را از طریق فایلهای فشرده نصاب آن راهاندازی کردهاید، میتوانید این دایرکتوریها را با دستورات <mkdir -p <directory یا sudo mkdir -p (directory) بسته به مکانی که قصد دارید Mongo DB اجرا شود، ایجاد نمایید.
MongoDB، بهصورت پیشفرض از اکانت mongod استفاده میکند؛ اگر میخواهید کاربر آن را تغییر دهید باید مجوز دسترسی به /var/lib/mongo و /var/log/mongodb را تغییر دهید تا کاربر مورد نظر به این دایرکتوریها دسترسی داشته باشد.
اختصاص منابع نامحدود به MongoDB
بیشتر توزیعهای لینوکس، منابع سیستم را بسته به Sessionها محدود میکنند، این محدودیت تأثیر منفی روی عملکرد MongoDB میگذارند. در نتیجه، برای کسب اطلاعات بیشتر پیشنهاد میکنیم مستندات تنظیمات ulimit را مطالعه بفرمایید.
در بخش بعدی، تعامل گرفتن با MongoDB را بررسی خواهیم کرد.
فرآیند اجرا و تعامل با MongoDB
در این بخش، استفاده از MongoDB در لینوکس را در ۵ بخش آموزش خواهیم داد.
۱. اجرا سرویس MongoDB
برای راهاندازی mongod، باید فرمان زیر را صادر کنید:
service mongod start
۲. کنترل اجرای موفق MongoDB
برای اینکه از اجرای موفق MongoDB اطمینان خاطر حاصل کنید، میتوانید به فایل لاگ آن در مسیر /var/log/mongodb/mongod.log مراجعه نمایید.
<initandlisten] waiting for connections on port <port]
در اینجا، قسمت <port> همان چیزی است که به صورت پیشفرض در مسیر /etc/mongod.conf, 27017 تنظیم شده است.
پس از اینکه سیستم ریاستارت شد، با استفاده از دستور زیر میتوانید از اجرای MongoDB اطمینان خاطر حاصل کنید:
chkconfig mongod on
۳. توقف سرویس MongoDB در لینوکس
اگر به هر دلیلی قصد متوقف کردن فعالیت mongod را داشتید، میتوانید از دستور زیر کمک بگیرید:
service mongod stop
۴. ریاستارت کردن سرویس MongoDB در لینوکس
برای ریاستارت کردن سرویس Mongod فقط کافی است دستور زیر را اجرا کنید:
service mongod restart
فرآیند ریاستارت شدن و پیامهای خطای احتمالی را میتوانید در فایل لاگ مشاهده کنید:
/var/log/mongodb/mongod.log
۵. شروع کار با MongoDB
پوسته Mongo را در همان ماشینی که از mongod استفاده میکنید راهاندازی نمایید. اجرای Mongo shell بدون هیچگونه تنظیمات در خطفرمان صورت میگیرد و به mongod که در هاست لوکال با پورت پیشفرض ۲۷۰۱۷ قرار دارد راهاندازی خواهد شد:
mongo
درضمن، حتی اگر بخواهید بهکلی این دیتابیس را حذف کنید هم کار سختی نخواهید داشت.
حذف Mongodb
برای حذف کامل MongoDB از سیستمی که نصب کردهاید، باید اپلیکیشنهای MongoDB را در کنار فایلهای تنظیمات و تمامی دایرکتوریهایی که حاوی فایلها و لاگها هستند را پاک کنید.
هشدار: دستوراتی که در ادامه به آنها اشاره میکنیم، MongoDB در لینوکس را کاملاً از سیستم مورد نظر حذف و تمامی بانکهای اطلاعاتی را پاک میکند! این فرآیند قابل بازگشت نیست و قبل از شروع پیشنهاد میکنیم از تمامی تنظیمات و اطلاعاتی که در MongoDB ایجاد شده است نسخه پشتیبان تهیه کنید.
فرایند حذف MnogoDB، طی ۳ مرحله انجام میشود.
۱. توقف MongoDB
با صدور فرمان زیر، MongoDB را متوقف نمایید:
sudo service mongod stop
۲. حذف پکیجهای MongoDB
در مرحله دوم باید تمامی پکیجهای MongoDB که پیش از این نصب کردهاید را پاک کنید. دستور زیر این کار را برایتان انجام میدهد:
(sudo yum erase $(rpm -qa | grep mongodb-enterprise
۳. حذف دایرکتوری دیتاها
در مرحله آخر، باید تمامی دیتابیسها و فایلهای لاگ را با دستور زیر حذف کنید:
sudo rm -r /var/log/mongodbsudo rm -r /var/lib/mongo
به این ترتیب، دیتابیس MongoDB کاملاً حذف خواهد شد.
حرف آخر
در این مطلب، سعی کردیم خیلی ساده آموزش MongoDB را خدمتتان ارائه کنیم. از نصب گرفته تا حذف کامل آن.