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 verimlilik 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 arka uç haline getirir. Yönetilen bulut veritabanı hizmetlerinin aksine, MongoDB’yi kendi VPS Hosting üzerinde çalıştırmak, performans ayarlaması, güvenlik sertleştirmesi ve uzun vadeli maliyetler üzerinde tam kontrol sağlar.
Bu kılavuz, bir Linux VPS üzerinde üretim sınıfı MongoDB Community Edition 8.0 kurulumunda size yol gösterir — Debian 12 ve Ubuntu LTS için resmi depo kurulumu, hizmet yönetimi, kullanıcı ve veritabanı oluşturma, güvenlik sertleştirmesi (kimlik doğrulama, ağ bağlama, güvenlik duvarı kuralları), yedekleme stratejileri ve yaygın sorun giderme adımlarını kapsar. İlk uygulamanızı başlatıyor olsanız da mevcut bir iş yükünü taşıyor olsanız da, bu kılavuz MongoDB’yi ilk günden itibaren güvenilir bir şekilde çalıştırır.
İçindekiler
- Ön Koşullar
- Debian 12 (Bookworm) Üzerine MongoDB Yükleyin
- Ubuntu LTS (24.04 / 22.04) Üzerine MongoDB Yükleyin
- MongoDB Hizmetini Başlatın ve Etkinleştirin
- Veritabanları ve Kullanıcılar Oluşturun
- MongoDB Örneğinizi Güvenli Hale Getirin
- Yedekleme ve Geri Yükleme
- Yaygın Sorunları Giderme
- Son Düşünceler
1. Ön Koşullar {#prerequisites}
Başlamadan önce, aşağıdaki koşulların karşılandığından emin olun:
| Gereksinim | Ayrıntılar |
|---|---|
| VPS erişimi | Root veya sudo düzeyinde SSH erişimi |
| İşletim sistemi | 64-bit Debian 12 (Bookworm) veya Ubuntu 22.04/24.04 LTS |
| RAM | Minimum 1 GB; üretim için 2 GB+ önerilir |
| Depolama | SSD destekli depolama kesinlikle ö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, desteklenmiyor 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 sunar — üretim veritabanı iş yükleri çalıştırmak için ideal.
Sisteminizi Önce Güncelleyin
Her zaman tam güncellenmiş bir sistem ile başlayın:
sudo apt-get update && sudo apt-get -y upgrade
sudo apt-get install -y gnupg curl2. Debian 12 (Bookworm) Üzerine MongoDB Yükleyin {#install-debian}
MongoDB, varsayılan Debian depolarında mevcut değildir, bu nedenle resmi MongoDB APT deposunu el ile 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.gpgBu, paket bütünlüğünü doğrulamak için kullanılan GPG anahtarını indirir ve depolar. Bu adımı atlarsanız, 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/nullAdım 3 — MongoDB Community Edition’ı Yükleyin
sudo apt-get update
sudo apt-get install -y mongodb-orgAPT artık en son MongoDB 8.0 sürümünü doğrudan MongoDB’nin resmi CDN’sinden çekecektir.
3. Ubuntu LTS (24.04 / 22.04) Üzerine MongoDB Yükleyin {#install-ubuntu}
İş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 --dearmorAdım 2 — Ubuntu Sürümünüz İç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.listUbuntu 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.listAdım 3 — MongoDB Community Edition’ı Yükleyin
sudo apt-get update
sudo apt-get install -y mongodb-org4. MongoDB Hizmetini Başlatın ve Etkinleştirin {#start-service}
Yüklendikten sonra, MongoDB’yi başlatmak ve sunucu yeniden başlatıldığında otomatik olarak başlaması için yapılandırmak üzere systemctl kullanın.
sudo systemctl daemon-reload
sudo systemctl start mongod
sudo systemctl enable mongod
sudo systemctl status mongod --no-pagerNeden daemon-reload?
MongoDB’nin resmi belgeleri, hizmeti başlatmadan önce systemctl daemon-reload çalıştırılmasını özel olarak önerir. Bu adımı atlarsanız ve “Unit mongod.service not found” hatasını görürseniz, önce daemon-reload çalıştırın — systemd’yi diskten 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 atlayın.
5. Veritabanları ve Kullanıcılar Oluşturun {#create-databases-users}
MongoDB, yeni bir kurulumdan sonra varsayılan olarak kimlik doğrulamayı zorlamaz. 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 riskine girersiniz.
MongoDB Kabuğunu Açın
VPS’de MongoDB’ye yerel olarak bağlanın:
mongoshAdı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 parola koyun. Bir parola yöneticisi kullanın veya sunucunuzda openssl rand -base64 24 çalıştırarak bir tane oluşturun.
Adım 2 — Uygulama Veritabanı ve Kullanıcısı Oluşturun
Adanmış bir veritabanı ve yalnızca o veritabanına kapsamlı en az ayrıcalık kullanıcısı 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 takip eder — 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()Kabuktan çıkın:
exit6. MongoDB Örneğinizi Güvenli Hale Getirin {#secure-mongodb}
Bu kılavuzun 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 ihlali için sorumlu olmuştur. MongoDB’nin kendi güvenlik kontrol listesi açıktır: herhangi bir ağa maruz bırakmadan önce örneğinizi sertleştirin.
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 nedeniniz olmadıkça bunu localhost ile sınırlayın.
/etc/mongod.conf dosyasını düzenleyin:
net:
bindIp: 127.0.0.1Değişikliği uygulayın:
sudo systemctl restart mongodBu, 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 parola olmadan MongoDB’ye bağlanabilir. /etc/mongod.conf dosyasını düzenleyin:
security:
authorization: enabledHizmeti yeniden başlatın:
sudo systemctl restart mongodŞimdi kimlik doğrulamanın uygulandığını test edin:
mongosh -u admin -p --authenticationDatabase adminC) Güvenlik Duvarını Yapılandırın
Uzaktan bağlantılara izin vermeniz gerekiyorsa (örneğin, farklı bir makinedeki bir uygulama sunucusundan), port 27017 öğesini yalnızca belirli bir güvenilir IP adresine kısıtlayın. Port 27017’yi asla 0.0.0.0/0 öğesine açmayın.
UFW kullanarak:
sudo ufw allow from YOUR.TRUSTED.IP.ADDRESS to any port 27017 proto tcp
sudo ufw enable
sudo ufw statusKuralın etkin olduğunu doğrulayın:
sudo ufw status verboseD) Güvenli Uzaktan Erişim İç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, port 27017’yi tamamen açmaktan kaçınır ve tüm trafiği aktarımda şifreler.
Yerel makinenizden:
ssh -L 27017:127.0.0.1:27017 root@YOUR_VPS_IPArdından 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ü bilgisayarlardan veya uzak iş istasyonlarından üretim veritabanlarına erişen geliştiriciler için kesinlikle önerilir.
Güvenlik Sertleştirmesi Özeti
| Güvenlik Önlemi | Yapılandırma Konumu | Öncelik |
|---|---|---|
| Yalnızca localhost’a bağlayın | /etc/mongod.conf → net.bindIp | Kritik |
| Kimlik doğrulamayı etkinleştirin | /etc/mongod.conf → security.authorization | Kritik |
| Güvenlik duvarı bağlantı noktası kısıtlaması | UFW / iptables | Yü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ı kullanın | mongosh → db.createUser() | Yüksek |
| MongoDB’yi güncel tutun | apt-get upgrade mongodb-org | Orta |
7. Yedekleme ve Geri Yükleme {#backup-restore}
Düzenli yedeklemeler, herhangi bir üretim veritabanı için tartışılmaz. MongoDB, MongoDB Database Tools paketinin bir parçası olarak mongodump ve mongorestore içerir.
Sıkıştırılmış Yedek Arşivi Oluşturun
mongodump
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzipBu, tüm veritabanlarının mantıksal bir dökümünü içeren tek bir sıkıştırılmış arşiv dosyası oluşturur.
Yedek Arşivinden Geri Yükleyin
mongorestore
--username admin
--password STRONG_PASSWORD_HERE
--authenticationDatabase admin
--archive=/root/mongo-backup.archive
--gzip