MongoDB که به عنوان Mongo نیز شناخته می‌شود، یک پایگاه داده اسناد منبع باز است که در بسیاری از برنامه‌های وب مدرن استفاده می‌شود. این پایگاه داده، به عنوان یک پایگاه داده NoSQL طبقه بندی شده است؛ زیرا به یک ساختار پایگاه داده رابطه‌ای سنتی مبتنی بر جدول متکی نیست.

 

MongoDB، از اسناد مشابه JSON با طرح‌های پویا استفاده می‌کند؛ بدین معنی که برخلاف پایگاه داده‌های رابطه‌ای، MongoDB قبل از افزودن داده به پایگاه داده، به یک طرح از پیش تعریف شده نیاز ندارد. بنابراین، شما می‌توانید بدون نیاز به راه‌اندازی پایگاه داده جدید با یک طرح به روز شده، هر زمان که لازم است طرح را تغییر دهید.

در این آموزش، نحوه نصب MongoDB برروی یک سرور Ubuntu 20.04، تست آن و چگونگی مدیریت آن به عنوان سرویس systemd شرح داده شده است.

دقت کنید که قبل از دنبال کردن این آموزش، شما به یک سرور اوبونتو 20.04 نیاز دارید که یک کاربر اجرایی غیر root و یک فایروال پیکربندی شده با UFW برروی آن داشته باشد.

 

نصب MongoDB

مخازن بسته رسمی اوبونتو شامل یک نسخه پایدار از MongoDB است که ممکن است از آخرین نسخه پایدار آن عقب باشد. بنابراین، به منظور به دست آوردن جدیدترین نسخه این نرم افزار، باید مخزن بسته اختصاصی MongoDB را در منابع APT خود قرار دهید. سپس می‌توانید، mongodb-org (یک بسته متا که همیشه به آخرین نسخه MongoDB اشاره دارد) را نصب نمایید.

برای شروع، با اجرای دستور زیر، کلید GPG عمومی را برای آخرین نسخه پایدار MongoDB وارد کنید. چنانچه می‌خواهید از نسخه‌ای غیر از نسخه 4.4 استفاده نمایید، مطمئن شوید که شماره 4.4 را در قسمت URL این دستور به شماره نسخه مورد نظر خود تغییر داده‌اید:

curl -fsSL https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -

cURL، ابزاری برای خط فرمان است که در بسیاری از سیستم عامل‌ها برای انتقال داده استفاده می‌شود. این ابزار، هر داده ذخیره شده در URL را منتقل کرده و محتوا را در خروجی سیستم چاپ می‌نماید. در مثال زیر، cURL محتوای فایل کلید GPG را چاپ کرده و سپس خروجی آن را به دستور sudo apt-key می‌دهد؛ در نتیجه کلید GPG را به لیست کلیدهای معتبر خود اضافه می‌کند.

 

علاوه‌براین همانطور که مشاهده می‌نمایید، دستور curl از گزینه‌های fsSL- استفاده می‌کند که به cURL می‌گوید بی صدا شکست بخورد. این بدان معنی است که اگر به دلایلی cURL قادر به تماس با سرور GPG نباشد یا سرور GPG از کار افتاده باشد، به طور تصادفی کد خطای نتیجه را به لیست کلیدهای معتبر شما اضافه نمی‌کند.

با این حال، اگر کلید با موفقیت اضافه شود، خروجی OK را برمی‌گرداند:

:Output
OK

 

چنانچه می‌خواهید صحت اضافه شدن کلید را مجدداً بررسی کنید، می‌توانید این کار را با دستور زیر انجام دهید:

apt-key list

این دستور، کلید MongoDB را در خروجی برمی‌گرداند:

:Output
/etc/apt/trusted.gpg
--------------------
pub   rsa4096 2019-05-28 [SC] [expires: 2024-05-26]
      2069 1EEC 3521 6C63 CAF6  6CE1 6564 08E3 90CF B1F5
uid           [ unknown] MongoDB 4.4 Release Signing Key <packaging@mongodb.com>
. . .

در این مرحله، APT شما هنوز نمی‌داند بسته mongodb-org مورد نیاز برای نصب آخرین نسخه MongoDB را از کجا پیدا کند.

 

در سرور شما دو مکان وجود دارد که APT در آن‌ها منابع آنلاین بسته‌ها را برای بارگیری و نصب جستجو می‌نماید. این دو مکان عبارتند از فایل source.list و دایرکتوری sources.list.d. فایل sources.list، فایلی است که منابع فعال داده‌های APT را لیست می‌کند. این فایل، دارای یک منبع در هر خط است که منابع بر اساس اولویت در آن ذکر شده‌اند. دایرکتوری sources.list.d به شما امکان می‌دهد، ورودی‌های source.list را به عنوان فایل‌های جداگانه اضافه کنید.

با اجرای دستور زیر، یک فایل در دایرکتوری source.list.d با نام mongodb-org-4.4.4 ایجاد می‌شود. تنها محتوای این فایل، خواندن یک خط است.

deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse:
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list

 

این خط، به APT هر آنچه را که باید درباره منبع و محل یافتن آن بداند، می‌گوید:

deb: این بدان معنی است که ورودی منبع به یک ساختار معمولی Debian ارجاع می‌دهد. در موارد دیگر، این قسمت از خط ممکن است deb-src را بخواند؛ این بدان معنی است که ورودی منبع، یک کد منبع توزیع Debian را نشان می‌دهد.

[arch=amd64,arm64]: این مشخص می‌کند که داده‌های APT در کدام ساختار باید بارگیری شود. در این مورد، معماری amd64 و arm64 تعیین شده است.

https://repo.mongodb.org/apt/ubuntu: این یک URI است که محل یافتن داده‌های APT را نشان می‌دهد. در این مورد، URI به آدرس HTTPSای که مخزن رسمی MongoDB در آن قرار دارد، اشاره می‌کند.

focal/mongodb-org/4.4: مخازن اوبونتو می‌تواند حاوی چندین نسخه مختلف باشد. این، مشخص می‌کند که شما تنها نسخه 4.4 از بسته mongodb-org در دسترس برای نسخه focal اوبونتو را می‌خواهید.

multiverse: این بخش، APT را به یکی از چهار مخزن اصلی اوبونتو اشاره می‌دهد. در این مورد، به مخزن multiverse اشاره کرده است.

 

پس از اجرای این دستور، فهرست بسته محلی سرور خود را به روز نمایید تا APT بداند، کجا بسته mongodb-org را پیدا کند:

sudo apt update

به دنبال آن می‌توانید MongoDB را به صورت زیر نصب کنید:

sudo apt install mongodb-org

هنگامی‌که از شما سوالی پرسیده شد، دکمه Y و سپس ENTER را فشار دهید تا تأیید نمایید که می‌خواهید بسته را نصب کنید.

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

 

راه‌اندازی سرویس MongoDB و آزمایش پایگاه داده

روند نصب شرح داده شده در مرحله قبل، به صورت خودکار MongoDB را به گونه‌ای پیکربندی می‌کند که به عنوان یک برنامه daemon کنترل شده توسط systemd اجرا شود؛ بدین معنی که شما می‌توانید MongoDB را با استفاده از دستورات مختلف systemctl مدیریت نمایید. با این حال، این روش نصب به طور خودکار سرویس را راه‌اندازی نمی‌کند.

به منظور راه‌اندازی سرویس MongoDB، دستور systemctl زیر را اجرا نمایید:

sudo systemctl start mongod.service

سپس وضعیت سرویس را بررسی کنید. توجه داشته باشید که این دستور شامل .service در تعریف فایل سرویس نیست. systemctl، این پسوند را به تمام آرگمان‌هایی که بطور خودکار ارسال می‌نمایید؛ چنانچه در آن وجود نداشته باشد، اضافه می‌کند. بنابراین لازم نیست شما آن را اضافه کنید:

sudo systemctl status mongod

این دستور، خروجی مشابه زیر را برمی‌گرداند که نشان می‌دهد سرویس فعال است:

Output
● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; disabled; vendor preset: enabled)
     Active: active (running) since Tue 2020-06-09 12:57:06 UTC; 2s ago
       Docs: https://docs.mongodb.org/manual
   Main PID: 37128 (mongod)
     Memory: 64.8M
     CGroup: /system.slice/mongod.service
             └─37128 /usr/bin/mongod --config /etc/mongod.conf

 

پس از تأیید اینکه سرویس مطابق انتظار در حال اجرا است، سرویس MongoDB را برای راه‌اندازی در زمان boot فعال نمایید:

sudo systemctl enable mongod

شما همچنین می‌توانید، با اتصال به سرور پایگاه داده و اجرای یک دستور تشخیصی (diagnostic)، عملکرد پایگاه داده را بررسی کنید. دستور زیر، به پایگاه داده متصل شده و نسخه فعلی، آدرس سرور و پورت آن را در خروجی نمایش می‌دهد. علاوه‌براین، نتیجه دستور داخلی connectionStatus مربوط به MongoDB را نیز برمی‌گرداند:

mongo --eval 'db.runCommand({ connectionStatus: 1 })'

 

connectionStatus، وضعیت اتصال پایگاه داده را بررسی کرده و مقدار آن را برمی‌گرداند. مقدار 1 برای قسمت ok در خروجی، نشان می‌دهد که سرور مطابق انتظار کار می‌کند:

Output
MongoDB shell version v4.4.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("1dc7d67a-0af5-4394-b9c4-8a6db3ff7e64") }
MongoDB server version: 4.4.0
{
    "authInfo" : {
        "authenticatedUsers" : [ ],
        "authenticatedUserRoles" : [ ]
    },
    "ok" : 1
}

همچنین، توجه داشته باشید که پایگاه داده برروی پورت 27017 در آدرس 127.0.0.1 در حال اجرا است. آدرس 127.0.0.1، نشان‌دهنده  localhost است و پورت 27017، شماره پورت پیش فرض MongoDB است.

در مرحله بعدی، نحوه مدیریت سرور MongoDB با systemd شرح داده است.

 

مدیریت سرویس MongoDB

همانطور که قبلا ذکر شد، مراحل نصب شرح داده شده در مراحل قبل، MongoDB را به گونه‌ای پیکربندی می‌کند که به عنوان یک سرویس systemd قابل اجرا باشد. این بدان معنی است که می‌توانید همانند سایر سرویس‌های سیستم اوبونتو با استفاده از دستورات استاندارد systemctl آن را مدیریت نمایید.

همانطور که قبلا ذکر شد، دستور statusctl status وضعیت سرویس MongoDB را بررسی می‌کند:

sudo systemctl status mongod

با تایپ کردن دستور زیر می‌توانید، سرویس را در هر زمان متوقف کنید:

sudo systemctl stop mongod

به منظور راه‌اندازی سرویس نیز می‌توانید، از دستور زیر استفاده نمایید:

sudo systemctl start mongod

شما همچنین می‌توانید با استفاده از دستور زیر، سرویس را restart کنید:

sudo systemctl restart mongod

 

در مراحل قبل، MongoDB را به گونه‌ای فعال کردید که به طور خودکار با سرور شروع به کار کند. اگر می‌خواهید این راه‌اندازی خودکار را غیرفعال نمایید، دستور زیر را تایپ کنید:

sudo systemctl disable mongod

سپس برای فعال کردن مجدد آن، به منظور راه‌اندازی در زمان reboot، مجدداً دستور enable را اجرا نمایید:

sudo systemctl enable mongod

 

 

 

منبع:

digitalocean