- Konu sahibi
- #1
Apache HTTP Server, web tarayıcılarından gelen HTTP/HTTPS isteklerini karşılayıp dosya, uygulama veya yönlendirme sonucu döndüren açık kaynaklı bir web sunucusudur. Kısaca, ziyaretçi
Apache; statik HTML, CSS, JavaScript, görsel ve dosyaları doğrudan sunabildiği gibi PHP gibi uygulama çalışma ortamlarıyla, ters proxy yapılarıyla, TLS sertifikalarıyla ve erişim denetimi modülleriyle birlikte de kullanılabilir. Bir işletim sistemi değildir ve tek başına veritabanı veya içerik yönetim sistemi değildir; web sunucusu katmanıdır.
Bir ziyaretçinin isteği genel olarak şu sıradan geçer:
Tek bir sunucu IP'si üzerinde
Bu bloklar ana Apache yapılandırması/sanal host dosyası içindir; .htaccess içine yazılmaz. Dizinler mevcut olmalı, servis kullanıcısı okuyabilmeli ve ilgili Directory erişim politikası bunlara izin vermelidir. Bu yapılandırma yalnızca Apache tarafındaki eşleştirmeyi yapar. Alan adlarının DNS kayıtları sunucunun IP adresine yönelmiyorsa ziyaretçi doğru siteye ulaşamaz. Ayrıca Apache'nin ilgili adres ve portu dinlemesi gerekir.
Apache, tek veya birden fazla web sitesini esnek biçimde yönetmek, site bazlı yapılandırma yapmak ve çok sayıda modülden yararlanmak istediğinizde uygundur. Paylaşımlı hosting panellerinde, klasik PHP sitelerinde, kurumsal web sunucularında ve ters proxy arkasındaki uygulamalarda kullanılabilir.
Karar verirken temel ayrım şöyledir:
Apache zaten kuruluysa önce hangi yapılandırma dosyasını kullandığını ve modülleri kontrol edin. Dağıtıma göre dosya yolları değişebilir; bu nedenle rastgele dosya düzenlemek yerine servis yöneticisinin veya dağıtım paketinin gösterdiği ana yapılandırmayı kullanın.
En yaygın hata, Apache'nin alan adı DNS'ini kendiliğinden oluşturduğunu sanmaktır. Apache gelen isteği işler; alan adının IP adresine çözülmesini DNS sağlar. Bir diğer hata,
Ayrıca yalnızca ana yapılandırma dosyasını değiştirmek her zaman yeterli değildir. Gerekli modül yüklü değilse ilgili yönerge tanınmayabilir. Değişiklikten sonra yapılandırmayı test etmeden servisi yeniden başlatmak, yazım hatası nedeniyle kesintiye yol açabilir. Önce sözdizimi testi, ardından kontrollü yeniden yükleme ve son olarak günlük kontrolü daha doğru sıradır.
Hayır. Apache HTTP Server genel amaçlı web sunucusudur. Tomcat ise özellikle Java servlet ve JSP uygulamalarını çalıştıran uygulama sunucusu bileşenidir. İkisi birlikte kullanıldığında Apache öndeki web sunucusu veya proxy olabilir.
Bu durum Apache'nin PHP'yi yorumlayacak çalışma ortamına veya doğru entegrasyona sahip olmadığını gösterir. Dosyanın uzantısından çok, ilgili PHP çalışma yönteminin ve Apache bağlantısının yapılandırılması gerekir.
example.com adresine gittiğinde isteği alır; hangi sitenin çağrıldığını belirler, istenen içeriği sunar ve sonucu tarayıcıya gönderir. Yazılım genellikle httpd adıyla da anılır.Apache; statik HTML, CSS, JavaScript, görsel ve dosyaları doğrudan sunabildiği gibi PHP gibi uygulama çalışma ortamlarıyla, ters proxy yapılarıyla, TLS sertifikalarıyla ve erişim denetimi modülleriyle birlikte de kullanılabilir. Bir işletim sistemi değildir ve tek başına veritabanı veya içerik yönetim sistemi değildir; web sunucusu katmanıdır.
Apache nasıl çalışır?
Bir ziyaretçinin isteği genel olarak şu sıradan geçer:
- Tarayıcı, alan adını DNS üzerinden sunucunun IP adresine çözer.
- İstek Apache'nin dinlediği HTTP veya HTTPS portuna ulaşır.
- Apache, isteğin adresini ve
Hostbilgisini inceler. - Uygun sanal sunucuyu ve onun
DocumentRootdizinini seçer. - Dosyayı doğrudan gönderir veya isteği ilgili modüle, uygulamaya ya da proxy arka ucuna aktarır.
- HTTP yanıtını döndürür; ilgili erişim günlüğü yapılandırılmışsa isteği kaydeder.
<VirtualHost>, <Directory> ve benzeri bölümler ise belirli site veya dizinlere özel kurallar tanımlamak için kullanılır. Özellikler modülerdir: yeniden yazma, proxy, kimlik doğrulama, TLS ve içerik sıkıştırma gibi yetenekler ilgili modüllerle sağlanır.Somut örnek: aynı sunucuda iki site
Tek bir sunucu IP'si üzerinde
example.com ve example.org barındırılabilir. Apache, gelen istekteki alan adına bakarak farklı DocumentRoot dizinlerinden içerik sunar:
Kod:
<VirtualHost *:80>
ServerName example.com
DocumentRoot "/var/www/example.com"
</VirtualHost>
<VirtualHost *:80>
ServerName example.org
DocumentRoot "/var/www/example.org"
</VirtualHost>
Bu bloklar ana Apache yapılandırması/sanal host dosyası içindir; .htaccess içine yazılmaz. Dizinler mevcut olmalı, servis kullanıcısı okuyabilmeli ve ilgili Directory erişim politikası bunlara izin vermelidir. Bu yapılandırma yalnızca Apache tarafındaki eşleştirmeyi yapar. Alan adlarının DNS kayıtları sunucunun IP adresine yönelmiyorsa ziyaretçi doğru siteye ulaşamaz. Ayrıca Apache'nin ilgili adres ve portu dinlemesi gerekir.
Listen 80 yönergesi portu dinlemeyi sağlar; sanal host tanımı ise o porttaki isteğin hangi siteye ait olduğunu belirler.Apache ne zaman tercih edilir?
Apache, tek veya birden fazla web sitesini esnek biçimde yönetmek, site bazlı yapılandırma yapmak ve çok sayıda modülden yararlanmak istediğinizde uygundur. Paylaşımlı hosting panellerinde, klasik PHP sitelerinde, kurumsal web sunucularında ve ters proxy arkasındaki uygulamalarda kullanılabilir.
Karar verirken temel ayrım şöyledir:
| İhtiyaç | Apache'de karşılığı | Kontrol noktası |
|---|---|---|
| Statik dosya sunmak | DocumentRoot | Dosya yolu ve izinler |
| Bir IP'de birden fazla site | VirtualHost | DNS, ServerName ve port |
| URL değiştirmek veya yönlendirmek | mod_rewrite | Kural sırası ve döngü kontrolü |
| Uygulamaya istek aktarmak | Ters proxy modülleri | Arka uç adresi ve bağlantı durumu |
Kurulumdan sonra ilk kontroller
Apache zaten kuruluysa önce hangi yapılandırma dosyasını kullandığını ve modülleri kontrol edin. Dağıtıma göre dosya yolları değişebilir; bu nedenle rastgele dosya düzenlemek yerine servis yöneticisinin veya dağıtım paketinin gösterdiği ana yapılandırmayı kullanın.
- Yapılandırma sözdizimini servis yeniden başlatmadan test edin. Kurulumunuzun kontrol komutu (örneğin
apachectl -tveyahttpd -t) hata gösterirse önce belirtilen dosya ve satır numarasını düzeltin. - Apache'nin ilgili HTTP veya HTTPS portunu dinlediğini doğrulayın. Port dinlenmiyorsa doğru sanal host tanımlı olsa bile siteye erişilemez.
- İsteğin beklenen sanal hosta gidip gitmediğini kontrol edin. Yanlış site açılıyorsa genellikle DNS,
ServerName,ServerAlias, port veya sanal host sırası incelenir. - Erişim ve hata günlüklerini kontrol edin. Başarılı istek erişim günlüğünde, dosya veya yapılandırma sorunları ise hata günlüğünde iz bırakır.
Sık yapılan hatalar
En yaygın hata, Apache'nin alan adı DNS'ini kendiliğinden oluşturduğunu sanmaktır. Apache gelen isteği işler; alan adının IP adresine çözülmesini DNS sağlar. Bir diğer hata,
Listen ile VirtualHost görevlerini karıştırmaktır: ilki adres ve port dinlemeyi, ikincisi ise isteğe uygulanacak site yapılandırmasını belirler.Ayrıca yalnızca ana yapılandırma dosyasını değiştirmek her zaman yeterli değildir. Gerekli modül yüklü değilse ilgili yönerge tanınmayabilir. Değişiklikten sonra yapılandırmayı test etmeden servisi yeniden başlatmak, yazım hatası nedeniyle kesintiye yol açabilir. Önce sözdizimi testi, ardından kontrollü yeniden yükleme ve son olarak günlük kontrolü daha doğru sıradır.
Sık sorulan sorular
Apache ile Apache Tomcat aynı şey midir?
Hayır. Apache HTTP Server genel amaçlı web sunucusudur. Tomcat ise özellikle Java servlet ve JSP uygulamalarını çalıştıran uygulama sunucusu bileşenidir. İkisi birlikte kullanıldığında Apache öndeki web sunucusu veya proxy olabilir.
Apache çalışırken PHP dosyası neden metin olarak görünebilir?
Bu durum Apache'nin PHP'yi yorumlayacak çalışma ortamına veya doğru entegrasyona sahip olmadığını gösterir. Dosyanın uzantısından çok, ilgili PHP çalışma yönteminin ve Apache bağlantısının yapılandırılması gerekir.