Redis kurulumu ve temel yapılandırma: VDS/VPS için net rehber
Redis’i VDS/VPS’de kurar, güvenli erişim ve kalıcı yapılandırmayı doğru şekilde uygularsınız. Doğru port, şifreleme, persist ve test adımları.
Redis, web uygulamalarında oturum (session), önbellek (cache) ve kuyruk (queue) gibi iş yüklerinde gecikmeyi düşürür. Ancak kurulumdan sonra yapılan hatalar performansı artırmaz; güvenlik açığı veya veri kaybı (durumuna göre) doğurur. Bu rehberde VDS/VPS üzerinde Redis’i kurup temel yapılandırmayı net bir şablonla ele alacaksınız: erişim kontrolü, kalıcılık (persistence), bellek sınırları ve test adımları.
Hedef: Redis çalışsın değil; doğru çalışsın, doğru yönetilsin ve uygulamanızdan erişilebilir olsun.
Redis ne için kullanılır ve doğru kurulum neyi değiştirir?
Redis genellikle şu senaryolarda tercih edilir: - Object cache: WordPress ve diğer CMS’lerde sayfa/DB yükünü azaltır. - Oturum saklama: Uygulama yeniden başlatıldığında session kaybolmaz. - Rate limit / throttling: Kullanıcı başına istek limitleri hızlı tutulur. - Kuyruklar: Background job (örn. SMS/işleme) işleyicileri için hız.
Redis kurulumunda asıl farkı yaratan noktalar şunlardır: - Redis’in yalnızca gerektiği ağlardan erişilebilir olması. - Verinin yeniden başlatmalarda korunması için AOF (Append Only File) veya RDB (snapshot) seçimi. - Bellek sınırlarının ve eviction politikasının (boşaltma davranışı) netleşmesi. - Uygulama bağlantısının hatasız şekilde test edilmesi.
Adım adım: Linux VDS/VPS’de Redis kurulumu
Aşağıdaki adımlar, Debian/Ubuntu türevleri için temel bir akıştır. (İşletim sistemine göre paket isimleri veya servis adı değişebilir.)
1) Sunucuyu güncelleyin
- Paket listelerini güncelleyin.
- Mevcut yazılımları güncelleyin.
Komut örneği:
sudo apt-get update -y
sudo apt-get upgrade -y
2) Redis paketini kurun
sudo apt-get install -y redis-server
3) Servisin çalıştığını doğrulayın
sudo systemctl status redis-server
Çalışır durumda olmalı.
4) Bağlantı testi (localhost)
Redis’in kendi makinesinden erişilebilir olduğunu test edin:
redis-cli ping
Çıktı PONG olmalı.
Temel yapılandırma: güvenli erişim, persist ve bellek sınırları
Redis’i internete açık bırakmak, pratikte en sık yapılan hatalardan biridir. Bu bölümde temel ayarları “ne işe yarar” mantığıyla ele alacağız.
Redis ayar dosyası dağıtıma göre değişebilir. Genelde /etc/redis/redis.conf veya /etc/redis/redis-server.conf altında olur.
1) bind ve protected-mode: erişimi daraltın
bind: Redis’in dinleyeceği IP arayüzlerini belirtir.protected-mode: Yanlışlıkla dışarı açılma riskini azaltır.
Net yaklaşım: - Eğer Redis sadece aynı sunucudaki uygulamanızdan kullanılacaksa, sadece 127.0.0.1 veya uygulamanızın ihtiyaç duyduğu özel ağ IP’si üzerinden dinleyin.
Örnek mantık:
- bind 127.0.0.1 ::1
- protected-mode yes
Eğer Redis’i başka sunucu/VM üzerinden kullanacaksanız (ör. uygulama ayrı VDS’de): bind değerini sadece o uygulama sunucusunun IP’sine daraltın.
2) requirepass (şifre): kim erişiyor net olsun
Redis’in uygulama katmanı için kimlik doğrulaması sağlar.
Önerilen ayar:
- requirepass ile parola zorunlu tutun.
Örnek: - `requirepass "RANDOM_OLMAYAN_DEGER"
Parolayı üretirken: - Rastgele ve uzun seçin (en az 32 karakter). - Uygulamanızın config yönetiminde saklayın.
3) Kalıcılık (persistence): RDB mi AOF mi?
Redis veriyi RAM’de tutar; servis yeniden başlarsa ne olacağını persistence belirler.
En sık seçenekler: - RDB (snapshot): Belirli aralıklarla diske “anlık görüntü” alır. Veri kaybı aralığı, snapshot sıklığıyla sınırlıdır. - AOF (Append Only File): Yazma komutlarını sırayla dosyaya ekler. Genellikle daha az kayıp hedeflenir.
Net karar kuralı: - “Biraz veri kaybı tolere ediyorum” (ör. cache): RDB yeterli olabilir. - “Oturum/kritik state kaybı istemiyorum”: AOF tercih edilir.
Pratik örnek şablon (cache ağırlıklı değil, daha güvenli):
- appendonly yes
- appendfsync everysec
4) Bellek sınırı: maxmemory ve eviction politikasını ayarlayın
Redis bellek tüketimi kontrol edilmezse OOM (Out of Memory) ve uygulama performans düşüşü yaşanır.
Net öneriler:
- maxmemory koyun.
- maxmemory-policy ile hangi verinin silineceğini belirleyin.
Karar tablosu:
| Kullanım senaryosu | Önerilen yaklaşım | Tipik policy |
|---|---|---|
| Redis öncelikle cache (kayıp sorun değil) | Eski/önemsiz veriler atılabilir | allkeys-lru |
| Oturum/kalıcı state (kayıp istemez) | Önce büyümeyi engelle, uygulamada planla | noeviction |
| Karma kullanım | Sık erişilene öncelik ver | allkeys-lfu veya allkeys-lru |
5) Zorunlu olmayan ama faydalı ayarlar
save(RDB kullanıyorsanız): Snapshot aralığı.databases: Kaç DB kullanılacağı (uygulama ihtiyaçlarına göre).loglevel: Çok debug üretmeyin; inceleme dışındanoticegenelde yeterli.
Konfigürasyonu uygulayın ve yeniden başlatın
Ayarları yaptıktan sonra:
sudo systemctl restart redis-server
sudo systemctl status redis-server
Redis loglarında hata olmadığından emin olun.
Şifreli erişim testi: - Redis CLI ile bağlanın.
redis-cli -a "PAROLA" ping
PONG dönmeli.
Uygulamanın Redis’e bağlanmasını netleştirin
Redis’e bağlanırken iki temel parametre kritiktir:
- Host/IP (ör. 127.0.0.1)
- Port (standart genelde 6379)
- Şifre (requirepass aktifse)
Port ve firewall kontrolü
Redis lokalden kullanılacaksa firewall açmak gerekmeyebilir. Redis başka sunucudan kullanılacaksa sadece o sunucuya izin verin.
Net kontrol listesi:
- Security Group / firewall: 6379 sadece gerekli kaynağa açık olmalı.
- Sunucu üzerinde dinleme: bind doğru IP’de mi?
Bağlantı testini CLI ile yapın
En kısa doğrulama:
1) ping (latency değil; erişim var/yok)
2) Basit komutla yaz/oku örneği:
redis-cli -a "PAROLA" set test:1 "ok"
redis-cli -a "PAROLA" get test:1
ok görmelisiniz.
Performans ayarları: gecikme değil, hedef davranış
Redis performansı; yanlış bellek ayarı ve persist seçimiyle düşer.
Net uygulama odaklı öneriler:
- Cache senaryosunda eviction policy ile “geri dönüş” planlayın.
- Persist dosyalarının diskte büyümesini takip edin (özellikle AOF).
- Redis kullanımını CPU ile ölçün: systemctl status yetmez, metrik takibi gerekir.
Yapı kontrolü için pratik komutlar:
- Bellek ve istatistik: INFO memory
- Persist durumu: INFO persistence
Örnek:
redis-cli -a "PAROLA" info memory
redis-cli -a "PAROLA" info persistence
Sık yapılan hatalar ve net düzeltmeler
1) Redis’i tüm IP’lere bağlama
- Hata: bind 0.0.0.0 ve şifre yok.
- Düzeltme: bind değerini daraltın, protected-mode yes kalmalı, requirepass ekleyin.
2) Potreş/cluster ihtiyacı varken tek node kurmak - Hata: Failover hedefleniyor ama replikasyon/cluster planı yok. - Düzeltme: Uygulamanın toleransını belirleyin; Redis replication/cluster ayrı başlık.
3) AOF/RDB ayarı belirsizken “veri kaybı olmaz” beklentisi - Hata: RDB varsayılan aralıkta, kritik state kaybolur. - Düzeltme: State türünü belirleyin: cache ise RDB, oturum ise AOF.
4) Bellek sınırı olmadan büyümeye izin vermek
- Hata: OOM ile sistem yavaşlar/çöker.
- Düzeltme: maxmemory + uygun eviction policy.
5) Port açıp kaynağı kısıtlamamak - Hata: 6379 internete açık. - Düzeltme: Sadece uygulama IP’sine izin, mümkünse özel ağ.
Örnek temel yapılandırma (başlangıç şablonu)
Aşağıdaki örnek, çoğu uygulama için “ilk etapta doğru temel” yaklaşımını verir. Kendi ihtiyaçlarınıza göre IP, parola ve persist türünü netleştirin.
- Dinleme: sadece localhost (tek VM senaryosu)
- Şifre: requirepass aktif
- Persistence: AOF (daha güvenli state hedefi)
- Bellek: maxmemory + cache uyumlu eviction
Örnek parça (tam dosya değildir, mantığı gösterir):
bind 127.0.0.1 ::1
protected-mode yes
requirepass "RANDOM_UZUN_PAROLA"
appendonly yes
appendfsync everysec
maxmemory 512mb
maxmemory-policy allkeys-lru
Değerleri kendi RAM ve kullanımınıza göre güncelleyin.
Son kontrol listesi: Redis kurulumunun bittiğini nasıl anlarsınız?
Şunlar tamam değilse “kuruldu” demeyin:
- redis-cli ping (ve şifre varsa -a) → PONG
- Redis doğru IP’de dinliyor (bind)
- Uygulamanızdan erişim mümkün (firewall/SG doğru)
- Persistence davranışı net (RDB/AOF seçimi)
- Bellek sınırı ve eviction policy belirlenmiş
Sonuç: Redis’i kurduktan sonra ilk 30 dakikada yapmanız gerekenler
Redis kurulumunda başarı, sadece servisin ayağa kalkmasından geçmez; erişim sınırı, persist seçimi ve bellek disiplini doğru kurulursa beklenen performans ve güvenlik elde edilir. İlk aksiyon olarak: bind ve requirepass ayarlarını kontrol edin, ardından INFO memory ve INFO persistence çıktılarıyla sistem davranışını doğrulayın. Eğer Redis’i uygulamanızdan ayrı bir sunucudan kullanacaksanız, 6379’u sadece gerekli kaynak IP(ler) için açın ve test komutlarıyla bağlantıyı doğrulayın.
Hosting karşılaştırması yapmaya hazır mısın?
100+ firmanın fiyatlarını tek tıkla karşılaştır, en uygun paketi bul.
Hosting Karşılaştır →İlgili Yazılar
ModSecurity nedir, paylaşımlı hostingde aktif mi?
ModSecurity (WAF) nasıl çalışır, hangi saldırıları engeller ve paylaşımlı hostingde aktif edilip edilmediğini nasıl kontrol edeceğinizi öğrenin.
WordPress’te Redis/Memcached object cache mantıklı mı?
WordPress’te object cache (Redis/Memcached) ne kazandırır? Uyumsuzluk, ayar hataları ve ne zaman şart olduğu için net kontrol listesi.
Yavaş Database Sorguları Nasıl Bulunur? Net Optimizasyon Rehberi
Yavaş sorguları bulmak için MySQL/PostgreSQL’de doğru log ve metrikleri toplayın, problemli SQL’i tespit edip ölçülebilir şekilde optimize edin.
Snapshot yedekleme gerçek backup yerine geçer mi?
Snapshot (anlık görüntü) hızlı geri dönüş sağlar. Ancak gerçek backup değildir. Doğru strateji, süre/erişim ve test kriterlerini birlikte ele alır.