Raspberry Pi'ı kendi sunucumuz olarak kullanabilir, kendi oluşturduğumuz web sitelerini, API'ları hem kendi iç ağımızda, hem de tüm internet ortamına erişime açabiliriz.
Makalemizde önce web server kurup ardından sitemizi internet erişimine nasıl açacağınızı göstereceğiz.
Bir önceki makalemizde .Net Core ile geliştirmiş olduğumuz web uygulamamızı Raspberry Pi üzerinde çalıştırmıştık. Örnek web sitesi olarak onu kullanacağız
Raspberry Pi'a Web Server Kurulması
Bunun için öncelikle sunucumuza gelen istekleri karşılayacak ve yönetecek bir web sunucusu kurmamız gerekmektedir. Windows ortamında bu işi IIS yapmaktaydı, linux ortamlarda ise "nginx" üzerinden web trafiğini karşılayabilmekteyiz. Php, wordpress veya python ile geliştirmiş olduğunuz bir web sitesi varsa da nginx ile aşağıdaki adımları kullanarak sitesini yayınlayabilirsiniz.
Raspberry makalelerinin klasik başlangıcı ile başlayıp cihazımızda öncelikle son güncellemelerin kontrolünü yapıyor ve cihazımızın güncelliğinden emin oluyoruz.
sudo apt-get update
"nginx" 'i kuruyoruz.
sudo apt-get install nginx
Kurulumun tamamlanması biraz zaman alabilir. Tamamlandıktan sonra nginx'i başlatalım:
sudo service nginx start
"/etc/nginx/sites-available" dizinine gidip default dosyasını editörde açalım ve "Server {}" tag' altında "location/" ile başlayan komutu aşağıdaki gibi değiştirelim.
Dosyayı terminalde açmak için aşağıdaki komutu çalıştırabilirsiniz;
sudo nano default
Ekleyeceğiniz komut satırı;
location / {
proxy_pass http://localhost:5000/;
proxy_http_version 1.1;
proxy_set_header Connection keep-alive;
}
Terminalde eklemeyi yaptıktan sonra eğer nano editörünü kullanıyorsanız "Ctrl + X" ile çık diyip sonraki ekranda "E" tuşuna basarak değişiklikleri kayıt edebilirsiniz.
Default dosyasında düzenlemeleri yaptıktan sonra nginx'i yeniden başlatmamız gerekiyor.
sudo nginx -s reload
Bulunduğu ağdan web uygulamasına erişim sağlamak
Sunucu yönlendirmelerini şimdilik iç ağda çalışacak şekilde tamamladık. Şimdi raspberry içerisinde yer alan web projesini çalıştırın. Ben belirttiğim gibi bir önceki makalede yaptığımız .Net Core MVC projesini çalıştıracağım.
Proje çalışmaya başladıktan sonra Raspberry Pi ile aynı ağda bulunan bir cihazdan Raspberry Pi'ın ağdaki IP adresini browser üzerinden ilk isteğimizi atalım.
Raspberry Pi üzerinde çalışan web uygulamamıza, bağlı olduğu ağdan erişimi böylelikle sağlamış olduk.
İnternet üzerinden erişim sağlamak
Oluşturduğumuz web sitesine internete bağlı herhangi bir cihazdan erişebiliriz. Bunun için bulunduğumuz ağdan internete çıkarken kullandığımız IP adresini bilmemiz ve bağlı olduğunuz ağda gelen istekleri Raspberry Pi'ın bağlı olduğu IP adresine yönlendirmeniz gerekmektedir.
Port yönlendirmesi için ağda modem arayüzüne erişebiliyor olmanız gerekmektedir. Modeminizin arayüz adresini bilmiyorsanız Windows kullanıcıları, "Komut Istemi" (cmd) açıp ipconfig yazıp "Default Gateway" başlığından öğrenebilirler.
Modem marka ve modellerine göre değişiklik gösterebilir menüler. Ben kablonet'in vermiş olduğu Ubee EVW32C modemi kullanmaktayım. Modem arayüzüne girdikten sonra Ağ Geçidi > Gelişmiş > Port Yönlendirme menülerinden istediğim sayfaya erişiyorum.
Burada "Yerel IP" başlığına gelen isteği yönlendireceğimiz IP adresini yazıyoruz. Benim bağlı olduğum iç ağda Raspberyy Pi, 192.168.0.28 IP adresine sahip olduğu için buraya onun adresini yazıyorum. Yerel başlangıç ve bitiş portlarına HTTP isteklerinde kullanılan 80 numarasını giriyoruz. Harici IP adresini statik IP kullanmıyorsak eğer varsayılan değerlerde bırakıyoruz ve harici başlangıç ve bitiş portlarına da 80 veriyoruz. Protokol alanında bende TCP ve UTP bulunmakta. "BOTH" seçip etkinleştiriyoruz.
Şimdi internete bağlı olduğumuz IP adresini (kullandığınız IP adresini görmek için tıklayın) kullandığımız web browser'a yazalım veya farklı bir cihaz üzerinden IP adresimize erişmeye çalışalım. Eğer port yönlendirmesini de başarıyla yaptıysanız sitenize erişim sağlıyor olacaksınız.
Telefonumdan mobil şebekeye bağlıyken erişmeye çalıştığımda;
Domain üzerinden uygulamaya erişmek
Gördüğünüz gibi sitemize erişim sağladık fakat IP adresleri ile doğrudan erişim sağlamak günümüzde kullanılmayan bir olay. Bunun için ben caylakyazilimci.com altına bir sub domain oluşturacağım, domain yönetiminden DNS A kaydı oluşturup ona gelen istekleri kendi evimdeki IP adresime yönlendireceğim. raspi.caylakyazilimci.com adresini oluşturmaya karar verdim.
caylakyazilimci.com domainini ve sitesini hem saldırılardan bir nebze olsun korumak hem de ücretsiz SSL sertifikasını kullanıp güvenli bir site sunmak için Cloudflare üzerinden yönetiyoruz.
Cloudflare kullanıyorsanız eğer aşağıdaki gibi subdomain eklemesini ve yönlendirmeyi yapabilirsiniz veya domaininizi yönettiğiniz panelden DNS yönlendirmelerini yaptığınız yerden A kaydına IP değerini yazmanız gerekmektedir.
Eklemeyi yaptıktan sonra https://raspi.caylakyazilimci.com/ adresinden kendi host ettiğimiz sitemize bağlantıyı sağlamış olduk.
Eğer sürekli bir site yayınlamak istiyorsanız kullandığınız ISP'den statik IP satın almanız ve makalede girdiğimiz IP adreslerini ona göre düzenlemeniz gerekmektedir. Aksi takdirde kullandığımız internet paketlerinde IP adresleri belirli periyotlarla değişmektedir. IP adresinizin değişmesi durumunda siteniz erişilemez olacaktır. Bu yüzden benim de makale için oluşturduğum yönlendirme eğer ki çalışmıyorsa benim ya dış IP adresim ya da Raspberry'nin bağlandığı iç IP adresi değişmiştir.