Apache (pache HTTP Sunucusu), bir web sunucusunu barındırmak ve sürdürmek için açık kaynaklı bir çapraz platform yazılımıdır.
Apache ne için kullanılmaktadır?
Yazılım şunları sağlamaktadır;
- Dinamik PHP sayfaları açmak;
- Yükü sunucuya dağıtmak;
- Sunucu hata toleransını sağlamak;
- PHP betiklerini çalıştırma ve sunucuyu kurma alıştırması yapmak.
Apache nasıl doğdu?
Apache, “Düzensiz bir sunucu”nun kısaltmasıdır. İngilizceden çevrilmiştir. Çeviri anlamı “Yamalı sunucu.” demektir. Adı, programın kökeninden gelmiştir. Geçen yüzyılın 90’larının ilk yarısında, NCSA HTTPd web sunucusu popülerdi. Geliştiricisi projeden ayrıldığında, yazılım geliştirme çok yavaşlamıştır. Ayrıca NCSA HTTPd’de birçok hata vardı. Diğer yazarlar bunları düzeltmeye ve kendi yamalarını uygulamaya başlamışlardır. Yama, geliştiricilerin eksikliklerini gideren bir kod parçası ve bilgi veya yazılım modülüdür. Başka bir isim ise yamalardır.
1995 yılında Brian Behlendorf bir geliştirme ekibi oluşturdu ve tüm yamaları birleştirdi. Apache’nin ilk sürümü bu şekilde oluşturululmuştur. Artık web sunucusu dünyadaki sitelerin yaklaşık %32’sine güç sağlamaktadır. Apache sürümleri farklı işletim sistemleri için mevcuttur. Bunlar; Linux, Microsoft Windows, BSD, Mac OS, BeOSNovell, NetWare.
İnternet sunucusu nedir?
Sunucu programı, sunucu bilgisayar ile kullanıcının tarayıcısı arasında bir aracıdır. İstemciden bir istek aldıktan sonra site dizininde istenen sayfayı bulmakta ve yanıt olarak göndermektedir. Tarayıcı, gönderilen dosyayı analiz etmektedir. Ayrıca kullanıcının gördüğü bir web sayfasına dönüştürülmektedir.
- Sunucu, kullanıcının tarayıcısı da dahil olmak üzere üçüncü taraf istemci programlarına açık bir bağlantı noktasında (genellikle 80, 8080 veya 8000, ancak bazen diğerleri) çalışmaktadır.
- Portlardan birine bir istek geldiğinde, program bunu iç yönergeler ve kurallarla karşılaştırmaktadır. Ayrıca çalıştırılıp çalıştırılmayacağına da karar vermektedir.
- Web sunucusu kuralları isteği yasaklıyorsa, kullanıcı bir hata kodu (404) görür veya veri erişimi reddedilmektedir.
- Sunucu programı isteği (başarılı veya hatalı) yerine getirdikten sonra bekleme moduna geçmektedir.
Web sunucusu ve tarayıcı arasındaki veri alışverişi HTTP (Köprü Metni Aktarım Protokolü) kullanılarak gerçekleştirilmektedir. Daha sonra onun yardımıyla her türlü dosyayı aktarmak da mümkün hale gelmiştir. Günümüzde HTTPS’nin geliştirilmiş bir sürümü, istemci ve sunucu arasındaki trafik şifrelemesi ile kullanılmaktadır.
Apache Nasıl Çalışmaktadır?
Apache, modüller ilkesine göre çalışmaktadır. Önce çekirdek kurulmakta ve ardından görevler dikkate alınarak gerekli modüller bağlanmaktadır.
Çekirdek
Apache web sunucusunun çekirdeği ve ana işlevselliği içermektedir. Ayrıca yapılandırma dosyası işleme, HTTP protokolü ve bir modül yükleme sistemidir. Tamamen ASF tarafından C programlama dilinde yazılmıştır. Apache çekirdeği modül kullanılmadan çalışabilmektedir. Ancak çözümün işlevselliği sınırlı olacaktır.
Modül sistemi
Modüller bireysel yazılım bloklarıdır. Web sunucusunun çekirdeğine bağlanırlar ve işlevselliğini genişletirler. Modüllerin yardımıyla programlama dilleri için destek, hataları düzeltme, güvenliği güçlendirme, kimlik doğrulama vb gibi son derece uzmanlaşmış görevler çözülmektedir. Günümüzde Apache web sunucusu için 500’den fazla modül bulunmaktadır. Yükleme sırasında yazılımın bir parçası olabilirler veya daha sonra bir yapılandırma dosyası kullanılarak yüklenebilirler.
Konfigürasyon sistemi
Bu sistem, çekirdek parametrelerini değiştirmek veya yeni modüller eklemek için kullanılan bir dizi metin komutudur. Onlar sayesinde “Apache” çeşitli seviyelerde çalışabilmektedir.
- Tüm sunucu. Bu seviyede, web sunucusunun bir bütün olarak çalışması ve kendisine gelen isteklerin işlenmesi gerçekleştirilmektedir. Bu tür komutlar httpd.conf dosyasına yazılmaktadır;
- Sanal platform. Bir bilgisayar, tek bir web sunucusu tarafından yönetilen birden çok siteyi barındırabilmektedir. Her siteye ayrı bir sanal konak tahsis edilmektedir. Bir kullanıcıdan bir istek geldiğinde, sistem onu hangi ana bilgisayara göndereceğini, verilerin nereden alınacağını, nasıl işleneceğini vb belirlemektedir. Bu komutlar extra/httpd-vhosts.conf yapılandırma dosyalarında yazılmıştır;
- Dizin. Bu düzeyin yapılandırma dosyası (.htaccess), kullanıcının dizindeki verilere erişimini kontrol etmektedir. Örneğin bir çevrimiçi mağaza web sitesinden bir mal listesinin veya finansal tabloların yasa dışı olarak indirilmesini önlemenizi sağlamaktadır.
- Apache sunucusu her istekte bu kurallara atıfta bulunmaktadır. Bu nedenle değişiklikler yapılır yapılmaz yeni direktifler yürütülmektedir. Metin yapılandırma dosyalarındaki veya komut satırını kullanarak yapılandırmaları düzenleyebilirsiniz.
Apache’nin Avantajları
- Esneklik. Web sunucusunun farklı seviyelerde çalışmasını kontrol eden birkaç yapılandırma dosyası ve modüller içermetkedir. Onun için özel görevleri özelleştirmenize olanak tanımaktadır.
- Çapraz platform. “Apache”, Microsoft Windows, MacOS, Linux, özel ağ BSD, Nevell NetWare çalıştıran bilgisayarlarda çalışabilmektedir. Farklı işletim sistemlerinde web sunucusunun işlevselliği ve yönetimi aynı kalmaktadır. Yalnızca yükleme işlemi ve dosyaların bulunduğu dizinlerin konumu farklılık göstermektedir.
- Kullanılabilirlik. Apache açık kaynaklı bir yazılımdır. Bu nedenle herkesin problemlerini çözmek için web sunucusunu öğrenebileceği, değiştirebileceği ve kullanabileceği anlamına gelmektedir.
- İşlevsellik. Çekirdek yetenekleri, Apache için modüller kullanılarak genişletilebilmektedir. Bazıları kurulum paketiyle birlikte verilmektedir. Diğerleri ise indirilebilmektedir.
- Kullanıcı desteği. Apache 25 yılı aşkın süredir piyasadadır. Bu süre zarfında çok sayıda referans belgeleri, modüler kitler, komut dosyaları, resmi geliştirici ve üçüncü taraf uzmanların pratik kullanım örnekleri yayınlanmıştır. Bir kullanıcının yazılımı kullanırken karşılaşabileceği hemen hemen her sorun için Web’de hazır bir çözümü vardır.
- Ölçeklenebilirlik. Apache, hem tek sayfalık hafif bir açılış sayfası, hem de büyük ölçekli bir çevrimiçi mağaza veya bilgi portalı çalıştırabilmektedir. Fiziksel sunucu üzerindeki yük arttığında başka bir bilgisayara ikinci bir Apache kurabilmektedir. Ayrıca aynı siteyi ona bağlayabilir ve trafiği iki web sunucusu arasında dağıtabilirsiniz.
- Programlama dilleri için destek. Apache, C++ ile yazılmıştır. Ayrıca farklı programlama dilleri ve geliştirme sistemleri için destek ekleyen birçok modül de vardır. Bunlar arasında Python, PHP, Ruby (apache-ruby), Tcl, Perl, ASP (apache-asp) bulunmaktadır. Apache, C, C++, sh, Lua, Java Script dahil hemen hemen tüm programlama dillerinde programları çalıştırmanıza izin veren FastCGI ve CGI mekanizmalarını desteklemektedir.
Apache’nin Dezavantajları
- Verim. Sistem her istekte konfigürasyon dosyalarına başvurduğu için işlem süresi artmaktadır. Bu durum sunucuda ağır bir yük olduğunda fark edilir hale gelmesidir. Apache sitesi sırayla her bağlantıyla çalışmaktadır. Ayrıca bu tür anlarda gözle görülür şekilde “yavaşlamaya” başlamaktadır. Ancak kullanılmayan modüller devre dışı bırakılarak bu eksiklik kısmen giderilebilmektedir.
- Güvenlik açığı. Sistemin temel çekirdeği, üçüncü taraf geliştiricilerin modüllerinin aksine çok sayıda güvenlik kontrolünden geçmiştir. Ek olarak, ne kadar işlevsel blok bağlanırsa, kurulum o kadar zor ve kritik bir hata yapma şansı o kadar yüksek olur.
- Yapılandırma dosyalarının sözdizimi. Onlarla çalışırken, kullanıcı sürekli olarak çok sayıda değişkenle ilgilenmektedir. Bu durum yeni başlayanların yönetmesini ve yapılandırmasını zorlaştırmaktadır. Dezavantajı ortadan kaldırmak için özel bir ücretsiz Apache GUI aracı kullanabilirsiniz.
Apache nasıl kullanılmaktadır?
Apache ile bir web sunucusu kurmanın en basit ve en yaygın yollarından biri, MAMP yazılım paketini kullanmaktır. Apache’nin kendisini, veritabanı yöneticisini, PHP motorunu ve diğer bileşenleri içermektedir. İş aşağıdaki gibidir;
- Kullanıcı, işletim sistemi için MAMP paketinin sürümünü resmi siteden indirmektedir. Bununla birlikte web sunucusunu bilgisayara kurmaktadır.
- Kurulumdan sonra programı başlatılmakta ve Başlat komutuna girmektedir.
- Sistem kullanıcıya sunucunun çalıştığını bildirecek, adresini ve dosyaların bulunduğu dizini gösterecektir. Tüm bunlar varsayılan olarak bırakılabilir veya bağımsız olarak yapılandırılabilir.
- Kullanıcı, http://localhost/MAMP/ sayfasında, anahtarlar ve veritabanı yönetim araçları da dahil olmak üzere web sunucusu hakkındaki tüm bilgileri görüntüleyebilmektedir.
- MAMP, yerel bir web sunucusu kurmayı kolaylaştırmaktadır. Ancak ISP’nizden özel bir genel IP hizmeti almadığınız sürece internetten görünmemektedir. Harici bir ağdan görülebilen bir site kurmak daha karmaşık ve zaman alıcıdır.