Debian 8 Üzerinde MongoDB Kurulumu: Kapsamlı Bir Rehber
Giriş: MongoDB ve NoSQL Veritabanlarının Yükselişi
Günümüzün hızla değişen dijital dünyasında, geleneksel ilişkisel veritabanları (RDBMS) bazen modern uygulama geliştirme ihtiyaçlarını karşılamakta yetersiz kalabilmektedir. Büyük veri setleriyle çalışma, yüksek ölçeklenebilirlik gereksinimleri ve esnek şema yapıları, NoSQL (Not Only SQL) veritabanlarının popülaritesini artırmıştır. NoSQL veritabanları, verileri ilişkisel tablolarda depolamak yerine, belge, anahtar-değer, sütun veya grafik gibi farklı formatlarda saklayarak daha esnek ve performanslı çözümler sunar.
MongoDB, NoSQL veritabanları arasında en popüler ve yaygın olarak kullanılanlardan biridir. Belge tabanlı bir veritabanı olarak, verileri JSON benzeri BSON (Binary JSON) formatında depolar. Bu yapı, geliştiricilere şemasız bir yaklaşım sunarak, veritabanı şemasını önceden tanımlama zorunluluğunu ortadan kaldırır. Bu esneklik, özellikle çevik geliştirme metodolojileriyle çalışan projelerde büyük avantaj sağlar. MongoDB, yüksek performans, yüksek erişilebilirlik (replika setleri aracılığıyla) ve yatay ölçeklenebilirlik (sharding aracılığıyla) özellikleriyle bilinir. Büyük ölçekli uygulamalardan mikroservislere kadar geniş bir kullanım alanına sahiptir.
Bu makalede, Debian 8 (Jessie) işletim sistemi üzerinde MongoDB’nin adım adım nasıl kurulacağını, yapılandırılacağını ve temel güvenlik önlemlerinin nasıl alınacağını detaylı bir şekilde ele alacağız. Debian 8, kararlılığı ve güvenilirliği ile bilinen bir Linux dağıtımıdır ve birçok sunucu ortamında tercih edilmektedir. Her ne kadar Debian’ın daha yeni sürümleri mevcut olsa da, birçok eski sistem hala Debian 8 kullanmakta ve bu sistemler üzerinde MongoDB kurulumu ihtiyacı devam etmektedir. Bu rehber, Debian 8 kullanıcılarının MongoDB’yi sorunsuz bir şekilde kurmalarına yardımcı olmayı amaçlamaktadır.
Ön Gereksinimler
MongoDB kurulumuna başlamadan önce, sisteminizin belirli gereksinimleri karşıladığından emin olmanız önemlidir. Bu ön gereksinimler, kurulum sürecinin sorunsuz ilerlemesini sağlayacaktır.
Debian 8 İşletim Sistemi
Bu rehber, özel olarak Debian 8 “Jessie” sürümü için yazılmıştır. Sisteminizde Debian 8’in kurulu ve çalışır durumda olması gerekmektedir. İşletim sistemi sürümünüzü kontrol etmek için aşağıdaki komutu kullanabilirsiniz:
cat /etc/os-release
Çıktıda VERSION="8 (jessie)" veya benzeri bir ifade görmelisiniz.
Sudo Yetkileri veya Root Erişimi
Kurulum ve yapılandırma adımlarının çoğu, sistem genelinde değişiklikler yapmayı gerektirecektir. Bu nedenle, sudo yetkilerine sahip bir kullanıcı olarak oturum açmış olmanız veya doğrudan root kullanıcısı olarak işlem yapmanız gerekmektedir. sudo kullanmak, güvenlik açısından genellikle daha iyi bir uygulamadır.
Güncel Sistem Paketleri
Sisteminizdeki mevcut paketlerin güncel olması, olası uyumluluk sorunlarını önleyecektir. Kuruluma başlamadan önce paket listesini güncellemeli ve yüklü paketleri yükseltmelisiniz:
sudo apt update
sudo apt upgrade -y
apt update komutu, yerel paket indeksinizi güncellerken, apt upgrade komutu ise mevcut tüm paketleri en son sürümlerine yükseltir. -y bayrağı, tüm sorulara otomatik olarak “evet” yanıtı verilmesini sağlar.
İnternet Bağlantısı
MongoDB paketlerini indirmek ve bağımlılıklarını çözmek için aktif bir internet bağlantısına ihtiyacınız olacaktır.
Bu ön gereksinimler karşılandığında, Debian 8 sisteminiz MongoDB kurulumuna hazır demektir.
MongoDB Kurulum Adımları
MongoDB’yi Debian 8 üzerine kurmak için resmi MongoDB deposunu kullanacağız. Bu yöntem, en güncel ve kararlı sürümlere erişim sağlar ve bağımlılıkların otomatik olarak yönetilmesine olanak tanır.
Adım 1: MongoDB Genel Anahtarını İçe Aktarma
APT (Advanced Package Tool) paket yöneticisi, indirdiği paketlerin güvenilirliğini doğrulamak için GPG (GNU Privacy Guard) anahtarlarını kullanır. MongoDB deposundan paket indirirken, bu paketlerin gerçekten MongoDB tarafından yayınlandığını doğrulamak için MongoDB’nin genel GPG anahtarını sisteminize eklemeniz gerekir.
Aşağıdaki komutu kullanarak MongoDB’nin GPG anahtarını içe aktarın:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
* apt-key adv: apt-key komutunun gelişmiş seçeneklerini kullanır.
* --keyserver hkp://keyserver.ubuntu.com:80: Anahtarın hangi anahtar sunucusundan alınacağını belirtir. Ubuntu’nun anahtar sunucusu yaygın olarak kullanılır.
* --recv EA312927: İçe aktarılacak anahtarın kimliğini belirtir.
Bu komutun çıktısı genellikle OK ile biter. Eğer bir hata alırsanız, internet bağlantınızı veya anahtar sunucusuna erişimi kontrol etmeniz gerekebilir.
Adım 2: MongoDB Depo Kaynağını Ekleme
GPG anahtarını içe aktardıktan sonra, APT’ye MongoDB paketlerinin nerede bulunacağını söylememiz gerekir. Bunun için /etc/apt/sources.list.d/ dizinine yeni bir dosya ekleyerek MongoDB deposunu tanımlayacağız. Debian 8 (Jessie) için MongoDB’nin 3.2 sürümü genellikle uygun ve stabil bir seçenektir. MongoDB’nin farklı sürümleri için depo URL’leri değişebilir. Bu rehberde MongoDB 3.2 sürümünü hedefleyeceğiz.
Yeni bir depo dosyası oluşturmak için aşağıdaki komutu kullanın:
echo "deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
* echo "...": Tırnak içindeki metni ekrana yazdırır.
* sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list: tee komutu, echo çıktısını hem ekrana yazdırır hem de belirtilen dosyaya yazar. sudo ile bu dosya root yetkileriyle oluşturulur.
* deb http://repo.mongodb.org/apt/debian jessie/mongodb-org/3.2 main: Bu satır, APT’ye MongoDB 3.2’nin Debian Jessie için ana deposunu kullanmasını söyler.
Bu adım, sisteminize MongoDB paketlerini indirmek için gerekli olan kaynak bilgisini ekler.
Adım 3: Paket Listesini Güncelleme
Yeni bir depo kaynağı eklediğinizde, APT’nin bu yeni kaynağı tanıması ve paket listesini güncellemesi gerekir.
Aşağıdaki komutu çalıştırarak paket listesini güncelleyin:
sudo apt update
Bu komut, sisteminizdeki tüm depoların (MongoDB deposu dahil) paket bilgilerini yenileyecektir. Güncelleme sırasında MongoDB deposundan paket bilgileri çekildiğini görmelisiniz.
Adım 4: MongoDB Paketlerini Kurma
Paket listesi güncellendikten sonra, MongoDB’yi kurmaya hazırız. MongoDB, genellikle mongodb-org metapaketini kullanarak kurulur. Bu metapaket, MongoDB sunucusu (mongod), istemci kabuğu (mongo), ve diğer yardımcı programları (mongos, mongodump, mongorestore vb.) içeren tüm gerekli bileşenleri otomatik olarak yükler.
Aşağıdaki komutu kullanarak MongoDB’yi kurun:
sudo apt install -y mongodb-org
* sudo apt install -y mongodb-org: mongodb-org paketini ve tüm bağımlılıklarını kurar. -y bayrağı, kurulum sırasında sorulan onay sorularına otomatik olarak “evet” yanıtı verilmesini sağlar.
Kurulumun tamamlanması, internet bağlantınızın hızına ve sisteminizin performansına bağlı olarak birkaç dakika sürebilir. Kurulum tamamlandığında, MongoDB sunucusu (mongod) otomatik olarak başlatılmalı ve sistem açılışında otomatik başlamak üzere yapılandırılmalıdır.
MongoDB Servisini Yönetme
MongoDB kurulduktan sonra, veritabanı sunucusunu (mongod) yönetmek için systemd (Debian 8’de kullanılan init sistemi) komutlarını kullanabilirsiniz.
MongoDB Servisini Başlatma
Eğer kurulum sırasında otomatik olarak başlamadıysa veya durdurulmuşsa, MongoDB servisini başlatmak için aşağıdaki komutu kullanın:
sudo systemctl start mongod
MongoDB Servisini Otomatik Başlatmaya Ayarlama
Sistem yeniden başlatıldığında MongoDB’nin otomatik olarak başlamasını sağlamak için aşağıdaki komutu kullanın:
sudo systemctl enable mongod
MongoDB Servisinin Durumunu Kontrol Etme
MongoDB servisinin çalışıp çalışmadığını, herhangi bir hata olup olmadığını kontrol etmek için:
sudo systemctl status mongod
Eğer servis başarıyla çalışıyorsa, çıktıda Active: active (running) ifadesini görmelisiniz.
MongoDB Servisini Durdurma
MongoDB servisini durdurmak için:
sudo systemctl stop mongod
MongoDB Servisini Yeniden Başlatma
Yapılandırma dosyalarında değişiklik yaptıktan sonra veya başka bir nedenle servisi yeniden başlatmanız gerektiğinde:
sudo systemctl restart mongod
Bu komutlar, MongoDB sunucunuzun yaşam döngüsünü yönetmenizi sağlar.
Kurulumu Doğrulama
MongoDB kurulumunun başarılı olup olmadığını ve veritabanı sunucusunun düzgün çalışıp çalışmadığını doğrulamak önemlidir.
MongoDB Kabuğuna Bağlanma
mongo kabuğu, MongoDB sunucusu ile etkileşim kurmak için kullanılan bir komut satırı aracıdır.
Aşağıdaki komutu çalıştırarak MongoDB kabuğuna bağlanın:
mongo
Eğer bağlantı başarılı olursa, MongoDB kabuk istemini (>) görmelisiniz. Bu, mongod servisinin çalıştığı ve istemci bağlantılarını kabul ettiği anlamına gelir.
Kabuk içindeyken, bazı temel komutları çalıştırarak veritabanının çalıştığını doğrulayabilirsiniz:
* Veritabanı Sürümünü Kontrol Etme:
db.version()
Bu, MongoDB sunucusunun sürümünü döndürecektir (örneğin, “3.2.x”).
* Mevcut Veritabanlarını Listeleme:
show dbs
Bu, sistemde mevcut olan veritabanlarını listeleyecektir. İlk kurulumda genellikle admin, config ve local adında sistem veritabanlarını görürsünüz.
* Yeni Bir Veritabanı Oluşturma ve Veri Ekleme:
use mytestdb
db.mycollection.insertOne({ name: "Deneme Verisi", value: 123 })
use mytestdb komutu, mytestdb adında bir veritabanına geçiş yapar (eğer yoksa oluşturur). db.mycollection.insertOne() komutu ise mycollection adlı bir koleksiyona (ilişkisel veritabanlarındaki tabloya benzer) bir belge ekler.
* Eklenen Veriyi Sorgulama:
db.mycollection.find()
Bu komut, mycollection içindeki tüm belgeleri listeleyecektir. Eklediğiniz belgeyi burada görmelisiniz.
Bu adımları başarıyla tamamladıysanız, MongoDB kurulumunuz sorunsuz bir şekilde çalışıyor demektir. MongoDB kabuğundan çıkmak için exit komutunu kullanın.
MongoDB Yapılandırması (/etc/mongod.conf)
MongoDB’nin varsayılan yapılandırması çoğu temel kullanım senaryosu için yeterli olsa da, özellikle üretim ortamlarında veya özel ihtiyaçlarınız olduğunda yapılandırma dosyasını düzenlemeniz gerekebilir. MongoDB’nin ana yapılandırma dosyası /etc/mongod.conf konumundadır.
Bu dosya YAML formatındadır ve sudo yetkileriyle düzenlenmelidir. Örneğin, nano veya vi gibi bir metin düzenleyici kullanabilirsiniz:
sudo nano /etc/mongod.conf
İşte bazı önemli yapılandırma seçenekleri:
1. net.bindIp (Ağ Bağlantısı)
Bu seçenek, MongoDB’nin hangi IP adreslerini dinleyeceğini belirler.
* Varsayılan: 127.0.0.1 (yalnızca yerel bağlantılara izin verir)
* Değiştirme: Eğer MongoDB sunucunuza başka makinelerden erişilmesini istiyorsanız, bu değeri sunucunuzun IP adresine veya tüm arayüzlerden erişime izin vermek için 0.0.0.0 olarak değiştirebilirsiniz.
net:
port: 27017
bindIp: 0.0.0.0 # Tüm arayüzlerden erişime izin verir (DİKKAT: Güvenlik riski taşır, firewall ile kısıtlanmalı!)
# bindIp: 192.168.1.100 # Belirli bir IP adresinden erişime izin verir
Önemli Güvenlik Uyarısı: bindIp değerini 0.0.0.0 olarak ayarlamak, MongoDB’nin tüm ağ arayüzlerinden erişilebilir olmasını sağlar. Bu, güvenlik duvarı (firewall) kuralları ile uygun şekilde kısıtlanmadığı takdirde ciddi bir güvenlik riski oluşturur. Üretim ortamlarında, yalnızca belirli güvenilir IP adreslerinden veya uygulama sunucularından erişime izin vermek için bindIp değerini ve güvenlik duvarınızı dikkatlice yapılandırmalısınız.
2. storage.dbPath (Veri Yolu)
MongoDB veritabanı dosyalarının depolandığı dizini belirtir.
* Varsayılan: /var/lib/mongodb
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
Bu yolu değiştirirseniz, MongoDB’nin yeni dizine yazma izinlerine sahip olduğundan emin olmalı ve gerekirse dizini manuel olarak oluşturmalısınız:
sudo mkdir -p /yeni/veri/yolu
sudo chown -R mongodb:mongodb /yeni/veri/yolu
3. systemLog.path (Log Yolu)
MongoDB sunucusunun log dosyalarının depolandığı yolu belirtir. Hata ayıklama ve sorun giderme için önemlidir.
* Varsayılan: /var/log/mongodb/mongod.log
systemLog:
destination: file
logAppend: true
path: /var/log/mongodb/mongod.log
4. security.authorization (Kimlik Doğrulama)
Bu seçenek, MongoDB’de kullanıcı kimlik doğrulamasını etkinleştirir. Üretim ortamlarında mutlaka etkinleştirilmelidir.
* Varsayılan: Devre dışı (kimlik doğrulaması olmadan herkes bağlanabilir)
* Etkinleştirme:
security:
authorization: enabled
Kimlik doğrulamasını etkinleştirdikten sonra, veritabanına bağlanmak için bir kullanıcı adı ve şifre sağlamanız gerekecektir. Bu, aşağıdaki “Güvenlik Önlemleri” bölümünde daha ayrıntılı olarak ele alınacaktır.
Yapılandırma dosyasında değişiklik yaptıktan sonra, değişikliklerin etkili olması için MongoDB servisini yeniden başlatmanız gerekir:
sudo systemctl restart mongod
Log dosyasını kontrol ederek (sudo tail -f /var/log/mongodb/mongod.log), herhangi bir hata olup olmadığını görebilirsiniz.
Güvenlik Önlemleri ve En İyi Uygulamalar
MongoDB’yi üretim ortamında kullanırken güvenlik, en kritik konulardan biridir. Varsayılan kurulum, genellikle güvenlik açısından zayıftır ve ek yapılandırmalar gerektirir.
1. Kimlik Doğrulama (Authentication)
MongoDB’nin varsayılan kurulumunda kimlik doğrulama devre dışıdır, bu da herkesin veritabanına tam erişim sağlayabileceği anlamına gelir. Bu durumu düzeltmek için kimlik doğrulamayı etkinleştirmeli ve kullanıcılar oluşturmalısınız.
Kimlik Doğrulamayı Etkinleştirme Adımları:
1. MongoDB yapılandırma dosyasını düzenleyin (/etc/mongod.conf):
security bölümünün altına authorization: enabled satırını ekleyin veya var olan yorum satırını kaldırın:
security:
authorization: enabled
2. MongoDB servisini yeniden başlatın:
sudo systemctl restart mongod
3. Yönetici Kullanıcı Oluşturun:
Kimlik doğrulama etkinleştirildikten sonra, henüz bir kullanıcı oluşturulmadığı için mongo kabuğuna bağlanabilirsiniz. Ancak, herhangi bir veritabanı işlemine izin verilmeyecektir. Bu durumda, ilk yönetici kullanıcıyı oluşturmanız gerekir.
mongo
Kabuk içinde, admin veritabanına geçiş yapın ve bir yönetici kullanıcı oluşturun:
use admin
db.createUser(
{
user: "adminUser",
pwd: "your_strong_password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" }, "readWriteAnyDatabase", "dbAdminAnyDatabase" ]
}
)
* userAdminAnyDatabase: Tüm veritabanları üzerinde kullanıcıları yönetme yetkisi verir.
* readWriteAnyDatabase: Tüm veritabanları üzerinde okuma ve yazma yetkisi verir.
* dbAdminAnyDatabase: Tüm veritabanları üzerinde veritabanı yönetimi yetkisi verir.
your_strong_password kısmını güçlü bir şifreyle değiştirmeyi unutmayın.
4. MongoDB kabuğundan çıkın (exit) ve yönetici kullanıcı ile tekrar bağlanın:
mongo -u adminUser -p --authenticationDatabase admin
Parola istendiğinde, belirlediğiniz şifreyi girin. Başarılı bir şekilde bağlanırsanız, artık yetkilendirilmiş bir kullanıcı olarak işlem yapabilirsiniz.
5. Uygulama Kullanıcıları Oluşturma:
Uygulamalarınız için de belirli yetkilere sahip kullanıcılar oluşturmanız önerilir. Örneğin, mytestdb veritabanı için okuma/yazma yetkisine sahip bir kullanıcı:
use mytestdb
db.createUser(
{
user: "appUser",
pwd: "app_strong_password",
roles: [ { role: "readWrite", db: "mytestdb" } ]
}
)
Uygulamanız, bu kullanıcı adı ve şifre ile mytestdb veritabanına bağlanmalıdır.
2. Ağ Güvenliği (Firewall)
MongoDB sunucusuna yalnızca güvenilir kaynaklardan erişime izin vermek için bir güvenlik duvarı yapılandırmanız şarttır. Debian’da ufw (Uncomplicated Firewall) veya iptables kullanabilirsiniz.
UFW ile Güvenlik Duvarı Yapılandırma (Önerilen):
1. UFW’yi kurun (eğer kurulu değilse):
sudo apt install ufw -y
2. Varsayılan politikaları ayarlayın (gelen bağlantıları reddet, giden bağlantılara izin ver):
sudo ufw default deny incoming
sudo ufw default allow outgoing
3. SSH bağlantılarına izin verin:
sudo ufw allow ssh
4. MongoDB’ye erişime izin verin (yalnızca belirli IP’lerden):
Eğer MongoDB’ye yalnızca belirli bir IP adresinden (örneğin, uygulama sunucunuzun IP’si) erişilmesi gerekiyorsa:
sudo ufw allow from 192.168.1.100 to any port 27017
Eğer tüm IP’lerden erişime izin vermek zorundaysanız (ki bu önerilmez):
sudo ufw allow 27017
5. UFW’yi etkinleştirin:
sudo ufw enable
Etkinleştirme sırasında SSH bağlantınızın kesilebileceği konusunda bir uyarı alabilirsiniz. Onaylayın.
6. UFW durumunu kontrol edin:
sudo ufw status verbose
Bu adımlar, MongoDB portuna (varsayılan 27017) yetkisiz erişimi engellemeye yardımcı olacaktır.
3. Erişim Kontrolü (Network Access Control)
/etc/mongod.conf dosyasındaki net.bindIp ayarı, MongoDB’nin hangi ağ arayüzlerinden bağlantıları kabul edeceğini kontrol eder. Varsayılan olarak 127.0.0.1 olarak ayarlanmıştır, bu da yalnızca yerel makineden erişime izin verir. Eğer uzak bağlantılara izin vermek istiyorsanız, bunu sunucunuzun özel IP adresine veya 0.0.0.0 olarak değiştirebilirsiniz. Ancak 0.0.0.0 kullanırken yukarıdaki güvenlik duvarı kurallarının mutlaka uygulanması gerekir.
4. Güncelleme Yönetimi
MongoDB ve Debian işletim sisteminizi düzenli olarak güncel tutmak, bilinen güvenlik açıklarına karşı korunmanızı sağlar.
sudo apt update
sudo apt upgrade -y
MongoDB’nin kendisi için de periyodik olarak yeni sürümleri kontrol etmeli ve güvenlik yamalarını uygulamalısınız.
5. Yedekleme ve Geri Yükleme
Veri kaybını önlemek için düzenli yedeklemeler kritik öneme sahiptir. MongoDB, mongodump ve mongorestore yardımcı programlarını sunar.
* Yedekleme (mongodump):
mongodump --out /path/to/backup/directory
Yetkilendirme etkinse:
mongodump -u adminUser -p --authenticationDatabase admin --out /path/to/backup/directory
* Geri Yükleme (mongorestore):
mongorestore /path/to/backup/directory
Yetkilendirme etkinse:
mongorestore -u adminUser -p --authenticationDatabase admin /path/to/backup/directory
6. İzleme (Monitoring)
MongoDB sunucunuzun performansını ve sağlığını düzenli olarak izlemek, sorunları erken tespit etmenize yardımcı olur. MongoDB, mongostat ve mongotop gibi araçlar sunar. Ayrıca, Prometheus, Grafana veya bulut sağlayıcıların izleme hizmetleri gibi üçüncü taraf araçları da kullanabilirsiniz.
7. Replica Setler ve Sharding
Üretim ortamlarında yüksek erişilebilirlik ve veri dayanıklılığı için MongoDB’yi bir replica set olarak yapılandırmak şiddetle tavsiye edilir. Replica setler, verilerinizin birden fazla sunucuda kopyalarını tutarak tek hata noktasını ortadan kaldırır. Büyük veri setleri ve yüksek yazma/okuma yükleri için sharding (verilerin birden fazla sunucuya dağıtılması) ölçeklenebilirliği artırır. Bu konular, temel kurulumun ötesine geçse de, üretimde göz önünde bulundurulması gereken önemli mimari kararlardır.
Bu güvenlik önlemleri ve en iyi uygulamalar, MongoDB dağıtımınızın güvenliğini ve kararlılığını önemli ölçüde artıracaktır.
Sık Karşılaşılan Sorunlar ve Çözümleri
MongoDB kurulumu ve yapılandırması sırasında bazı yaygın sorunlarla karşılaşabilirsiniz. İşte bunlardan bazıları ve olası çözümleri:
1. MongoDB Servisi Başlatılamıyor veya Durum “Active: failed”
Bu, en yaygın sorunlardan biridir.
* Çözüm: MongoDB’nin log dosyalarını kontrol edin. Varsayılan olarak /var/log/mongodb/mongod.log konumundadır.
sudo tail -f /var/log/mongodb/mongod.log
Log dosyasındaki hata mesajları, sorunun kök nedenini anlamanıza yardımcı olacaktır. Yaygın nedenler şunlardır:
* Yapılandırma Hatası: /etc/mongod.conf dosyasında bir yazım hatası veya yanlış bir parametre. YAML formatına dikkat edin (girintiler önemlidir).
* Veri Dizinine Erişim Sorunu: dbPath olarak belirtilen dizinin mevcut olmaması veya MongoDB kullanıcısının bu dizine yazma iznine sahip olmaması. Gerekirse dizini oluşturun ve izinleri ayarlayın: sudo mkdir -p /var/lib/mongodb ve sudo chown -R mongodb:mongodb /var/lib/mongodb.
* Kilit Dosyası (mongod.lock): Önceki bir kapatma sırasında MongoDB düzgün kapanmadıysa, veri dizininde bir mongod.lock dosyası kalmış olabilir. Bu dosyayı silmeyi deneyin (ancak bu, veritabanı bozulmasına yol açabileceği için dikkatli olun ve sadece gerekliyse yapın): sudo rm /var/lib/mongodb/mongod.lock. Ardından sudo systemctl start mongod komutunu tekrar çalıştırın.
* Port Çakışması: MongoDB’nin varsayılan portu (27017) başka bir uygulama tarafından kullanılıyor olabilir.
2. apt update Sırasında GPG Anahtarı Hatası
NO_PUBKEY veya benzeri bir hata alıyorsanız, GPG anahtarı doğru şekilde içe aktarılmamıştır.
* Çözüm: Adım 1’deki sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927 komutunu tekrar çalıştırdığınızdan ve başarılı olduğundan emin olun. İnternet bağlantınızı kontrol edin.
3. mongo Kabuğuna Bağlanılamıyor veya “Connection refused” Hatası
Bu hata, genellikle MongoDB servisi çalışmadığında veya bindIp ayarı nedeniyle uzaktan erişime izin verilmediğinde ortaya çıkar.
* Çözüm:
* MongoDB servisinin çalıştığından emin olun: sudo systemctl status mongod. Eğer çalışmıyorsa başlatın: sudo systemctl start mongod.
* /etc/mongod.conf dosyasındaki net.bindIp ayarını kontrol edin. Eğer uzaktan bağlanmaya çalışıyorsanız ve bindIp yalnızca 127.0.0.1 ise, servisi yeniden başlattıktan sonra 0.0.0.0 veya sunucunuzun IP adresine değiştirmelisiniz.
* Güvenlik duvarı (firewall) kurallarınızı kontrol edin. ufw veya iptables gibi bir güvenlik duvarı, 27017 numaralı porta gelen bağlantıları engelliyor olabilir. Gerekirse 27017 portuna erişime izin veren bir kural ekleyin.
4. Kimlik Doğrulama Etkinleştirildikten Sonra Bağlantı Sorunları
security.authorization: enabled ayarını yaptıktan sonra mongo kabuğuna bağlanamıyorsanız veya işlemler yapamıyorsanız.
* Çözüm:
* Yönetici kullanıcısını doğru oluşturduğunuzdan emin olun. İlk bağlanırken mongo komutunu doğrudan kullanarak bağlanabilir, sonra admin veritabanında kullanıcıyı oluşturabilirsiniz.
* Kullanıcı adı, şifre ve authenticationDatabase parametrelerini doğru kullandığınızdan emin olun: mongo -u adminUser -p --authenticationDatabase admin.
* Kullanıcının gerekli rollere sahip olduğundan emin olun. Örneğin, readWrite rolü olmayan bir kullanıcı yazma işlemi yapamaz.
5. Disk Alanı Yetersizliği
MongoDB, büyük veri setleriyle çalıştığında disk alanını hızla tüketebilir.
* Çözüm:
* Disk kullanımını kontrol edin: df -h.
* /var/lib/mongodb dizininin boyutunu kontrol edin: sudo du -sh /var/lib/mongodb.
* Gereksiz verileri temizleyin veya daha fazla disk alanı eklemeyi düşünün.
* dbPath ayarını daha büyük bir diske sahip bir konuma taşımayı değerlendirin.
6. Performans Sorunları
MongoDB yavaş çalışıyorsa veya sorgular uzun sürüyorsa.
* Çözüm:
* İndeksleme: Sık kullanılan sorgu alanlarına indeksler ekleyin. db.collection.createIndex({ field: 1 }).
* RAM: MongoDB, verileri RAM’de tutmaya çalışır. Yeterli RAM’in olduğundan emin olun.
* Disk I/O: Disk I/O performansını kontrol edin. Yavaş diskler performansı düşürebilir.
* Sorgu Optimizasyonu: Sorgularınızı optimize edin. explain() metodu, sorgu performansını analiz etmek için kullanılabilir.
* Replica Setler/Sharding: Yüksek erişilebilirlik ve ölçeklenebilirlik için replica setler ve sharding düşünün.
Bu sorun giderme ipuçları, MongoDB kurulumunuzla ilgili çoğu yaygın sorunu çözmenize yardımcı olmalıdır. Her zaman log dosyalarını kontrol etmek, sorunun kaynağını bulmak için en iyi başlangıç noktasıdır.
Sonuç ve Sonraki Adımlar
Bu kapsamlı rehberde, Debian 8 (Jessie) işletim sistemi üzerinde MongoDB’nin nasıl kurulacağını, yapılandırılacağını ve temel güvenlik önlemlerinin nasıl alınacağını adım adım inceledik. MongoDB’nin resmi deposundan paketleri indirerek, GPG anahtarını içe aktararak ve apt paket yöneticisini kullanarak kurulumu başarıyla gerçekleştirdik. Ardından, systemd ile MongoDB servisini yönetmeyi, mongo kabuğu ile kurulumu doğrulamayı ve /etc/mongod.conf dosyasını düzenleyerek temel yapılandırma ayarlarını yapmayı öğrendik.
Özellikle güvenlik, modern veritabanı dağıtımlarının temel taşıdır. Kimlik doğrulamanın etkinleştirilmesi, güçlü kullanıcılar oluşturulması ve bir güvenlik duvarı (firewall) ile ağ erişiminin kısıtlanması gibi kritik güvenlik önlemlerini detaylı bir şekilde ele aldık. Ayrıca, yedekleme, izleme ve performans optimizasyonu gibi en iyi uygulamaların önemini vurguladık.
Debian 8 üzerinde çalışan kararlı ve güvenli bir MongoDB kurulumuna sahip olmak, uygulamalarınız için sağlam bir veri altyapısı sağlar. Ancak, bu sadece başlangıçtır. MongoDB’nin sunduğu geniş özellik yelpazesinden tam olarak yararlanmak için aşağıdaki alanlarda daha fazla bilgi edinmeniz faydalı olacaktır:
* MongoDB Veri Modelleme: Uygulamanızın ihtiyaçlarına uygun en iyi veri modelini tasarlamak, performans ve esneklik açısından kritik öneme sahiptir.
* İndeksleme Stratejileri: Sorgu performansını artırmak için doğru indeksleri seçmek ve uygulamak.
* Replica Setler: Yüksek erişilebilirlik, veri dayanıklılığı ve otomatik yük devretme (failover) için replica setlerin kurulumu ve yönetimi.
* Sharding: Büyük veri setleri ve yüksek işlem hacimleri için yatay ölçeklenebilirlik sağlamak amacıyla sharding’in yapılandırılması.
* Aggregation Framework: Karmaşık veri analizi ve raporlama için MongoDB’nin güçlü toplama çerçevesini kullanma.
* Sürücü Kullanımı: Seçtiğiniz programlama dilinde (Python, Node.js, Java vb.) MongoDB sürücülerini kullanarak uygulamanızdan veritabanına bağlanma ve etkileşim kurma.
Bu rehberin, Debian 8 üzerinde MongoDB dünyasına adım atmanız için sağlam bir temel oluşturduğunu umuyoruz. Güvenli, ölçeklenebilir ve yüksek performanslı uygulamalar geliştirmek için MongoDB’nin potansiyelini keşfetmeye devam edin.