Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Linux Sanal Sunucular Yönetim

VPS’de MongoDB Nasıl Kurulur ve Yapılandırılır (Tam 2024 Rehberi)

MongoDB, dünyada en yaygın olarak benimsenen NoSQL veritabanlarından biridir — ve bunun iyi nedenleri vardır. Esnek belge modeli, yüksek verimli okuma/yazma performansı ve yerel yatay ölçeklenebilirliği, modern API’ler, SaaS platformları, CRM’ler, e-ticaret motorları ve veri yoğun uygulamalar için tercih edilen seçim haline getirir. Yönetilen bulut veritabanı hizmetlerinin aksine, kendi VPS Hosting üzerinde MongoDB çalıştırmak, performans ayarlaması, güvenlik sertleştirmesi ve uzun vadeli maliyetler üzerinde tam kontrol sağlar.

Bu kılavuz, sizi bir Linux VPS üzerinde üretim sınıfı MongoDB Community Edition 8.0 kurulumunda adım adım yönlendirir — Debian 12 ve Ubuntu LTS için resmi depo kurulumunu, hizmet yönetimini, kullanıcı ve veritabanı oluşturmayı, güvenlik sertleştirmesini (kimlik doğrulama, ağ bağlama, güvenlik duvarı kuralları), yedekleme stratejilerini ve yaygın sorun giderme adımlarını kapsar. İlk uygulamanızı başlatıyor olun veya mevcut bir iş yükünü taşıyor olun, bu kılavuz MongoDB’yi ilk günden itibaren güvenilir bir şekilde çalıştırır.

1. Ön Koşullar

Başlamadan önce, aşağıdaki koşulların karşılandığından emin olun:

GereksinimAyrıntılar
VPS erişimiRoot veya sudo düzeyinde SSH erişimi
İşletim sistemi64-bit Debian 12 (Bookworm) veya Ubuntu 22.04/24.04 LTS
RAMMinimum 1 GB; üretim için 2 GB+ önerilir
DepolamaSSD destekli depolama şiddetle önerilir
Güvenlik duvarıUFW veya iptables mevcut

> Önemli: MongoDB 8.0 resmi olarak Debian 12 ve Ubuntu LTS sürümlerini destekler. Her zaman MongoDB’nin resmi depolarından yükleyin — Linux dağıtımınızla birlikte gelen mongodb paketini **asla** kullanmayın, çünkü bu paket eski, desteklenmeyen ve resmi mongodb-org paketiyle çakışabilir.

Henüz bir sunucunuz yoksa, AlexHost’un VPS Hosting planları yüksek performanslı altyapıda SSD destekli Linux VPS örnekleri sunmaktadır — üretim veritabanı iş yükleri çalıştırmak için idealdir.

Sisteminizi Önce Güncelleyin

Her zaman tamamen güncellenmiş bir sistemle başlayın:

sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl

2. Debian 12 (Bookworm) üzerine MongoDB Yükleyin

MongoDB varsayılan Debian depolarında mevcut değildir, bu nedenle resmi MongoDB APT deposunu manuel olarak eklemeniz gerekir.

Adım 1 — MongoDB GPG İmzalama Anahtarını İçe Aktarın

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | 
  sudo gpg --dearmor -o /usr/share/keyrings/mongodb-server-8.0.gpg

Bu, paket bütünlüğünü doğrulamak için kullanılan GPG anahtarını indirir ve depolar. Bu adım olmadan, APT MongoDB deposundan paket yüklemeyi reddedecektir.

Adım 2 — Resmi MongoDB Deposunu Ekleyin

echo "deb [signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg] 
https://repo.mongodb.org/apt/debian bookworm/mongodb-org/8.0 main" | 
  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list > /dev/null

Adım 3 — MongoDB Community Edition’ı Yükleyin

sudo apt-get update
sudo apt-get install -y mongodb-org

APT artık en son MongoDB 8.0 sürümünü doğrudan MongoDB’nin resmi CDN’sinden çekecektir.

3. Ubuntu LTS’ye MongoDB Yükleyin (24.04 / 22.04)

İşlem Debian’a neredeyse aynıdır, ancak depo URL’si Ubuntu kod adına göre farklılık gösterir.

Adım 1 — MongoDB GPG İmzalama Anahtarını İçe Aktarın

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | 
  sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor

Adım 2 — Ubuntu Sürümünüz için Depoyu Ekleyin

Ubuntu 24.04 (Noble Numbat):

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" | 
  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Ubuntu 22.04 (Jammy Jellyfish):

echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] 
https://repo.mongodb.org/apt/ubuntu jammy/mongodb-org/8.0 multiverse" | 
  sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

Adım 3 — MongoDB Community Edition’ı Yükleyin

sudo apt-get update
sudo apt-get install -y mongodb-org

4. MongoDB Hizmetini Başlatın ve Etkinleştirin

Kurulum tamamlandıktan sonra, MongoDB’yi başlatmak ve sunucu yeniden başlatıldığında otomatik olarak başlaması için systemctl kullanın.

sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pager

Neden daemon-reload?

MongoDB’nin resmi belgeleri, hizmeti başlatmadan önce systemctl daemon-reload çalıştırılmasını özellikle önerir. Bu adımı atlarsanız ve "Unit mongod.service not found" hatasını görürseniz, önce daemon-reload çalıştırın — bu, systemd’yi disk üzerindeki birim dosyalarını yeniden okuması için zorlar.

Beklenen Çıktı

Sağlıklı bir MongoDB hizmeti şuna benzer bir çıktı gösterecektir:

● mongod.service - MongoDB Database Server
     Loaded: loaded (/lib/systemd/system/mongod.service; enabled)
     Active: active (running) since ...

Durum failed veya inactive gösteriyorsa, Sorun Giderme bölümüne gidin.

5. Veritabanları ve Kullanıcılar Oluşturun

MongoDB, yeni bir kurulumdan sonra varsayılan olarak kimlik doğrulamayı uygulamaz. Bu, kimlik doğrulamayı etkinleştirmeden önce yönetici ve uygulama kullanıcılarınızı oluşturmanız gerektiği anlamına gelir — aksi takdirde kendinizi kilitlemek riskiyle karşı karşıya kalırsınız.

MongoDB Shell’i Açın

VPS üzerinde MongoDB’ye yerel olarak bağlanın:

mongosh

Adım 1 — Yönetici Kullanıcısı Oluşturun

admin veritabanına geçin ve ayrıcalıklı bir yönetici hesabı oluşturun:

use admin

db.createUser({
  user: "admin",
  pwd: "STRONG_PASSWORD_HERE",
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" }
  ]
})

> Güvenlik ipucu: STRONG_PASSWORD_HERE yerine en az 20 karakter uzunluğunda rastgele oluşturulmuş bir şifre yazın. Bir parola yöneticisi kullanın veya bir tane oluşturmak için sunucunuzda openssl rand -base64 24 çalıştırın.

Adım 2 — Uygulama Veritabanı ve Kullanıcısı Oluşturun

Ayrılmış bir veritabanı ve yalnızca o veritabanıyla sınırlı en az ayrıcalıklı bir kullanıcı oluşturun:

use myapp

db.createUser({
  user: "myapp_user",
  pwd: "STRONG_PASSWORD_HERE",
  roles: [
    { role: "readWrite", db: "myapp" }
  ]
})

Bu, en az ayrıcalık ilkesini izler — uygulamanız yalnızca kendi veritabanına okuma/yazma erişimine sahiptir, tüm MongoDB örneğine değil.

Adım 3 — Kullanıcıların Oluşturulduğunu Doğrulayın

use admin
db.getUsers()

Shell’den çıkın:

exit

6. MongoDB Örneğinizi Güvenli Hale Getirin

Bu, rehberin en kritik bölümüdür. Genel internete açık olan yanlış yapılandırılmış MongoDB örnekleri, çok sayıda yüksek profilli veri ihliyatından sorumlu olmuştur. MongoDB’nin kendi güvenlik kontrol listesi açıktır: herhangi bir ağa maruz kalmadan önce örneğinizi güçlendirin.

A) MongoDB’yi Yalnızca Localhost’a Bağlayın (Önerilen Varsayılan)

Varsayılan olarak, MongoDB tüm ağ arayüzlerinde dinleyebilir. Uzaktan erişim için belirli, haklı bir nedenin olmadığı sürece bunu localhost ile sınırlayın.

/etc/mongod.conf dosyasını düzenleyin:

net:
  bindIp: 127.0.0.1

Değişikliği uygulayın:

sudo systemctl restart mongod

Bu, MongoDB’nin yalnızca sunucunun kendisinden erişilebilir olmasını sağlar — genel internetten değil.

B) Kimlik Doğrulamayı Etkinleştirin

Kimlik doğrulama etkinleştirilmeden, herhangi bir yerel işlem MongoDB’ye parola olmadan bağlanabilir. /etc/mongod.conf dosyasını düzenleyin:

security:
  authorization: enabled

Hizmeti yeniden başlatın:

sudo systemctl restart mongod

Şimdi kimlik doğrulamanın uygulandığını test edin:

mongosh -u admin -p --authenticationDatabase admin

C) Güvenlik Duvarını Yapılandırın

Uzaktan bağlantılara izin vermeniz gerekiyorsa (örneğin, farklı bir makinedeki bir uygulama sunucusundan), 27017 portunu yalnızca belirli bir güvenilir IP adresine kısıtlayın. 0.0.0.0/0 için 27017 portunu asla açmayın.

UFW kullanarak:

sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw status

Kuralın etkin olduğunu doğrulayın:

sudo ufw status verbose

D) Güvenli Uzaktan Erişim için SSH Tünellemesi Kullanın (En İyi Uygulama)

MongoDB’ye uzaktan erişmenin en güvenli yolu bir SSH tüneli aracılığıyladır. Bu, 27017 portunu tamamen açmaktan kaçınır ve tüm trafiği aktarım sırasında şifreler.

Yerel makinenizden:

ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IP

Daha sonra yerel MongoDB kabuğunuzdan yerel gibi bağlanın:

mongosh "mongodb://myapp_user:PASS@127.0.0.1:27017/myapp?authSource=myapp"

Bu yaklaşım, dizüstü bilgisayarlar veya uzak iş istasyonlarından üretim veritabanlarına erişen geliştiriciler için kesinlikle önerilir.

Güvenlik Sağlamlaştırma Özeti

Güvenlik ÖnlemiYapılandırma KonumuÖncelik
Yalnızca localhost’a bağla/etc/mongod.confnet.bindIpKritik
Kimlik doğrulamayı etkinleştir/etc/mongod.confsecurity.authorizationKritik
Güvenlik duvarı port kısıtlamasıUFW / iptablesYüksek
Uzaktan erişim için SSH tüneliİstemci tarafı SSH yapılandırmasıYüksek
En az ayrıcalık DB kullanıcılarını kullanmongoshdb.createUser()Yüksek
MongoDB’yi güncel tutapt-get upgrade mongodb-orgOrta

7. Yedekleme ve Geri Yükleme

Düzenli yedeklemeler herhangi bir üretim veritabanı için vazgeçilmezdir. MongoDB, MongoDB Database Tools paketinin bir parçası olarak mongodump ve mongorestore içerir.

Sıkıştırılmış Bir Yedek Arşivi Oluşturun

mongodump 
  --username admin 
  --password STRONG_PASSWORD_HERE 
  --authenticationDatabase admin 
  --archive=/root/mongo-backup.archive 
  --gzip

Bu, tüm veritabanlarının mantıksal bir dumpını içeren tek bir sıkıştırılmış arşiv dosyası oluşturur.

Bir Yedek Arşivinden Geri Yükleyin

mongorestore 
  --username admin 
  --password STRONG_PASSWORD_HERE 
  --authenticationDatabase admin 
  --archive=/root/mongo-backup.archive 
  --gzip

Cron ile Yedeklemeleri Otomatikleştirin

Cron kullanarak günlük yedeklemeler planlayın:

crontab -e

Her gün saat 02:00’de bir yedekleme çalıştırmak için aşağıdaki satırı ekleyin:

0 2 * * * mongodump --username admin --password PASS --authenticationDatabase admin --archive=/root/backups/mongo-$(date +%F).archive --gzip

> Pro ipucu: Site dışı yedeklilik için, yedek arşivlerini rsync veya rclone kullanarak harici bir depolama konumuna senkronize etmeyi düşünün. Tek yedeklemeinizi veritabanınızla aynı sunucuda depolamayın.

8. Sorun Giderme

Hizmet Günlüklerini Kontrol Edin

MongoDB başlatılamadığında veya beklenmedik şekilde davrandığında bakılacak ilk yer:

sudo journalctl -u mongod --no-pager -n 200

Bu, MongoDB’nin systemd günlüğünün son 200 satırını gösterir — genellikle kök nedeni belirlemek için yeterlidir.

MongoDB’nin Beklenen Portta Dinlediğini Doğrulayın

sudo ss -lntp | grep 27017

MongoDB çalışıyorsa ve localhost’a bağlıysa beklenen çıktı:

LISTEN  0  128  127.0.0.1:27017  0.0.0.0:*  users:(("mongod",...))

Çıktı yoksa, MongoDB çalışmıyor veya farklı bir arayüze bağlı.

Yüklü MongoDB Sürümünü Kontrol Edin

mongod --version

Yaygın Hata Mesajları ve Çözümleri

HataMuhtemel NedeniÇözüm
Unit mongod.service not foundsystemd birim dosyasını yüklemedisudo systemctl daemon-reload komutunu çalıştırın
Address already in use27017 portu başka bir işlem tarafından kullanılıyorÇakışmayı belirlemek için `sudo ss -lntpgrep 27017` komutunu çalıştırın
Authentication failedYanlış kimlik bilgileri veya yanlış authSourceKullanıcı adı, şifre ve authenticationDatabase doğrulayın
Connection refusedMongoDB çalışmıyor veya yanlış IP’ye bağlımongod.conf dosyasındaki bindIp ve hizmet durumunu kontrol edin
mongod.conf permission deniedDosya izni sorunusudo chmod 600 /etc/mongod.conf komutunu çalıştırın

9. Son Düşünceler

VPS üzerinde MongoDB çalıştırmak, esneklik, performans ve tam altyapı kontrolü gerektiren üretim iş yükleri için kanıtlanmış, uygun maliyetli bir yaklaşımdır. Bu kılavuzu takip ederek, MongoDB 8.0’ı resmi depolardan yüklediniz, kimlik doğrulamayı ve ağ bağlamalarını yapılandırdınız, en az ayrıcalıklı veritabanı kullanıcıları oluşturdunuz, güvenlik duvarı kurallarını ayarladınız ve bir yedekleme rutini oluşturdunuz.

Hatırlanması gereken birkaç önemli nokta:

  • Her zaman kimlik doğrulamayı etkinleştirin — kimlik doğrulaması olmayan bir MongoDB örneği kritik bir güvenlik açığıdır.
  • 27017 portunu asla genel internete açmayın — SSH tünellemesi kullanın veya erişimi belirli güvenilir IP’lerle sınırlayın.
  • MongoDB’yi güncel tutun — güvenlik yamaları almak için sudo apt-get upgrade mongodb-org düzenli olarak çalıştırın.
  • Yedeklemelerinizi test edin — hiç geri yüklemediğiniz bir yedekleme, güvenemeyeceğiniz bir yedeklemedir.

MongoDB dağıtımları için güvenilir, yüksek performanslı bir temel gereken ekipler için, AlexHost’un VPS Hosting hizmeti SSD NVMe depolama, tam root erişimi ve esnek kaynak ölçeklendirmesi sağlar. İş yükünüz tek bir VPS’nin ötesine büyürse, Dedicated Servers adanmış CPU ve RAM kaynakları ile gürültülü komşu etkisi olmadan sunulur — yüksek trafikli MongoDB replica setleri veya sharded clusterlar için idealdir.

Tam bir hosting yığını mı gerekli? Veritabanı VPS’inizi ön uç veya statik varlıklarınız için Shared Web Hosting ile eşleştirin ve uygulama trafiğinizi kullanıcılarınız ile sunucularınız arasında veri aktarımını korumak için bir SSL Certificate ile güvenli hale getirin.

*Debian 12 (Bookworm) ve Ubuntu 22.04/24.04 LTS üzerinde MongoDB Community Edition 8.0 için son güncelleme.*