سنت او اسسیستم عامل لینوکسمقالات وب
چگونه مونگو دی بی را بر روی سنت او اس ۷ نصب کنیم؟
همانطور که می دانید مونگو دی بی پایگاه داده مبتنی بر سند است که به صورت متن باز و رایگان در اختیار افراد قرار گرفته است. این پایگاه داده به عنوان پایگاه داده غیر SQL طبقه بندی شده است زیرا بر روی ساختار سنتی مبتنی بر جدول تکیه ندارد. در این مقاله قصد داریم نحوه نصب مونگو دی بی بر روی سرور مجازی سنت او اس ۷ را با هم مرور کنیم. پس همراه وب ایده باشید.
پیش نیازها:
قبل از اینکه ادامه مقاله را مطالعه کنید مطمئن شوید که کاربر غیر روت با دسترسی Sudo را دارید.
گام اول: اضافه کردن مخزن مونگو دی بی
پکیج های mongodb-org در داخل مخزن پیش فرض سنت او اس قرار ندارد. با اینحال خود مونگو دی بی مخزن اختصاصی اش را دارد. اجازه دهید این مخزن را به سرور مجازی خود اضافه کنیم. به کمک ویرایشگر Vi ، فایل .repo را برای yum ایجاد کنید:
1 | sudo vi /etc/yum.repos.d/mongodb-org.repo |
سپس اطلاعات مخزن را برای آخرین نسخه منتشر شده برای فایل، اضافه نمایید:
/etc/yum.repos.d/mongodb-org.repo
1 2 3 4 5 6 7 8 9 10 11 | [mongodb-org-3.4] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/3.4/x86_64/ gpgcheck=1 enabled=1 gpgkey=https://www.mongodb.org/static/pgp/server-3.4.asc |
فایل را ذخیره کنید و ببندید. حالا باید تایید کنید که مخزن مونگو دی بی در yum موجود است. دستور repolist، فهرستی از مخازن فعال شده را در اختیار شما قرار می دهد.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | yum repolist Output . . . repo id repo name base/7/x86_64 CentOS-7 - Base extras/7/x86_64 CentOS-7 - Extras mongodb-org-3.2/7/x86_64 MongoDB Repository updates/7/x86_64 CentOS-7 - Updates . . . |
خوب حالا که مخزن مونگو دی بی را فعال کردیم می توانیم به سراغ مراحل بعدی نصب این پایگاه داده برویم.
این مقاله را نیز بخوانید: چگونه مونگو دی بی را بر روی اوبونتو ۱۶٫۰۴ نصب کنیم؟
گام دوم: نصب مونگو دی بی
حالا می توانیم پکیج mongodb-org را از مخزن ثالث و به کمکyum، نصب کنیم.
1 | sudo yum install mongodb-org |
در این شرایط با دو سوال Is this ok [y/N]: روبرو خواهید شد. سوال اول به شما اجازه می دهد پکیج های مونگو دی بی را نصب کنید و سوال دوم کلید GPG را ایمپورت می کند. ناشر مونگو دی بی نرم افزارهای خود را امضا می کند و yum از این کلید برای تایید یکپارچگی پکیج های دانلود شده بهره می برد. در هر سوال، عبارت y را تایپ کنید و کلید اینتر را بزنید. سپس به کمک دستور زیر سرویس مونگو دی را استارت کنید:
1 | sudo systemctl start mongod |
شما می توانید وضعیت سرویس مونگو دی بی را به کمک دستورات Reload یا Stop تغییر دهید. دستور systemctl بعد از اجرای دستور Start؛ نتیجه ای را فراهم نمی کند اما شما می توانید استارت شدن سرویس را با بررسی انتهای فایل mongod.log و به کمک دستور زیر تایید کنید:
1 2 3 4 5 6 7 8 9 | udo tail /var/log/mongodb/mongod.log Output . . . [initandlisten] waiting for connections on port 27017 |
این خروجی نشان می دهد سرویس مونگو دی بی به طور موفقیت آمیزی استارت شده است و می توانیم با شل مونگو دی بی به پایگاه داده دسترسی داشته باشیم:
1 | mongo |
نکته: زمانی که شل مونگو دی بی را اجرا می کنید ممکن است با هشداری همچون هشدار زیر روبرو شوید:
1 | ** WARNING: soft rlimits too low. rlimits set to 4096 processes, 64000 files. Number of processes should be at least 32000 : 0.5 times number of files. |
مونگو دی بی ممکن است فرآیندهای اضافی را برای مدیریت بار کاری خود آغاز کند. این هشدار نشان می دهد برای اینکه مونگو دی بی به طور موثر کار کند باید تعداد فرآیندهایی که می تواند مدیریت کند نصف تعداد فایل هایی باشد که می توان در یک بازه زمانی، باز کرد. برای حل کردن این مشکل، مقدار processes را با ویرایش فایل ۲۰-nproc.conf تغییر دهید.
1 | sudo vi /etc/security/limits.d/20-nproc.conf |
خطوط زیر را به انتهای فایل اضافه کنید:
1 2 3 4 5 | /etc/security/limits.d/20-nproc.conf . . . mongod soft nproc 32000 |
به کمک دستور زیر، ریستارت کنید:
1 | sudo systemctl restart mongod |
برای اینکه بدانید چگونه می توانید از طریق شل با مونگو دی بی ارتباط داشته باشید، خروجی db.help() را بررسی کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | db.help() Output DB methods: db.adminCommand(nameOrDocument) - switches to 'admin' db, and runs command [ just calls db.runCommand(...) ] db.auth(username, password) db.cloneDatabase(fromhost) db.commandHelp(name) returns the help for the command db.copyDatabase(fromdb, todb, fromhost) db.createCollection(name, { size : ..., capped : ..., max : ... } ) db.createUser(userDocument) db.currentOp() displays currently executing operations in the db db.dropDatabase() . . . |
به کمک دستور زیر از فرآیند مونگو دی بی خارج شوید:
1 2 3 4 5 | exit Output Bye |
گام سوم: تایید شروع پایگاه داده
از آنجایی که برنامه های مبتنی بر پایگاه داده نمی توانند بدون آن، عمل کنند، باید مطمئن شوید که به همراه سیستم مونگو دی بی نیز استارت می شود. برای بررسی وضعیت شروع این پایگاه داده از دستور زیر استفاده کنید:
1 | systemctl is-enabled mongod; echo $? |
خروجی صفر نشان می دهد Daemon فعال شده است. خروجی یک نیز تایید می کند Daemon غیر فعال است
1 2 3 4 5 6 | output . . . enabled 0 |
در مواردی که daemon غیر فعال شده است از دستور زیر برای فعالسازی آن استفاده کنید:
1 | sudo systemctl enable mongod |
گام چهارم: ایمپورت مجموعه داده های نمونه
بر خلاف سایر پایگاه داده ها، مونگو دی بی داده هایی را در پایگاه داده تست خود ندارد. از آن جایی که ما نمی خواهیم نرم افزار جدید را به کمک داده های تولید امتحان کنیم، می توانید از مجموعه داده نمونه بهره مند شویم. به دایرکتوری قابل نوشتن بروید:
1 | cd /tmp |
از دستور زیر استفاده کنید و از مانگو دبی به فایل دانلود شده لینک دهید:
1 | curl -LO https://raw.githubusercontent.com/mongodb/docs-assets/primer-dataset/primer-dataset.json |
دستور زیر داده ها را وارد پایگاه داده تست می کند.
1 | mongoimport --db test --collection restaurants --file /tmp/primer-dataset.json |
خروجی زیر ایمپورت داده از فایل primer-dataset.json را تایید می کند:
1 2 3 4 5 | output connected to: localhost imported 25359 documents |
شل مونگو دی را دوباره آغاز کنید:
1 | mongo |
در این شرایط شل، پایگاه داده تست را به صورت پیش فرض انتخاب می کند. می توانید از روش find() برای یافتن فهرست یک موضوع دلخواه در مجموعه داده استفاده کنید. از انجایی که این مجموعه ها ممکن است در برگیرنده ورودی زیادی باشد از روش limit() برای محدود کردن خروجی استفاده کنید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | db.restaurants.find().limit( 1 ).pretty() Output { "_id" : ObjectId("57e0443b46af7966d1c8fa68"), "address" : { "building" : "1007", "coord" : [ -73.856077, 40.848447 ], "street" : "Morris Park Ave", "zipcode" : "10462" }, "borough" : "Bronx", "cuisine" : "Bakery", "grades" : [ { "date" : ISODate("2014-03-03T00:00:00Z"), "grade" : "A", "score" : 2 }, { "date" : ISODate("2013-09-11T00:00:00Z"), "grade" : "A", "score" : 6 }, { "date" : ISODate("2013-01-24T00:00:00Z"), "grade" : "A", "score" : 10 }, { "date" : ISODate("2011-11-23T00:00:00Z"), "grade" : "A", "score" : 9 }, { "date" : ISODate("2011-03-10T00:00:00Z"), "grade" : "B", "score" : 14 } ], "name" : "Morris Park Bake Shop", "restaurant_id" : "30075445" } |
می توانید این نمونه را بررسی کنید یا آن را به کمک دستور زیر پاک نمایید:
1 | db.restaurants.drop() |
در نهایت به کمک دستور زیر خارج شوید.
1 2 3 4 5 6 | exit Output Bye |