Ubuntu Redis Kurulumu
Sunucu Yönetimi

Ubuntu Sunucuda Redis Kurulumu ve Güvenlik Yapılandırması Rehberi

Ubuntu VDS üzerinde adım adım Redis kurulumu yapın, güvenlik ayarlarını tamamlayın ve bellek optimizasyonuyla sunucu performansınızı hemen ikiye katlayın.

  • MerkezHost Teknik Ekibi
  • 8 dk okuma
  • Seviye: Orta
  • Güncelleme:

Web uygulamalarınızın veritabanı yükünü hafifletmek ve yanıt sürelerini milisaniyeler seviyesine indirmek için Redis vazgeçilmez bir çözümdür. Bu teknik rehberde, Ubuntu sunucuda adım adım redis kurulumu işlemlerini gerçekleştirecek, kritik güvenlik sıkılaştırmalarını yapacak ve bellek yönetimi ayarlarını optimize edeceğiz.

Redis Nedir ve Neden Kullanılır?

Redis (Remote Dictionary Server); dizeler, karmalar (hash), listeler ve kümeler gibi esnek veri yapılarını destekleyen, açık kaynaklı bir in memory önbellek (bellek içi veri tabanı) sistemidir. Verileri geleneksel sabit diskler (HDD) ya da blok depolama yerine doğrudan sistem RAM'inde tuttuğu için okuma ve yazma işlemlerinde olağanüstü bir hız sunar.

Modern web mimarilerinde Redis çoğunlukla şu senaryolar için tercih edilir:

  • Veritabanı Önbellekleme (Caching): Sık çalıştırılan karmaşık SQL sorgularının sonuçlarını saklayarak MySQL veya PostgreSQL üzerindeki I/O yükünü düşürür.
  • Oturum Yönetimi (Session Storage): Kullanıcı oturumlarını merkezi bir yerde hızlıca okuyup yazmak için PHP ve Node.js uygulamalarında idealdir.
  • Kuyruk ve Mesajlaşma (Message Broker / Pub-Sub): Arka plan işlerinin (örneğin e-posta gönderimi veya resim işleme) yönetilmesini kolaylaştırır.

Yüksek trafikli projelerde, özellikle Ubuntu LEMP kurulumu tamamlanmış ortamlarda Redis entegrasyonu, sunucu kaynaklarının verimli kullanılmasını sağlar ve genel kullanıcı deneyimini doğrudan iyileştirir.

Kurulum Öncesi Hazırlık ve Gereksinimler

Kuruluma başlamadan önce sunucunuzda bazı temel gereksinimlerin karşılandığından emin olmanız gerekir:

  • Ubuntu 20.04 LTS, 22.04 LTS veya 24.04 LTS kurulu bir sunucu.
  • Sudo (root) yetkilerine sahip bir kullanıcı hesabı.
  • Sunucu terminaline erişim (SSH bağlantısı).

Konsolda çalışırken Linux ortamına aşina değilseniz, işlemlerden önce Linux temel komutlar rehberimize göz atabilirsiniz. Sunucu paket listesini güncelleyerek başlayalım:

sudo apt update && sudo apt upgrade -y

Ubuntu Üzerinde APT ile Redis Kurulumu

Ubuntu'nun resmi depoları Redis'in kararlı bir sürümünü barındırır. Paket yönetim sistemi aracılığıyla Redis'i ve gerekli araçları kurmak için aşağıdaki komutu çalıştırın:

sudo apt install redis-server -y

Kurulum tamamlandıktan sonra Redis servisi sistem başlangıcında çalışacak şekilde otomatik olarak yapılandırılır ancak varsayılan yapılandırma dosyasında bir kritik ayarın güncellenmesi önerilir. Redis'in arka planda bir servis olarak Ubuntu'nun systemd init sistemiyle tam uyumlu çalışabilmesi için yapılandırma dosyasını açın:

sudo nano /etc/redis/redis.conf

Dosya içerisinde supervised direktifini bulun. Varsayılan olarak bu değer no şeklindedir. Bunu systemd olarak değiştirin:

# Mevcut satırı bulun:supervised nosupervised systemd

Dosyayı kaydedip çıkın (Nano için: Ctrl + O, Enter, ardından Ctrl + X). Değişikliğin geçerli olması için servisi yeniden başlatın:

sudo systemctl restart redis.service

Servisin durumunu kontrol etmek için:

sudo systemctl status redis.service

Çıktıda Active: active (running) ifadesini görüyorsanız, temel redis kurulumu başarıyla tamamlanmış demektir.

Redis Yapılandırma Dosyası ve Güvenlik Ayarları

Redis varsayılan kurulumunda oldukça açık ve korumasız bir yapıya sahiptir. Ağ üzerinden gelecek saldırıları önlemek ve performansı korumak için redis güvenlik ayarları eksiksiz uygulanmalıdır. Düzenlemeleri yine /etc/redis/redis.conf dosyası üzerinden yapacağız.

1. Ağ Arayüzü Bağlantısı (Binding)

Redis'in yalnızca yerel makineden (localhost) gelen isteklere yanıt vermesi gerekir. Dış internete açık bir Redis örneği, yetkisiz veri sızıntılarına yol açar. Dosyadaki bind satırını kontrol edin:

bind 127.0.0.1 ::1

Bu satırın başında diyez (#) işareti olmadığından ve yalnızca yerel IP adreslerini dinlediğinden emin olun.

2. Güçlü Parola Koruması (requirepass)

Redis varsayılan olarak herhangi bir kimlik doğrulama talep etmez. Parola koruması eklemek için requirepass parametresini aktifleştirmeliyiz. Redis son derece hızlı yanıt verdiği için (saniyede yüz binlerce parola denenebilir), parolanızın en az 30-40 karakterden oluşan rastgele bir dize olması önerilir.

Terminalde güçlü bir parola üretmek için:

openssl rand 60 | openssl base64 -A

Üretilen parolayı /etc/redis/redis.conf dosyası içine ekleyin:

requirepass CokGucluVeRastgeleUretilmisRedisSifresi123!@#

3. Tehlikeli Komutların Devre Dışı Bırakılması

Yetkisiz bir kullanıcı veya web uygulamanızdaki bir açık üzerinden Redis'e sızılması durumunda tüm verilerin silinmesini engellemek için bazı tehlikeli komutları yeniden adlandırabilir veya tamamen kapatabilirsiniz:

rename-command FLUSHDB ""rename-command FLUSHALL ""rename-command DEBUG ""rename-command CONFIG ""

Bu komutları boş bir metin dizisi ile eşleştirmek onları tamamen devre dışı bırakır.

Önemli Güvenlik Uyarısı

Eğer Redis portunu (varsayılan 6379) dış ağa açmak zorundaysanız, kesinlikle bir güvenlik duvarı kuralı tanımlamalı ve yalnızca belirli kaynak IP adreslerine izin vermelisiniz. Ayrıntılar için UFW ve Fail2ban kurulumu rehberimize göz atabilirsiniz.

Değişikliklerin devreye girmesi için servisi yeniden başlatın:

sudo systemctl restart redis.service

Redis Bağlantısını Test Etme ve Servis Yönetimi

Yaptığınız ubuntu redis yapılandırması adımlarının doğru çalıştığını doğrulamak için Redis'in dahili komut satırı aracı olan redis-cli kullanılır.

Terminal üzerinden Redis konsoluna bağlanın:

redis-cli

Eğer bir işlem yapmayı denerseniz kimlik doğrulama hatası alırsınız:

127.0.0.1:6379> ping(error) NOAUTH Authentication required.

Belirlediğiniz parola ile kimlik doğrulayın:

127.0.0.1:6379> auth CokGucluVeRastgeleUretilmisRedisSifresi123!@#OK127.0.0.1:6379> pingPONG

PONG yanıtını aldıysanız kimlik doğrulama başarılıdır. Şimdi basit bir anahtar-değer (key-value) testi yapalım:

127.0.0.1:6379> set test_anahtar "Merhaba Redis"OK127.0.0.1:6379> get test_anahtar"Merhaba Redis"127.0.0.1:6379> exit

Sunucu tarafında servis durumunu denetlemek için kullanabileceğiniz başlıca komutlar şunlardır:

  • Servisi başlatma: sudo systemctl start redis.service
  • Servisi durdurma: sudo systemctl stop redis.service
  • Servisi yeniden başlatma: sudo systemctl restart redis.service
  • Otomatik başlamayı aktif etme: sudo systemctl enable redis.service

Redis Bellek Sınırı ve Tahliye (Eviction) Politikaları

Redis tamamen RAM üzerinde çalıştığı için redis bellek yönetimi ayarları hayati öneme sahiptir. Varsayılan olarak Redis, sunucunun tüm RAM'ini tüketene kadar veri depolamaya devam edebilir. Bu durum Linux çekirdeğinin OOM (Out Of Memory) Killer mekanizmasını tetikleyerek web sunucunuzu veya MySQL servisinizi sonlandırmasına neden olabilir.

Bu sorunu önlemek için Redis'e bir üst sınır belirlemeli ve bellek dolduğunda eski verilerin nasıl silineceğini (eviction policy) tanımlamalısınız. Tekrar /etc/redis/redis.conf dosyasını açın ve şu satırları kendinize göre düzenleyin:

maxmemory 1gbmaxmemory-policy allkeys-lru

Tahliye (Eviction) Politikası Seçenekleri

İhtiyacınıza göre seçebileceğiniz yaygın Redis bellek tahliye politikaları şunlardır:

Politika AdıAçıklamaKullanım Amacı
allkeys-lruEn son en az kullanılan (LRU) anahtarları siler.Standart web önbellekleme (Tavsiye edilen).
volatile-lruYalnızca bir son kullanma süresi (TTL) tanımlanmış anahtarlar arasından en az kullanılanları siler.Kalıcı verilerle önbelleğin bir arada tutulduğu projeler.
allkeys-lfuEn az sıklıkla kullanılan (LFU) anahtarları siler.Trafik döngülerinin zamana göre değil sıklığa göre değiştiği yapılar.
volatile-ttlKalan yaşam süresi (TTL) en kısa olan anahtarları temizler.Zamana duyarlı önbellekler.
noevictionBellek dolduğunda yeni veri yazılmasına izin vermez, hata fırlatır.Kayıp tolere edilemeyen veri saklama senaryoları.

Web siteleri ve genel önbellekleme işlemleri için çoğu durumda allkeys-lru en güvenli ve kararlı tercihtir.

Sık Karşılaşılan Redis Hataları ve Çözüm Yolları

Kurulum veya çalıştırma esnasında sistem yöneticilerinin sıklıkla karşılaştığı birkaç yaygın hata ve pratik çözüm yolları:

1. Bellek Aşırı Yükleme Uyarısı (Memory Overcommit)

Redis loglarında (/var/log/redis/redis-server.log) şu uyarıyı görebilirsiniz: "WARNING overcommit_memory is set to 0! Background save may fail under low memory condition."

Bu hatayı gidermek için Linux çekirdeğinin bellek yönetim politikasını değiştirmeniz gerekir:

sudo sysctl vm.overcommit_memory=1

Kalıcı hale getirmek için /etc/sysctl.conf dosyasına şu satırı ekleyin:

vm.overcommit_memory = 1

2. TCP Dinleme Kuyruğu Sınırı (TCP Backlog)

Yüksek anlık trafiklerde Redis SOMAXCONN değerinin yetersiz kaldığına dair uyarı verebilir. Bunu çözmek için:

sudo sysctl -w net.core.somaxconn=1024

Yine /etc/sysctl.conf dosyasına net.core.somaxconn = 1024 ekleyerek ayarı kalıcı yapabilirsiniz.

Transparent Huge Pages (THP) Kapatılmalı

Redis'in resmi belgelerinde, gecikme (latency) sorunlarını önlemek adına Linux çekirdeğindeki Transparent Huge Pages özelliğinin devre dışı bırakılması önerilir. Bu ayar bellek ayrıştırma süreçlerini daha öngörülebilir kılar.

Sonuç

Ubuntu üzerinde redis kurulumu, doğru yapılandırma ve güvenlik sıkılaştırmalarıyla birleştiğinde web sitelerinizin performansını hissedilir derecede artırır. Bellek sınırlarının ve parola protokollerinin doğru yapılandırılması, sunucunuzun kesintisiz ve güvenli bir şekilde çalışmasını garanti altına alır.

Bellek içi veritabanı sistemleri doğrudan RAM ve işlemci kaynaklarına dayandığı için kullandığınız donanımın kalitesi kritik bir faktördür. MerkezHost'un yüksek hızlı NVMe SSD depolama ve güçlü işlemcilerle donatılmış, Corero + Stormwall katmanlı DDoS koruması ile güvenceye alınan DDoS korumalı VDS sunucu paketlerini tercih ederek Redis ve web uygulamalarınızdan maksimum verim alabilirsiniz.

Sık Sorulan Sorular

Redis için ne kadar RAM ayırmalıyım?

Redis'e ayrılacak bellek miktarı projenizin boyutuna ve önbelleklenen veriye bağlıdır; ancak sunucunun kilitlenmemesi için toplam sistem belleğinin en fazla yüzde 75'inin Redis'e tahsis edilmesi önerilir.

Redis sunucu yeniden başladığında veriler silinir mi?

Hayır; Redis varsayılan olarak RDB (anlık görüntüleme) ve opsiyonel olarak AOF (günlük kaydı) kalıcılık mekanizmalarını kullanarak RAM'deki verileri belirli aralıklarla diske kaydeder.

Redis'in varsayılan çalışma portu nedir?

Redis varsayılan olarak 6379 numaralı TCP portu üzerinden haberleşir; güvenlik gerekçesiyle bu portun genel internete kapatılması veya gerekirse değiştirilmesi önerilir.

  • #redis kurulumu
  • #ubuntu redis yapılandırması
  • #in memory önbellek
  • #redis güvenlik ayarları
  • #redis bellek yönetimi
Paylaş:

Kapak fotoğrafı: FreePhotosART / Pixabay

Devamını Okuyun

İlgili Rehberler