Geçtiğimiz günlerde yayınladığımız iki farklı yazıda, Apache HTTP Server İstemci Sunucu ilişkisi ve Hostname, DNS konularını açıklamaya çalışmıştık. Bu yazıda ise Ayar dosyalarıdan (apache2.conf, httpd.conf ve htaccess ) bahsedeceğiz.

apachefeather

Apache HTTP Server Ayarları

Apache HTTP Server ayarları basit text dosyaları aracılığıyla yapılır. Bu işlem, text dosyaların içerisine yazacağınız Directive adı verilen standart olarak belirlenmiş özelliklere değer atamaktan ibarettir. Kullandığınız dağıtıma göre isimleri değişiklik gösteren ayar dosyalarının yerleri aşağıda belirtilmiştir.

Apache httpd 2.4 Varsayılan Yapı (Kaynak kod ile yüklediyseniz)

Apache httpd 2.x Varsayılan Yapı (Debian, Ubuntu için)

Apache httpd 2.x Varsayılan Yapı (Fedora, CentOS, RHEL için)

Diğer sürüm ve dağıtımlar için bu bağlantıyı kullanabilirsiniz.

Ana ve Alt Ayar Dosyaları (apache2.conf, httpd.conf)

Yukarıdaki dizin ve .conf ayar dosyalarının yapısını incelerseniz, kaynak kodlardan derlenen Apache HTTP Server için ayar dosyasının /usr/local/apache2/conf/httpd.conf adresinde olduğunu ancak Debian, Ubuntu dağıtımlarında /etc/apache2/apache2.conf ve /etc/apache2/ports.conf olmak üzere iki ayrı dosyada tutulduğunu görebilirsiniz.

Apache2.conf ayar dosyasını, Apache HTTP Server ilk başlatıldığında, parça parça ve ayrı isimlerle belirtilen tüm ayar dosyalarını birleştiren bir ana merkez olarak düşünebilirsiniz. Örneğin Debian ve Ubuntu için apache2.conf dosyası ile birlikte ports.conf dosyası bulunduğundan apache2.conf dosyasının içerisine ports.conf dosyasından bilgileri al ve Apache HTTP Server hizmetini o şekilde başlat şeklinde Directive/Komut verilmesi gerekir. Bunu yapmak çok basittir. apache2.conf içinde bulunan aşağıdaki satır bu işlemi yapar.

Include bir directive, ports.conf ise içinde hangi ayarlar bulunuyorsa sisteme dahil edilen argüman durumundadır.

Bir Ayar Nerede Geçerli Olur

Yukarıda belirtilen satır, herhangi bir kapsam kısıtlaması olmadan yazıldığından Global ayar olarak kabul edilir ve tüm servis için geçerli olur. Aşağıdaki örnekte ise belli bir klasör için belirtilen yetki ve izinler görülebilir.  <Directory>, <Location>, <VirtualHost> gibi bir kapsam içine alınmayan ayarlar, global ayar olarak kabul edilir.

Burada gördüğünüz gibi /var/www/ klasörü için yapılan yetki ayarlamaları bulunmaktadır. Bu ayarlar sadece /var/www/ klasörünü etkiler.

.htaccess Dosyaları

Sunucu kısıtlamaları veya paylaşımlı sunucularda bulunan bir takım kısıtlamalar sebebiyle apache2.conf gibi ayar dosyalarına doğrudan erişim yetkiniz bulunmayabilir. Bu durumda web sitenizdeki klasör ve içeriklerin ayarlarını yapabilmeniz için .htaccess adı verilen ayar dosyaları kullanılır. Bu dosya sayesinde aynı sunucuda bulunan bir çok sanal sunucu kendine özel ayarları yapabilmektedir.

.htaccess dosyaları da nerede etkili olmaları isteniyorsa o klasörün içerisine yerleştirilmelidir. Web sitesi dosyaları genelde publichtml/ klasöründe bulunur. Bu durumda publichtml/ klasörünün hemen içerisine yerleştirilen .htaccess dosyası tüm içeriğe etki eden ayarları bulundurmalıdır. Örneğin WordPress için, uploads klasörünün içerisine koyacağınız ayrı bir .htaccess dosyası ile içeriklerinizi kontrol etme imkanını elde edersiniz.

.htaccess dosyasının, apache2.conf dosyasında bulunan bir takım ayarları iptal ederek, kendi kişisel ayarlarınızı yapmanızı sağladığını belirtelim.

Dosyalardaki Yorumlar

Ayar dosyalarında # işaretiyle başlayan satırlar yorum satırları olarak algılanır ve dikkate alınmazlar. Yaptığınız ayarların üst kısmına bu şekilde açıklama ve yorumlar yapmak, sistemi sizin haricinizde veya sizden sonra yönetecek kişilere büyük kolaylık sağlar.

Bir özelliği iptal etmek istediğinizde de o satırı tamamen silmenize gerek yoktur. Baş tarafına # işareti koyarak devre dışı bırakabilirsiniz. Tekrar açmak istediğinizde # işaretini kaldırmanız yeterli olacaktır.

Apache HTTP Server hizmeti çalışırken bir ayar değişikliği yaptığınızda normal olarak bu işlem hemen geçerli olmaz. Geçerli olması için servisi tekrar başlatmalısınız. Aşağıda ilk başlatma, durdurma ve tekrar başlatma komutları bulunmaktadır.

Debian, Ubuntu için

Fedora, CentOS, RHEL için