Takip et

Redis’i PHP Oturum Yöneticisi Olarak Ayarlamak: Ubuntu 14.04 Üzerinde Kapsamlı Rehber

Redis’i PHP Oturum Yöneticisi Olarak Ayarlamak: Ubuntu 14.04 Üzerinde Kapsamlı Rehber Web uygulamalarında kullanıcı oturumları, kulla

Redis’i PHP Oturum Yöneticisi Olarak Ayarlamak: Ubuntu 14.04 Üzerinde Kapsamlı Rehber

Web uygulamalarında kullanıcı oturumları, kullanıcı deneyiminin temelini oluşturur. Geleneksel olarak PHP, oturum verilerini sunucu dosya sisteminde depolar. Ancak yüksek trafikli veya dağıtık sistemlerde bu yaklaşım performans darboğazlarına, senkronizasyon sorunlarına ve ölçeklenebilirlik zorluklarına yol açabilir. İşte tam bu noktada Redis gibi hızlı bir bellek içi veri yapısı sunucusu devreye girer. Redis, oturum verilerini hızlı bir şekilde okuma ve yazma yeteneği sayesinde, PHP uygulamalarınızın oturum yönetimini önemli ölçüde iyileştirebilir.

Bu rehberde, Ubuntu 14.04 işletim sistemi üzerinde PHP’nizin oturumlarını Redis kullanarak nasıl yöneteceğini adım adım anlatacağız. Amaç, uygulamanızın performansını ve ölçeklenebilirliğini artırırken, güvenli ve stabil bir oturum altyapısı kurmaktır. Ubuntu 14.04 eski bir sürüm olsa da, birçok eski sistemde hala aktif olarak kullanıldığı için bu rehber geçerliliğini korumaktadır.

1. Redis Sunucusunun Kurulumu ve Temel Yapılandırması

PHP’nin Redis’i oturum yöneticisi olarak kullanabilmesi için öncelikle Redis sunucusunun sisteminizde kurulu ve çalışır durumda olması gerekmektedir.

Redis Kurulumu

Ubuntu 14.04 üzerinde Redis’i kurmak oldukça basittir. Terminali açın ve aşağıdaki komutları çalıştırın:

sudo apt-get update
sudo apt-get install redis-server

Kurulum tamamlandıktan sonra Redis servisi otomatik olarak başlayacaktır. Redis’in çalışıp çalışmadığını kontrol etmek için aşağıdaki komutu kullanabilirsiniz:

redis-cli ping

Eğer çıktı olarak PONG alıyorsanız, Redis sunucunuz başarıyla çalışıyor demektir.

Redis Güvenlik Ayarları (Opsiyonel ama Önemli)

Üretim ortamlarında Redis’i güvenli bir şekilde yapılandırmak hayati önem taşır. Redis’in yapılandırma dosyası genellikle /etc/redis/redis.conf adresinde bulunur. Bu dosyayı düzenleyerek bazı temel güvenlik önlemlerini alabilirsiniz.

sudo nano /etc/redis/redis.conf

1. Sadece Yerel Bağlantılara İzin Ver (Bind to Localhost):
Redis’in sadece sunucunun kendisinden gelen bağlantıları kabul etmesini sağlamak için bind direktifini kontrol edin. Varsayılan olarak 127.0.0.1 olarak ayarlı olmalıdır. Eğer farklı bir IP adresi varsa veya yorum satırı yapılmışsa, aşağıdaki gibi ayarlayın:

bind 127.0.0.1

2. Şifre Belirleme (Require Pass):
Redis sunucunuza erişim için bir şifre belirlemek, yetkisiz erişimi engellemenin en etkili yollarından biridir. requirepass direktifini bulun ve yorum satırını kaldırarak güçlü bir şifre belirleyin:

requirepass cok_gizli_redis_sifrem

Değişiklikleri kaydettikten sonra Redis servisini yeniden başlatmanız gerekmektedir:

sudo service redis-server restart

Artık redis-cli ile bağlanırken şifre girmeniz gerekecek:

redis-cli -a cok_gizli_redis_sifrem ping

2. PHP’nin Redis Desteği İçin Hazırlanması

Redis sunucusu hazır olduğunda, PHP’nin bu sunucuyla iletişim kurabilmesi için gerekli eklentiyi kurmamız ve PHP yapılandırmasını yapmamız gerekmektedir.

php-redis Eklentisinin Kurulumu

PHP’nin Redis ile konuşabilmesi için php-redis eklentisine ihtiyacı vardır. Bu eklenti, PHP’nin Redis komutlarını çalıştırmasına olanak tanır. Ubuntu 14.04 üzerinde PHP 5.x kullanıldığı varsayılarak, kurulum aşağıdaki gibidir:

sudo apt-get install php5-redis

Kurulumdan sonra, PHP’nin bu eklentiyi yüklediğinden emin olmak için web sunucunuzu (Apache veya Nginx + PHP-FPM) yeniden başlatmanız gerekebilir.

# Eğer Apache kullanıyorsanız:
sudo service apache2 restart

Eğer Nginx ve PHP-FPM kullanıyorsanız:

sudo service php5-fpm restart sudo service nginx restart

Eklentinin doğru bir şekilde yüklendiğini kontrol etmek için bir phpinfo() sayfası oluşturabilir veya terminalden aşağıdaki komutu çalıştırabilirsiniz:

php -m | grep redis

Çıktıda redis kelimesini görmeniz, eklentinin başarıyla yüklendiğini gösterir.

PHP Oturum Yapılandırması

Şimdi PHP’yi Redis’i oturum yöneticisi olarak kullanmaya ikna etmemiz gerekiyor. Bu, PHP’nin ana yapılandırma dosyası olan php.ini üzerinde yapılır. Kullandığınız web sunucusuna (Apache veya Nginx+PHP-FPM) göre php.ini dosyasının konumu farklılık gösterebilir:

  • Apache için: Genellikle /etc/php5/apache2/php.ini
  • Nginx + PHP-FPM için: Genellikle /etc/php5/fpm/php.ini
  • Komut satırı PHP için: Genellikle /etc/php5/cli/php.ini

Doğru php.ini dosyasını düzenleyin:

sudo nano /etc/php5/fpm/php.ini # Veya kendi yolunuzu kullanın

Aşağıdaki iki direktifi bulun ve değerlerini Redis’i işaret edecek şekilde değiştirin:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379"

Eğer Redis sunucunuza şifre belirlediyseniz, session.save_path direktifine şifreyi de eklemeniz gerekmektedir:

session.save_handler = redis
session.save_path = "tcp://127.0.0.1:6379?auth=cok_gizli_redis_sifrem"

Önemli Not: Eğer Redis sunucunuz farklı bir IP adresinde veya farklı bir portta çalışıyorsa, 127.0.0.1 ve 6379 değerlerini kendi sunucu bilgilerinizle değiştirmeniz gerekmektedir.

Değişiklikleri kaydettikten sonra, PHP’nin yeni ayarları yüklemesi için web sunucunuzu (veya PHP-FPM servisini) yeniden başlatmayı unutmayın:

# Eğer Apache kullanıyorsanız:
sudo service apache2 restart

Eğer Nginx ve PHP-FPM kullanıyorsanız:

sudo service php5-fpm restart

3. PHP Uygulamanızda Redis Oturumlarını Test Etme

Tüm kurulum ve yapılandırma adımları tamamlandıktan sonra, PHP uygulamanızın Redis’i oturum yöneticisi olarak kullanıp kullanmadığını test etme zamanı geldi.

Basit Bir PHP Test Dosyası Oluşturma

Web sunucunuzun erişebileceği bir dizinde (örneğin /var/www/html/ altında) test_session.php adında bir dosya oluşturun ve içine aşağıdaki kodları yapıştırın:

Redis Oturum Testi";
echo "

Bu sayfayı " . $_SESSION['sayac'] . " kez ziyaret ettiniz.

"; echo "

Oturum ID'si: " . session_id() . "

"; echo "

PHP Oturum Yöneticisi: " . ini_get('session.save_handler') . "

"; echo "

PHP Oturum Yolu: " . ini_get('session.save_path') . "

"; // İsteğe bağlı: phpinfo() çıktısını görmek için // phpinfo(); ?>

Test Etme ve Doğrulama

1. Tarayıcınızı açın ve http://sizin_sunucu_ip_adresiniz/test_session.php adresine gidin.
2. Sayfayı her yenilediğinizde “Bu sayfayı X kez ziyaret ettiniz.” mesajındaki sayacın artması gerekmektedir. Bu, oturum verilerinin doğru şekilde saklandığını gösterir.
3. Sayfadaki “PHP Oturum Yöneticisi” kısmında redis, “PHP Oturum Yolu” kısmında ise tcp://127.0.0.1:6379 (veya şifreyle birlikte) değerlerini görmelisiniz.
4. En önemlisi, Redis sunucusunda oturum verilerinin gerçekten depolanıp depolanmadığını kontrol etmek için terminali açın ve Redis CLI’ya bağlanın (şifre kullandıysanız -a parametresiyle):

redis-cli -a cok_gizli_redis_sifrem

Ardından aşağıdaki komutları kullanarak Redis’teki anahtarları listeleyin:

keys *

Çıktıda PHPREDIS_SESSION: ile başlayan bir anahtar görmelisiniz. Bu, PHP’nin Redis’e kaydettiği oturum anahtarıdır. Örneğin, PHPREDIS_SESSION:abcdef1234567890 gibi bir şey görebilirsiniz. Bu anahtarın içeriğini görmek için:

get PHPREDIS_SESSION:abcdef1234567890

Bu komut, oturumda depoladığınız serileştirilmiş verileri (örneğin sayac|i:X;) gösterecektir. Bu adımları başarıyla tamamladıysanız, PHP uygulamanız Redis’i oturum yöneticisi olarak kullanıyor demektir!

4. Sonuç ve Sıkça Sorulan Sorular (SSS)

Bu rehberde, Ubuntu 14.04 üzerinde PHP’nin oturum yönetimini Redis’e devretmek için gerekli adımları detaylı bir şekilde inceledik. Redis’in hızlı bellek içi yapısı sayesinde, uygulamanızın oturum işlemleri çok daha performanslı hale gelecek ve özellikle yüksek trafikli senaryolarda veya birden fazla sunucuya yayılmış uygulamalarda ölçeklenebilirlik avantajları sağlayacaktır. Oturum verilerinin dosya sisteminde depolanması yerine merkezi bir Redis sunucusunda tutulması, yük dengeleyici arkasındaki sunucular arasında oturum paylaşımını da kolaylaştırır.

Sıkça Sorulan Sorular (SSS)

S1: Redis bağlantı hatası alıyorum, ne yapmalıyım?

C1: Öncelikle Redis servisinin çalışıp çalışmadığını kontrol edin: sudo service redis-server status. Eğer çalışmıyorsa sudo service redis-server start ile başlatın. İkinci olarak, /etc/redis/redis.conf dosyasındaki bind direktifinin 127.0.0.1 olarak ayarlı olduğundan ve PHP’nin erişmeye çalıştığı IP adresine izin verdiğinden emin olun. Sunucunuzda bir güvenlik duvarı (ufw, iptables) aktifse, Redis portu (varsayılan 6379) için gelen bağlantılara izin verdiğinden emin olun.

S2: Oturum verilerim Redis’te görünmüyor, neden?

C2: Aşağıdaki maddeleri kontrol edin:

  • php5-redis eklentisinin doğru kurulduğundan ve aktif olduğundan emin olun (php -m | grep redis).
  • php.ini dosyasındaki session.save_handler = redis ve session.save_path ayarlarının doğru olduğundan emin olun.
  • php.ini dosyasını kaydettikten sonra PHP-FPM veya Apache servisini yeniden başlattığınızdan emin olun.
  • PHP kodunuzda session_start() fonksiyonunu çağırdığınızdan emin olun.
  • Redis’e şifre koyduysanız, session.save_path içinde ?auth=sifreniz kısmının doğru olduğundan emin olun.

S3: Redis’i kalıcı hale getirmek için ne yapmalıyım?

C3: Redis, verileri diskte kalıcı hale getirmek için RDB (snapshotting) ve AOF (append-only file) olmak üzere iki mekanizma sunar. Varsayılan olarak RDB etkindir ve belirli aralıklarla verileri diske kaydeder. /etc/redis/redis.conf dosyasındaki save direktiflerini kontrol edebilirsiniz. Oturum verileri genellikle geçici olduğu için, birçok durumda bu ayarları varsayılan bırakmak yeterlidir. Ancak veri kaybı endişeniz varsa AOF’u etkinleştirmeyi düşünebilirsiniz.

S4: PHP’nin birden fazla sürümünü kullanıyorsam ne yapmalıyım?

C4: Eğer sisteminizde PHP 5.6 ve PHP 7.0 gibi farklı PHP sürümleri yüklüyse (genellikle PPA’lar aracılığıyla), her bir PHP sürümü için ayrı ayrı phpX.X-redis paketini kurmanız (örneğin php7.0-redis) ve her bir sürümün ilgili php.ini dosyasında (örneğin /etc/php/7.0/fpm/php.ini) oturum ayarlarını yapmanız gerekmektedir. Her bir PHP-FPM servisini de ayrı ayrı yeniden başlatmanız gerekir.

S5: auth parametresi çalışmıyor gibi görünüyor, ne yapmalıyım?

C5: Öncelikle Redis’in redis.conf dosyasında requirepass ayarının doğru yapıldığından ve Redis servisinin yeniden başlatıldığından emin olun. Ardından php.ini dosyasındaki session.save_path içindeki şifrenin, Redis yapılandırmasındaki şifre ile tamamen aynı olduğundan emin olun. Karakter hataları veya boşluklar sorun yaratabilir. PHP-FPM/Apache servisini yeniden başlattığınızdan emin olun.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.