Apache Software Foundation

Yaptığım kısa araştırma neticesinde, 350 kadar açık kaynak projesi yürüten, kar amacı gütmeyen bir kuruluş statüsünde olduğunu öğrendim. Apache HTTP Server, bu projelerden bir tanesi. Diğer projelerin bir çoğu da Apache HTTP Server üzerine inşa edilen yazılım ve servislerden oluşuyor. Kategori ve isim sırasına göre tüm projeleri bu bağlantıdan inceleyebilirsiniz.

Apache HTTP Server İlk Adımlar

Client, Server, URL

İstemci

Client (İng.) olarak ifade edilen istemci, adı üzerinde isteyen tarafı ifade ediyor. İnternet ortamındaki bir bağlantı noktasının, istemci olabilmesi için, bir istek oluşturması gerekiyor. Bu istek, çoğunlukla web tarayıcı denilen Google Chrome, Safari, Windows Edge vb. programlar tarafından oluşturuluyor. Linux kullananlar bilirler; komut satırından lynx gibi programlarla da istek oluşturmak mümkün.

URL (Uniform Resource Locator)

İstek oluşturmak, aslında 3 farklı parçanın bir araya getirilmesinden ibaret. Bir araya getirilen parçaların bütününe URL adı veriliyor. Bu parçalar, Protokol, Sunucu Adı ve Dosya/Sorgu’dan oluşuyor. Bir kaç örnek verelim;

Örnek-1:

http://www.apache.org/docs/2.4/getting-started.html

Bu adreste, http ifadesi Protokolü, www.apache.org ifadesi Sunucu Adını, docs/2.4/getting-started.html ifadesi de istemcinin, html uzantılı getting-started isimli DOSYA isteğini belirtir.

Örnek-2:

https://www.apache.org/docs/2.4/getting-started.html

Örnek-1 ile aynı şekilde, aynı dosya istenmektedir. Ancak burada HTTP yerine, HTTPS protokolü kullanılacağı, isteğin gönderildiği sunucuya haber verilmektedir.

Örnek-3:

http://www.apache.org/index.html#projects-list

Bu örnekte ise, HTTP protokolü kullanılacağı www.apache.org Sunucusuna haber verilmektedir. Sunucudan, html uzantılı index dosyasının içerisinde bulunan projects-list olarak adlandırılan bölümün istendiği URL’de ifade edilmektedir. İsteğin sadece dosya değil, dosyanın içerisindeki bir yer işareti olduğuna dikkat edin.

Bazen de istemcinin URL adresinde ?arg=value şekline benzeyen ifadeler görebilirsiniz. Burada, arg yerine yazılan ifade ile sunucuya bir argüman gönderilerek, sorgu yapması istenmektedir. Argümanın değeri ise = işaretinin sağına yerleştirilen değerle oluşturulur. Bu ifade, istemciden girdi şeklinde değerler alarak, sonuçları kişiye özel olarak döndürebilen ve dinamik olarak adlandırılan web sitelerinde kullanılır. Genellikle php sayfalarında görebilirsiniz.

Burada dikkat edilirse, /docs/2.4/getting-started.html ifadesi Linux İşletim Sistemlerinden bildiğimiz klasör ve dosya adresleri ile aynı şekli kullanıyor. Tam da bu noktada, docs dizininin bir üst klasörü de olmalı sorusu akla geliyor. İşte www.apache.org sunucu adı diye ifade ettiğimiz adres, aslında sunucu bilgisayardaki DocumentRoot klasörünü belirtmektedir. Siz kolay anlaşılması için tasarlanan www.apache.org ifadesini kullandığınızda, Apache HTTP Server bunu, klasör yapısındaki genellikle /var/www/html/ klasörü olarak algılar. Dolayısıyla aslında sunucuya /var/www/html/docs/2.4/getting-started.html adresini göndererek 2.4 isimli klasördeki getting-started.html dosyasını istemiş olursunuz.

Apache HTTP Server içerisinden dosya veya sorgu istenebildiği gibi Sunucunun durumunu kontrol için server-status durumları da istenebilmektedir. İlerleyen yazılarda bunu ayrıca açıklamak daha faydalı olacaktır.

Sunucu

Yukarıda örneklerde açıklandığı gibi bir istek gönderildiğinde, Sunucunun, bu isteği öncelikle bekliyor olması gerekmektedir. Buradan da anlıyoruz ki Apache HTTP Server, kendisine verilen talimatlarda hangi IP adres ve PORT numaraları belirtilmiş ise o portlardan gelecek olan HTTP protokol isteklerini sürekli dinler.

Karşı tarafta dinleyen bir sunucu yoksa, web tarayıcınız size bir hata mesajı gösterecektir. Dinleyen sunucu varsa, o zaman iki ihtimal var.

Birincisi, istediğiniz öğe sunucuda vardır. İstemciye istediği sonuç iletilir. Bu durum, işlem hata kodlarında başarı, 200 OK olarak geçer.

İkinci ihtimal, Apache HTTP Server açık ve dinlemede olduğu halde istenen öğe bulunamaz. Bu durumda da İstemciye bir haber vermek gerekmektedir ki boşuna beklemesin. Adres yanlış olabilir. Adres doğrudur ancak istemcinin o öğeyi almaya yetkisi olmayabilir. Bu ihtimallerin alt başlıkları oldukça fazladır. Şu an için bunlarla dikkat dağıtmıyoruz. Merak edenler, bu bağlantıdan inceleyebilirler.

Bu yazıda, göreceli olarak basit konular anlatılmış gibi görünebilir. Ancak, bunların Apache HTTP Server yönetimini anlamak için, oldukça gerekli temel konular olduğunu belirterek yazıyı bitiriyorum.