Redis açık kaynaklı bir bellek içi önbellek ve depolama sistemidir, aynı zamanda bir veri yapısı sunucusu olarak da adlandırılır. Hash'ler, listeler, kümeler, bitmap'ler ve çok daha fazlası gibi çeşitli veri türleri için gelişmiş destek sunar. Mükemmel performansı nedeniyle Redis, önde gelen sektörlerde ve en iyi çok uluslu şirketlerde popülerlik kazanmıştır.
Redis'in Faydaları
Hız söz konusu olduğunda, Redis sunucularının eşi benzeri yoktur. Bir NoSQL veritabanı sunucusu olarak, veri depolama ve geri çağırmada harika bir hız sunar. Ayrıca Redis, karmaşık olanlar da dahil olmak üzere farklı verilerle sorunsuz çalışmayı sağlayan göze çarpan işlevlere sahiptir. Redis'in kullanım kolaylığı ve gelişmiş işlevleri, onu sadece öne çıkarmakla kalmamış, aynı zamanda kurumsal ve bireysel kullanıcılar için ana akım bir veritabanı olarak giderek daha fazla standartlaşmasını sağlamıştır.
Aşağıda, Ubuntu 20.04 yazılımına Redis kurmanıza yardımcı olacak adımları detaylandıracağız. Bu eğitimde, kurulumdan, Ubuntu 20.04 üzerinde çalışan bir PHP uygulaması için oturum yöneticisi olarak kullanılacak harici bir Redis sunucusunun yapılandırılmasına kadar ihtiyacınız olan tüm bilgileri alacaksınız.
Başlarken
Adımları uygulamak için, özel ağ etkinleştirilmiş olarak aynı veri merkezinde bulunan iki farklı veritabanı sunucusuna (droplet) ihtiyacınız olacaktır. Bunlar şunları içerir:
-
Şu yazılımları çalıştıran bir PHP web sunucusu: LAMP ve LEMP (Ubuntu 20.04 üzerinde) – bu sunucuya şu adı vereceğiz: web.
-
Redis'in kurulacağı ikinci, temiz bir Ubuntu 20.04 sunucusu – bu sunucuya şu adı vereceğiz: redis.
Adım 1 — Redis Sunucusu Kurulumu
İlk adımımız Redis sunucusunu Ubuntu 20.04 üzerine kurmaktır. Kurulum tamamlandıktan sonra, sunucunun redis Droplet'imizde çalışır durumda olduğundan emin olun.
Bu eğitimde Kişisel Paket Arşivlerini (PPA'lar) kullanacağız. Güvenlik nedenleriyle PPA'ları kullanmanızı şiddetle tavsiye ederiz. Diğer üçüncü taraf depolarıyla karşılaştırıldığında PPA'lar kararlıdır, kurulumu kolaydır ve her şeyden önemlisi depo Ubuntu kullanıcıları için tasarlanmıştır. PPA, resmi Ubuntu depolarında bulamadığınız yazılımlar için bile mevcut en son yazılım sürümünü edinmenizi sağlar.
Yetkisiz bir kaynaktan PPA kullanmak kesinlikle önerilmez. PPA'ları yalnızca güvenilir ve doğrulanmış kaynaklardan aldığınızdan emin olun. PPA deposunu şu komutu kullanarak ekleyebilirsiniz:
|
1 |
sudo add-apt-repository ppa:chris-lea/redis-server |
Onaylamak için Enter tuşuna basın. Onayladıktan sonra, aşağıdaki komutu kullanarak paket yöneticisi önbelleğini güncelleyeceğiz:
|
1 |
sudo apt-get update |
Ardından, şu komutu kullanarak Redis'i kuracağız:
|
1 |
sudo apt-get install redis-server |
Komutu çalıştırdığınızda, Redis sunucunuza kurulmuş olacaktır. Kurulumu şu komutla test edelim:
|
1 |
redis-cli ping |
Komutu çalıştırdığınızda, localhost üzerinde, 6379 portunda çalışan bir Redis örneği göreceksiniz. Ayrıca, PONG adında bir yanıt gelecektir. Bunları görüyorsanız, ilk adımı başarıyla tamamlamışsınız demektir. Redis'i kurma ve güvenliğini sağlama konusunda ayrıntılı bir kılavuz için şu eğitimimize göz atabilirsiniz: How to Install and Secure Redis on Ubuntu 18.04.
Şimdi bir sonraki adıma geçelim: Redis'i yapılandırmak.
Adım 2 — Dış Bağlantıları Kabul Etmek İçin Redis Yapılandırması
Redis'i yapılandırmanın temel amacı, dışarıdan gelen bağlantıları kabul etmektir. Neden mi? Çünkü Redis varsayılan olarak yalnızca localhost bağlantılarına izin verir ve başka herhangi bir yerden bağlanma kısıtlaması vardır. Daha basit bir ifadeyle, yalnızca Redis'i kurduğunuz sunucunun içinden erişiminiz olacaktır.
İlk olarak, ifconfig komutunu kullanarak ağ arayüzleriniz hakkında ayrıntılı bilgi edinin:
|
1 |
sudo ifconfig |
Aşağıdaki çıktıyı alacaksınız:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
eth0 Link encap:Ethernet HWaddr 04:01:63:7e:a4:01 inet addr:188.166.77.33 Bcast:188.166.127.255 Mask:255.255.192.0 inet6 addr: fe80::601:63ff:fe7e:a401/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:3497 errors:0 dropped:0 overruns:0 frame:0 TX packets:3554 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:4895060 (4.8 MB) TX bytes:619070 (619.0 KB) eth1 Link encap:Ethernet HWaddr 04:01:63:7e:a4:02 inet addr:10.133.14.9 Bcast:10.133.255.255 Mask:255.255.0.0 inet6 addr: fe80::601:63ff:fe7e:a402/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:8 errors:0 dropped:0 overruns:0 frame:0 TX packets:7 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:648 (648.0 B) TX bytes:578 (578.0 B) |
Şu eth1 arayüzünde, şunu bulacaksınız: inet_addr. Burada şu değere sahibiz: 10.133.14.9. Gelecek adımlarda bu IP adresini, redis sunucusuna web sunucusundan bağlanmak için kullanacağız.
Adım 3— Localhost Bağlama
Dilediğiniz kod düzenleyiciyi kullanmakta özgürsünüz (en popüler olanları Atom ve Visual Studio Code'dur).
Şimdi şu dosyayı açın: /etc/redis/redis.conf ve bind tanımını içeren satırı arayın. Satıra özel ağ IP adresinizi eklemelisiniz:
|
1 |
sudo vim /etc/redis/redis.conf |
|
1 |
bind localhost 10.133.14 |
Şunu görebilirsiniz: localhost, şunun yerine: 127.0.0.1. Endişelenmeyin, sadece özel IP adresinizi eklemeniz yeterlidir. Ardından, değişiklikleri uygulamak için Redis servisini yeniden başlatın. Aşağıdaki komutu kullanarak redis sunucusunu yeniden başlatın:
|
1 |
sudo service redis-server restart |
Redis'i tek tıkla kurulum uygulamasıyla yükleyen kullanıcılar, sunucularını yeniden başlatmak için aşağıdaki komutu takip etmelidir:
|
1 |
sudo service redis restart |
Once you restart the redis sunucusunu yeniden başlattığınızda, aynı özel ağda bulunan tüm sunucular, tek tek işlem yapmaya gerek kalmadan bu Redis örneğine otomatik olarak bağlanacaktır.
Adım 4— Redis Sunucusu Şifre Kurulumu
Redis kurulumunu pratik veya eğitim amaçlı kullanıyorsanız bu adımı atlayabilirsiniz. Ancak, redis sunucusu için şifre belirlemek, Redis kurulumunuza ekstra bir güvenlik katmanı eklemek istiyorsanız şiddetle tavsiye edilir. Önceki adımda yaptığımız gibi aynı yapılandırma dosyasını düzenleyelim. Düzenlemek için şu komutu kullanın:
|
1 |
sudo vim /etc/redis/redis.conf |
Şunu içeren satırın başındaki yorum işaretini kaldırın: requirepass, ve güçlü bir şifre belirleyin:
|
1 |
requirepass StrongPassword |
Yaptığınız değişiklikleri yansıtmak için Redis servisini yeniden başlatın. Yeniden başlatmak için şu komutu kullanın:
|
1 |
sudo service redis-server restart |
Adım 5 — Redis Bağlantısı ve Kimlik Doğrulama Testi
Bu adımda, yapılan tüm değişikliklerin beklendiği gibi sorunsuz çalıştığından emin olmak için redis makinesinin içinden Redis servisine bağlanacağız. Bağlanmak için aşağıdaki komutu kullanın:
|
1 |
redis-cli -h 10.133.14.9 |
Burada, ana bilgisayar adını belirtmeyi atlasanız bile yine de çalışacaktır. Birincil amacımız, Redis servisinin bağlantıları sorunsuz bir şekilde kabul ettiğinden emin olmaktır:
|
1 |
10.133.14.9:6379> |
Tanımlanan şifre ile verilere erişmeye çalışırken bir AUTH hatası almanız olasıdır:
|
1 |
10.133.14.9:6379> keys * |
Çıktınız şuna benzer görünecektir:
|
1 2 |
ÇIKTI: (hata) NOAUTH Kimlik doğrulama gerekli. |
Kimlik doğrulaması yapmak için, AUTH komutunu, /etc/redis/redis.conf dosyasında tanımladığınız şifreyle birlikte çalıştırın:
|
1 |
10.133.14.9:6379> AUTH StrongPassword |
Ardından, komutu tekrar çalıştırın:
|
1 |
10.133.14.9:6379> keys * |
Bu kez, hata yerine yanıt olarak bir OK alacaksınız. Aşağıdaki gibi bir çıktı alacaksınız:
|
1 2 |
ÇIKTI: (boş liste veya küme) |
The output boş liste veya küme çıktısı, Redis sunucusunun boş olduğu anlamına gelir. Bunun nedeni, web sunucusunu henüz bir oturum yöneticisi olarak yapılandırmamış olmamızdır.
Not: Devam etmeden önce, SSH oturumunun açık olduğundan ve redis-cli'ye bağlı olduğundan emin olun. Önümüzdeki adımlarda, web sunucusunda gerekli değişiklikleri yaptıktan sonra oturum verilerinin düzgün bir şekilde kaydedilip kaydedilmediğini doğrulamak için redis-cli istemine geri döneceğiz.web sunucusunda gerekli değişiklikleri yaptıktan sonra oturum verilerinin düzgün bir şekilde kaydedilip kaydedilmediğini doğrulamak için redis-cli istemine geri döneceğiz.
Adım 6 — Web Sunucusuna Redis Uzantısı Kurulumu
Sonraki adımlar web sunucusunda yürütülmelidir. PHP'nin Redis sunucusuna bağlanabilmesi için PHP Redis uzantısını kurmamız gerekiyor.
İlk olarak, şu komutu çalıştırarak paket yöneticisi önbelleğinizi güncelleyin:
|
1 |
sudo apt-get update |
Ardından, php5-redis paketini kurun:
|
1 |
sudo apt-get install php5-redis |
Redis'e bağlanmak için her şey hazır.
Adım 7 — Web Sunucusunda Varsayılan Oturum Yöneticisi Olarak Redis Kurulumu
PHP'nin varsayılan bir oturum yöneticisi vardır. Bu adımda, php.ini dosyasını web sunucusunda varsayılan ayarları değiştirmek için düzenleyeceğiz. php.ini dosyasının konumu mevcut yığına bağlıdır:
-
Ubuntu 20.04 üzerindeki bir LAMP yığını için şunu kullanın: /etc/php5/apache2/php.ini.
-
Ubuntu 20.04 üzerindeki bir LEMP yığını için yol genellikle şöyledir: /etc/php5/fpm/php.ini.
Ana php.ini dosyanızın konumundan emin değilseniz, phpinfo() fonksiyonundan yardım alın. Aşağıdaki kodu, web kök dizininizin içinde info.php adında bir dosyaya yerleştirin:
|
1 2 |
<?php phpinfo(); |
Tarayıcınızdan betiğe erişmeye çalışırken, “Loaded Configuration File” (Yüklenen Yapılandırma Dosyası) içeren satırı arayın. Yüklenen ana php.ini dosyasının tam konumunu bulacaksınız. Ortamınızın tüm hassas içeriğine sahip olduğu için info.php dosyasını kaldırdığınızdan emin olun.
Bundan sonra, php.ini dosyasını açın ve session.save_handler içeren satırı arayın. Varsayılan değer files olacaktır, bunu redis.
On LAMP ortamlarında:
|
1 |
$ sudo vim /etc/php5/apache2/php.ini |
On LEMP ortamlarında:
|
1 |
$ sudo vim /etc/php5/fpm/php.ini |
|
1 |
session.save_handler = redis |
Ardından, session.save_path satırındaki yorum işaretini kaldırın ve değeri Redis bağlantı dizesini içerecek şekilde değiştirin. İçerik aşağıdaki biçimde olmalıdır:
|
1 |
tcp://IPADDRESS:PORT?auth=REDISPASSWORD |
|
1 |
session.save_path = "tcp://10.133.14.9:6379?auth=yourverycomplexpasswordhere" |
Şu adımda belirlediğimiz şifreyi kullanın: Adım 4. Belirlenen şifreyi kullanmıyorsanız, Redis'i yapılandırırken auth parametresini sağlayın. Şimdi dosyayı kaydedin ve php her iki ortamda da servis.
Üzerinde LAMP ortamlarında:
|
1 |
sudo service apache2 restart |
Üzerinde LEMP ortamlarında:
|
1 |
sudo service php5-fpm restart |
Adım 8 — Redis Oturum Yönetimini Test Etme
Son adımda, oturumlarınızın artık Redis tarafından yönetildiğinden emin olmak için bir PHP betiğine veya uygulamasına ihtiyacımız var. Sayfayı her yeniden yüklediğinizde yazdırılan sayıyı artıran basit bir sayaç betiği kullanacağız.
Şu isimde bir dosya oluşturun: demo.php sunucusunda: web sunucusunda oluşturun ve belge kök klasörünüzün içinde tutun:
|
1 |
sudo sudo vim /usr/share/nginx/html/test.php |
Ardından, /usr/share/nginx/html kısmını belge kök dizini yolunuzu yansıtacak şekilde değiştirin:
|
1 2 3 4 5 6 7 |
<?php //simple counter to test sessions. should increment on each page reload. session_start(); $count = isset($_SESSION['count']) ? $_SESSION['count'] : 1; echo $count; $_SESSION['count'] = ++$count; |
Ardından, betiğe erişmek için tarayıcınızı http://web/demo.php adresine yönlendirmeniz gerekir. Program, sayfayı her yeniden yüklediğinizde sayıyı artıracaktır.
Artık oturum bilgileriniz Redis sunucusunda saklanacaktır. Doğrulamak için, redis makinesindeki SSH oturumunuza geri dönmeli ve redis-cli aracını kullanmalısınız. İçeriği ile bir kez daha alın:keys *:
|
1 |
10.133.14.9:6379> keys * |
Aşağıdaki çıktıyı göreceksiniz:
|
1 2 |
OUTPUT: 1) "PHPREDIS_SESSION:j9rsgtde6st2rqb6lu5u6f4h83" |
Çıktı, tüm bilgilerin güvenli bir şekilde redis sunucusunda saklandığını doğrular. Ek web sunucuları bağlamak isterseniz, aynı yöntemi izleyebilirsiniz.
Sonuç
Redis, çok sayıda yapılandırılmamış verinin depolanmasına izin veren bir NoSQL veritabanıdır. Çok az veritabanı, redis sunucusunun işlevselliği ve basitliği ile karşılaştırılabilir. Artan popülaritesi, geniş özellikleri göz önüne alındığında onu sürekli olarak az alternatifi olan bir olmazsa olmaz haline getirmektedir.
PHP uygulamaları ve bunları nasıl kullanacağınız konusundaki bilginizi daha da derinleştirmek için blogumuzdaki aşağıdaki eğitimlere göz atabilirsiniz:
- Ubuntu 18.04 ile Kubernetes Kümesinde PHP Uygulaması Dağıtma
- Ubuntu 20.04 üzerinde phpBB Kurulumu
- Ubuntu 18.04 üzerinde phpMyAdmin Kurulumu ve Güvenliğini Sağlama
Keyifli Kodlamalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.