فارسی (Farsi)
€EUR

نصب و ایمن‌سازی MongoDB 8.0 روی VPS با Ubuntu 24.04

2 min
سرور مجازی (VPS/VDS)

MongoDB یک پایگاه داده سندمحور است که در APIها، برنامه‌های Node.js و تحلیل داده کاربرد فراوان دارد. اوبونتو آن را در مخازن خودش ندارد، پس باید از مخزن رسمی MongoDB نصبش کرد. این راهنما آن را روی VPS Linux Infrawire راه‌اندازی می‌کند، احراز هویت را فعال می‌کند و دسترسی را محدود می‌سازد.

📋 پیش‌نیازها

  • یک VPS با Ubuntu 24.04 (noble) روی معماری x86_64 یا ARM64 و دسترسی SSH با کاربر root (آی‌پی و گذرواژه root در بخش مشتریان شما موجود است)
  • پردازنده‌ای که مجموعه دستورهای AVX را ارائه دهد (از MongoDB 5.0 به بعد الزامی است): خروجی grep -c avx /proc/cpuinfo باید عددی بزرگ‌تر از 0 باشد
  • دست‌کم 2 گیگابایت رم توصیه می‌شود

1. افزودن مخزن رسمی

کلید امضا را وارد کنید و مخزن مربوط به Ubuntu 24.04 را تعریف کنید.

Bash
apt update && apt install -y curl gnupg curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor echo 'deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse' > /etc/apt/sources.list.d/mongodb-org-8.0.list

2. نصب و راه‌اندازی سرویس

Bash
apt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager

متابسته mongodb-org سرور (mongod)، پوسته (mongosh) و ابزارها را نصب می‌کند. داده‌ها در /var/lib/mongodb و لاگ‌ها در /var/log/mongodb/mongod.log قرار دارند.

3. ساخت کاربر مدیر

احراز هویت هنوز غیرفعال است، پس پوسته محلی بدون اطلاعات ورود متصل می‌شود. اولین مدیر را در پایگاه داده admin بسازید؛ passwordPrompt() گذرواژه را می‌پرسد تا هرگز در تاریخچه پوسته نماند.

Bash
mongosh
JavaScript
1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})

4. فعال‌سازی احراز هویت

فایل /etc/mongod.conf را ویرایش کنید و بلوک security را اضافه (یا از حالت توضیح خارج) کنید:

YAML
security: authorization: enabled
Bash
systemctl restart mongod

از این پس هر اتصال باید احراز هویت شود.

5. ساخت کاربر برنامه

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

Bash
mongosh -u admin -p --authenticationDatabase admin
JavaScript
1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})

رشته اتصال متناظر mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb است.

6. دسترسی شبکه و فایروال

MongoDB به‌طور پیش‌فرض فقط روی 127.0.0.1 گوش می‌دهد؛ این امن‌ترین حالت است، وقتی برنامه روی همان VPS اجرا می‌شود. برای اجازه دادن به سرور دیگر، آدرس VPS را در /etc/mongod.conf اضافه کنید:

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

سپس در فایروال فقط سرور برنامه را مجاز کنید و هرگز پورت 27017 را برای کل اینترنت باز نکنید:

Bash
ufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod

✅ بررسی نصب

Bash
mongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017

دستور آخر نشان می‌دهد MongoDB روی کدام آدرس گوش می‌دهد. یک پرس‌وجوی بدون احراز هویت مانند db.getUsers() اکنون باید با خطای مجوز شکست بخورد.

🔧 عیب‌یابی

mongod شروع نمی‌شود (Illegal instruction یا کد خروج 132) : پردازنده مجازی AVX را ارائه نمی‌دهد. با grep avx /proc/cpuinfo بررسی کنید؛ بدون AVX، MongoDB 8.0 روی این ماشین اجرا نمی‌شود.

شروع با خطای دسترسی ناموفق است : مالک فایل‌های داده و سوکت را با chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb اصلاح کنید، فایل قدیمی /tmp/mongodb-27017.sock را حذف کنید و ری‌استارت کنید. جزئیات در journalctl -u mongod است.

Authentication failed : کاربر در یک پایگاه داده مشخص ساخته شده است. پایگاه درست را با --authenticationDatabase (یا authSource در URI) بدهید.

اتصال راه دور با تایم‌اوت مواجه می‌شود : bindIp، قوانین ufw status و اینکه آی‌پی کلاینت با آی‌پی مجاز شما یکی باشد را بررسی کنید.


🎉 MongoDB 8.0 نصب شد، با احراز هویت ایمن شد و برای برنامه شما آماده است!

با آخرین پیشنهادها، تخفیف‌ها و تبلیغات ویژه به‌روز بمانید.

مشاهده تخفیف‌ها

ما از کوکی استفاده می‌کنیم

ما از کوکی‌های تحلیلی برای بهبود تجربه شما در سایت خود استفاده می‌کنیم. هیچ داده‌ای به اشخاص ثالث فروخته نمی‌شود. اطلاعات بیشتر در سیاست حفظ حریم خصوصی ما.