Web Server nedir? Sorusuyla başlamak daha doğru olur. Web Server, oluşturmak istediğimiz web sitesini internette yayımlamak için gerekli alanın ayrılmasıdır bu ayırma işlemine Hosting de denebilir. Bizim burada yapacağımız şey Python’un belli kütüphanelerini kullanarak kendi web sitemizi hostlayacağız peki bunu nasıl ve neleri kullanarak yapacağız. Aslında gereken şeyler çok da zor değil bir tane Python IDE’si ve bu idenin içinde “http. server” Package’nin yüklü olması yeterli ondan sonrası bizim yazacağımız kodlara kalıyor isterseniz artık yazmaya başlayalım.
Resim- 1
Package’ımızı tanımlayarak başlıyoruz. Burada as h’ı bilmeyenler olabilir diye söylüyorum takma ad gibi düşünebiliriz her seferinde http.server yazmak yerine h yazmamız yeterli ayrıca h yerine istediğimiz kısaltmayı tanımlamamız mümkün.
Resim- 2
Buradaki adımda ise “BaseHTTPRequstHandler” sınıfıyla aynı özellikleri taşıyan “ecoHandler” adında kendi sınıfımızı oluşturuyoruz. Bu sınıfı oluşturmamızın sebebi ise kullanacağımız bazı metotların bizden bir Handler sınıf isteyecek olması. Bizim burada yaptığımız işlem de bir Handler sınıfı oluşturmak.
Resim- 3
“send_response” metodunu cevap gönder diye Türkçeleştirebiliriz. Bu metodun içine yazdığımız 200 sayısı neden 200 diye soracaksanız eğer size şu şekilde açıklayayım. Bu metodun üstüne gelip sağ tıklayıp önce “go to” ardından da “declaration or usage” kısmına tıklayarak bu metodun nasıl oluştuğunu görmüş olursunuz. Bu kodların nasıl yazıldığını biraz karıştırdıktan sonra aşağıdaki görseli buldum. Bu görselde parametre olarak girdiğimiz sayıların anlamları bulunmaktadır. Bu anlamlara göre size lazım olan sayıyı seçebilirsiniz.
Resim- 4
Resim- 5
Resim-5’de “send_header” metodunu görüyoruz bu metot anahtar kelime (Keyword) bir de değer (Value) olmak üzere 2 parametre alır. Bu parametreler hostlayacağımız web sayfasında görünürde hiçbir değişikliğe yol açmaz fakat yapılması zorunlu bir işlemdir burada bir başlık seçeriz ve bu başlık dahili bir ara bellekte saklanır. Ayrıca “send header” metodunu kullanıldığınız takdirde sonunda “end_headers” metodunun kullanmanız zorunludur.
Resim- 6
Bu görselde web sayfamızı test amaçlı ekrana etki edecek şekilde bir yazı yazmasını sağlıyoruz.
Resim- 7
Port dediğimiz şey nedir ilk olarak ondan bahsedeyim. Port belli bir işleme ait olan mantıksal bir yapıdır. Bir port, bir aktarım katmanı protokolünden ve 16 bitlik “port numarasından” oluşur. 16 bitlik port numarasından oluştuğu için neden bir sayı değeri olarak tanımladığımızı açıklıyoruz.
Resim- 8
Bu işlemde gerçekleşen şey HTTPServer metodunun içine bir adres (PORT NO) bir de Handler sınıfı (Bizim kodumuza göre ismi: “ecoHandler”) alır bu sınıfı da yukarıda kendimiz oluşturmuştuk. Bunları metoda yazarak Serverımız için gerekli olan özellikleri girmiş oluyoruz.
Resim- 9
Resim 9’daki metot hostladığımız Serverın, biz kapayana kadar açık kalmasını sağlar.
Resim- 10
Resim 10’da gördüğümüz gibi kodları yazdıktan sonra kodumuzu çalıştırıyoruz. İnternet tarayıcısına “localhost:PORT NO” – Bizim yazdığımız koda göre yazılması gereken (“localhost:7000”) – yazıyoruz. Ardından açılan sayfa bizim hostladığımız kendi internet sayfamızdır. Bu sayfanın neden internette gördüğümüz internet sayfaları gibi olmadığını soracak olursanız eğer, bizim burada yaptığımız işlem web sayfası tasarlamak değil sunucu oluşturmak ve var olan dosyayı hostlamak.
Bu konuyla ilgili sorularınızı alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.
Referanslar:
https://docs.python.org/3/library/http.server.html
TAGs: Web, Python, Web server, Web Geliştirme, Hosting, Localhost.
Güzel anlatımınız için teşekkür ederim.
Ellerine sağlık Kaan, çok güzel bir içerik olmuş.
Bir web developer olarak python’un web tarafı hep ilgimi çekmiştir. Bu makale ilerleyen süreçte işime yarayabilir. Teşekkürler.
Güzel bir yazı olmuş. Elinize sağlık.