Amazon EC2 + Apache + Ratchet Kullanarak WebSocket Oluşturma
Bu doküman, Amazon EC2 üzerinde Ratchet kütüphanesi kullanarak WebSocket bağlantısı kurma adımlarını detaylı bir şekilde açıklamaktadır. WebSocket, gerçek zamanlı çift yönlü iletişim sağlayan bir teknolojidir ve web uygulamalarında sıkça kullanılır.
Bu örnekteki kurulum WordPress tabanlı bir web sitesinde kullandığımız bildirim sistemi için kurulmuştur. Bağlantıdan sonraki adımlar Ratchet dökümanına göre özelleştirilebilir. Makalede bildirim sisteminin fonksiyonları yer almamaktadır.
Adım Adım Kurulum Kılavuzu
Security Group Ayarı:
- Amacı: EC2 instance’ınıza dışarıdan WebSocket bağlantıları alınabilmesi için güvenlik duvarı ayarlarını yaparız.
- İşlem
- EC2 instance’ınızın Security Group’una gidin.
- Inbound Rules kısmına yeni bir kural ekleyin:
- Type: TCP
- Port Range: 12345 (WebSocket için kullanacağınız port)
- Source: 0.0.0.0/0 (Her yerden bağlantı kabul et)
EC2’ya Bağlanma ve Dizin Oluşturma:
- Amacı: EC2 instance’ınıza SSH ile bağlanarak WebSocket uygulamasının dosyalarını saklayacağımız bir dizin oluştururuz.
- İşlem
- EC2 instance’ınıza SSH ile bağlanın.
- /bitnami/wordpress/wp-content dizini altında websocket adında yeni bir dizin oluşturun:
mkdir websocket
Ratchet Kurulumu ve Testi:
- Amacı: Ratchet kütüphanesini yükleyip basit bir WebSocket sunucusu oluşturarak çalışıp çalışmadığını test ederiz.
- İşlem
- http://socketo.me/docs/hello-world adresindeki Ratchet dökümantasyonunu takip ederek kurulum ve test adımlarını gerçekleştirin. Bu adımda Ratchet’i yükleyecek ve basit bir “Hello World” mesajı gönderen bir WebSocket sunucusu oluşturacaksınız.
Apache Konfigürasyonu:
- Amacı: Apache web sunucusunu WebSocket bağlantılarını yönlendirecek şekilde yapılandırırız.
- İşlem
- Apache’nin sanal sunucu konfigürasyon dosyasını açın
sudo vi /opt/bitnami/apache/conf/vhosts/wordpress-https-vhost.conf
- Dosyaya aşağıdaki satırları ekleyin:
ProxyPass "/ws2/" "ws://localhost:12345/"
ProxyPass "/wss2/" "wss://localhost:12345/"
Bu satırlar, /ws2/ ve /wss2/ ile başlayan istekleri sırasıyla ws://localhost:12345/ ve wss://localhost:12345/ adreslerine yönlendirecektir.
Apache’i Yeniden Başlatma:
- Amacı: Yapılan değişikliklerin etkili olması için Apache web sunucusunu yeniden başlatırız.
- İşlem
sudo /opt/bitnami/ctlscript.sh restart apache
Chrome Konsolundan Test:
- Amacı: Tarayıcınızdan WebSocket bağlantısı kurarak uygulamanın çalışıp çalışmadığını kontrol ederiz.
- İşlem
- Chrome’un geliştirici araçlarını açın ve konsola aşağıdaki kodu yazın:
Burada example.com yerine kendi domain adınızı yazmanız gerekmektedir. Eğer bağlantı başarılı olursa konsolda “Connection established!” mesajını göreceksiniz.
- Chrome’un geliştirici araçlarını açın ve konsola aşağıdaki kodu yazın:
var conn = new WebSocket('https://example.com/ws2/');
conn.onopen = function(e) {
console.log("Connection established!");
};
conn.onmessage = function(e) {
console.log(e.data);
};
Ek Açıklamalar
- WebSocket Portu: 12345 portu sadece bir örnektir. İstediğiniz herhangi bir portu kullanabilirsiniz.
- Security Group: Güvenlik açısından sadece gerekli olan portları açmanız önemlidir.
- Ratchet Kütüphanesi: Ratchet, PHP için güçlü bir WebSocket kütüphanesidir. Daha gelişmiş uygulamalar için bu kütüphanenin sunduğu özelliklerden faydalanabilirsiniz.
- Apache Konfigürasyonu: ProxyPass direktifleri, HTTP isteklerini WebSocket sunucusuna yönlendirmek için kullanılır.
- Chrome Konsolu: WebSocket bağlantısını test etmek için tarayıcınızın geliştirici araçlarını kullanabilirsiniz.