Bloğa geri dön

Ubuntu veya Debian VPS üzerinde Apache Web Sunucusunu Yapılandırma

Ubuntu veya Debian VPS üzerinde Apache Web Sunucusunu Yapılandırma

Giriş

Apache şu anda dünyada en yaygın kullanılan web sunucusudur. Yirmi yılı aşkın bir süre önce geliştirilmiş ve the Apache Software Foundation tarafından sürdürülen açık kaynaklı bir yazılımdır. Eylül 2020 itibarıyla, dünyadaki tüm web sitesi trafiğinin %35'ine.

hizmet verdiği tahmin edilmektedir. Geliştiriciler; hızı, güvenliği, güvenilirliği, sağlamlığı ve özelleştirme kolaylığı nedeniyle Apache'yi tercih etmektedir. Ayrıca Apache, çeşitli uzantıların ve modüllerin kurulmasına izin verdiği için birçok ortamın ihtiyaçlarını karşılayabilmektedir. Bu, geliştiricilerin ve sunucu yöneticilerinin farklı amaçlara hizmet etmek için değiştirebilecekleri bir dizi yapılandırma sayesinde mümkündür. Bu eğitimde, size Ubuntu ve Debian sunucularında farklı sonuçları etkileyebilecek genel yapılandırma dosyaları ve seçenekleri konusunda rehberlik edeceğiz.

Debian ve Ubuntu en çok tercih edilen sunucu işletim sistemleri arasındadır. İkisinin pek çok benzerliği vardır. Örneğin, her ikisi de manuel kurulum için APT paket yöneticisini ve DEB paketlerini kullanır. Apache ayarlarını ve dizin yapısını benzer şekilde yönetirler. Bu nedenle, bu eğitimi her iki işletim sistemiyle de takip edebilmeniz gerekir. İlk olarak, birkaç adımda bir Ubuntu sunucusu kurmak için bu eğitimi.

takip edebilirsiniz. Ardından, sudo yetkilerine sahip root olmayan bir kullanıcı olarak oturum açın ve başlayalım!

Ubuntu ve Debian'da Apache Nasıl Kurulur

Sunucunuzda henüz Apache kurulu değilse, tek bir komut kullanarak kolayca kurabilirsiniz. İlk olarak, güncelleme komutunu çalıştırın:

Ardından, aşağıdaki komutu vererek Apache'yi kurabilirsiniz:

Kurulum tamamlandığında, aşağıdaki komutu kullanarak kurulu sürümü kontrol edebilirsiniz:

Bu eğitimin yazıldığı sırada sürüm şuydu:

Apache Web Server

Bundan sonra, sunucunuzun IP adresini veya alan adını ziyaret edin. Varsayılan Apache dizin sayfasını görebilmeniz gerekir:

Apache Web Server

Ubuntu ve Debian Dağıtımlarında Apache Dosya Hiyerarşisi

Hem Ubuntu hem de Debian dağıtımları apt paket yöneticisini kullanır. Benzer şekilde, bir paket kurduğunuzda benzer dosya hiyerarşileri oluşturur. Bizim durumumuzda, hem Ubuntu hem de Debian için Apache, yapılandırma dosyalarını “/etc/apache2” dizini içinde tutar. Aşağıdaki komutu kullanarak dizine gidin ve dizinin içeriğini listeleyin:

Komutun çıktısını aşağıdaki ekran görüntüsünde görebilirsiniz:

screenshot

Bir Apache sunucu kurulumunu yapılandırırken aşina olmanız gereken bir dizi dosya ve alt dizin görebilirsiniz. İşte açıklamaları:

  • apache2.conf – Bir Apache sunucusu için ana yapılandırma dosyasıdır. Ayrıca tüm varsayılan yapılandırmaları içerir. Neredeyse tüm yapılandırmalar bu dosya içinden yapılabilse de, basitlik sağlamak ve bu varsayılan dosyayı bozulmaya karşı korumak için her zaman ayrı özel dosyaların kullanılması önerilir.
  • conf-available – Henüz herhangi bir modülle ilişkilendirilmemiş ek yerel yapılandırma dosyalarını ve diğer uygulamaların dosyalarını içeren dizindir. Bu dizindeki yapılandırmalar, siz onları etkinleştirene kadar aktif değildir. a2enconf  komutu bir yapılandırma dosyasını etkinleştirebilir. İşte bu dizinin içeriği:

Apache Web Server

  • conf-enabled – Karşılık gelen modülleriyle ilişkili diğer uygulamaların ek yerel yapılandırmalarını ve yapılandırma dosyalarını içeren dizindir. Bu dizindeki yapılandırma dosyaları etkindir ve Apache'nin davranışını etkiler. a2disconf komutunu kullanarak bir yapılandırma dosyasını devre dışı bırakabilirsiniz. İşte bu dizinin içeriği:

conf-enabled

  • envvars – Apache2'nin ortam değişkenlerini içeren dosyadır. Bu dosyadaki değişkenler yalnızca Apache'yi etkiler ve Linux sisteminizle ilgili değildir. İşte dosyanın içeriği:

envvars

  • magic – Bir dosyanın MIME türünü belirlemek için talimatlar içeren dosyadır. Sunucunun bir dosyanın türünü belirlemesine yardımcı olur.
  • mods-available – Modülleri yüklemek ve yapılandırmak için yapılandırma dosyalarını içeren dizindir. Ancak henüz etkinleştirilmemişlerdir. Bunları şu komutu kullanarak etkinleştirebilirsiniz: a2enmod komutu.
  • mods-enabled – Modülleri yüklemek ve yapılandırmak için yapılandırma dosyalarını içeren dizindir. Bu dizindeki yapılandırmalar zaten etkindir ve ilgili modüllere bağlantı verir. Modülleri şu komutla devre dışı bırakabilirsiniz: a2dismod komutu. 
  • ports-conf – Sanal ana bilgisayarlar için kullanılabilir bağlantı noktalarını ve Apache'nin dinlediği TCP bağlantı noktalarını belirten dosyadır.
  • sites-available – Apache sanal ana bilgisayarları için kullanılabilir yapılandırma dosyalarını içeren dizindir. Sanal ana bilgisayarlar, Apache'nin farklı web sitelerine hizmet vermesini sağlar. Bu dizindeki dosyalar henüz aktif değildir. Bir sanal ana bilgisayar dosyasını şu komutla etkinleştirebilirsiniz: a2ensite.
  • sites-enabled – Etkinleştirilmiş sanal ana bilgisayar yapılandırma dosyalarını içeren dizindir. Genellikle sites-available dizinindeki dosyalara sembolik bağlantılar içerir. Bir sanal ana bilgisayar dosyasını şu komutu kullanarak devre dışı bırakabilirsiniz: a2dissite.

Apache yapılandırma dosyalarının modüler tasarımı, dosyaları ihtiyacınıza göre değiştirmenize ve eklemenize olanak tanır.

Apache2.conf Dosyasının İçeriği

Şu adresteki dosya: “/etc/apache2/apache2.conf” dosyası, Apache için ana yapılandırma dosyalarını içerir. Daha spesifik olarak, sunucuya talimatlarını veren yapılandırma yönergelerini içerir. Şunları tanımlamak için üç bölümden oluşur: global sunucu işlem yapılandırmaları, varsayılan sunucu yapılandırmasını ve sanal ana bilgisayar yapılandırmaları.

Ubuntu ve Debian sistemlerinde, dosyanın büyük kısmı global sunucu işlem yapılandırmalarını içerir. Alt kısımlara doğru, “Include” yönergesini kullanarak varsayılan sunucu ve sanal ana bilgisayarlar için yapılandırmaları bulabilirsiniz. Apache, diğer yapılandırma dosyalarını okumak ve ardından yönergenin göründüğü noktadan itibaren bunları mevcut yapılandırma dosyasına dahil etmek için “Include” yönergesini kullanır. Bu işlem Apache sunucusu başlatılırken gerçekleşir.

apache2.conf dosyasının en altına kaydırdığınızda, birkaç include yönergesi görmelisiniz. Bu yönergeler, mods-enabled dizinindeki modül tanımlarını, ports.conf dosyasını, conf-enabled dizinindeki yerel yapılandırmaları ve sites-enabled dizinindeki sanal ana bilgisayar yapılandırmalarını yükler.

Global Sunucu Yapılandırma Bölümü

Global sunucu yapılandırma bölümü, Apache'nin global olarak nasıl çalışacağını kontrol eden ayarları ve talimatları içerir. Apache'nin davranışını değiştirmek için değerlerini düzenleyebileceğiniz bazı yönergeler barındırır. Bunlardan bazılarını ele alalım:

  • Timeout – Bu yönerge, sunucunun bir isteği yerine getirmesi için maksimum süreyi belirtir. Varsayılan olarak 300 saniyedir; bu, daha hızlı yanıt veren bir uygulama geliştiriyorsanız muhtemelen çok yüksektir. Sunucunuz yeterli kaynağa sahipse bunu daha düşük bir değere değiştirebilirsiniz.
  • KeepAlive – Aynı istemciden gelen birden fazla isteği işlemek için her bağlantının açık kalması gerektiğini belirtir. Varsayılan olarak “On” (Açık) olarak ayarlanmıştır. Ancak “Off” (Kapalı) olarak ayarlanırsa, aynı istemciden gelse bile her istek için yeni bir bağlantı kurulması gerekecektir. Bu durum sunucuda ciddi aşırı yüklenmeye neden olabilir.
  • MaxKeepAliveRequests – Tek bir kalıcı bağlantı sırasında sonlandırılmadan önce izin verilecek maksimum istek sayısını kontrol eder. Sınırsız sayıda bağlantıya izin vermek için değeri 0 olarak ayarlayın. Maksimum performans ve verimlilik için bu sayıyı mümkün olan en yüksek değere ayarlayın.
  • KeepAliveTimeout – Son istekten sonra bağlantı sonlandırılmadan önce aynı istemciden gelecek bir sonraki isteğin ne kadar bekleneceğini (saniye cinsinden) belirler. Varsayılan değer 5 saniyedir. Bu süre dolarsa, bir sonraki istekte, isteği işlemek için yeni bir bağlantı kurulur.
  • HostnameLookups – DNS sorgulamasının etkinleştirilip etkinleştirilmeyeceğine karar verir. Varsayılan olarak kapalıdır. Etkinleştirirseniz, her istek ad sunucusuna en az bir sorgu yapılmasına neden olur ve bu da sunucu performansınızı büyük ölçüde olumsuz etkiler.

Varsayılan Sanal Ana Bilgisayar Dosyası

Yeni kurulmuş bir Apache sunucusu, varsayılan olarak adlandırılan bir sanal konak dosyasıyla birlikte gelir: 000-default.conf. Bu, varsayılan Apache index.html sayfasını sunan dosyadır. sites-available dizinine yerleştirilir. Bu dosyanın içeriği, Apache sanal konak dosyalarının biçimi hakkında size genel bir fikir verecektir. Dosyayı açmak için aşağıdaki komutu girin:

İşte dosyanın içeriği. Kısa olması açısından yorumları kaldırdık:

Konfigürasyon başlığında görebileceğiniz gibi VirtualHost *:80, varsayılan olarak bu sanal konak, 80 numaralı bağlantı noktasındaki istekleri işleyecek şekilde yapılandırılmıştır. Bu, standart HTTP bağlantı noktasıdır.

Apache, belirli bir istekle eşleşen en spesifik sanal konak tanımını kullanacak şekilde tasarlanmıştır. Bu, bu özel sanal konağın sunucuya gelen her isteği mutlaka işleyeceği anlamına gelmez. Aksine, daha spesifik bir tanıma sahip başka bir sanal konak dosyası olsaydı, bu dosyanın yerine o geçerdi.

İşte sanal konak dosyasındaki yönergelerin açıklamaları:

  • ServerAdmin – Sunucu sorunları olduğunda kullanılacak iletişim e-postasını belirtir. Apache bunu genellikle oluşturduğu hata sayfasında görüntüler. Eğer ServerSignature değerini /etc/apache2/conf-enabled/security.conf dosyasında “Email” olarak ayarlarsanız, burada belirtilen e-posta adresi bir mailto
  • DocumentRoot – Bu yönerge, web sitesi dosyalarını içeren dizini gösterir. Varsayılan Apache karşılama dizini sayfasını Ubuntu 20.04'te /var/www/html dizininde bulabilirsiniz.
  • ErrorLog – Bu yönerge, hata günlüğü dosyasının konumunu belirler.
  • CustomLog – Bu yönerge, erişim günlüğünün konumunu ve günlük görüntüleme biçimini gösterir.

Additional Virtual Host Directives

  • ServerName – Sanal konağın işlemesi gereken alan adını veya IP adresini belirtir. Apache sunucumuzun birden fazla web sitesine hizmet verebilmesi için birden fazla sanal konak tanımlıyor olsaydık, bir ServerName yönergesi ekler ve her bir sanal konağın hizmet vermesi gereken alan adını belirtirdik.
  • ServerAlias – Bu yönerge, tek bir sanal konak dosyasının birden fazla ad için geçerli olmasını sağlayarak aynı içeriğe ulaşmak için alternatif alan adları sunar. Örneğin, kullanıcılarınız alan adınızın önüne www eklediklerinde de aynı içeriğe erişebilirler. Örneğin, example.com alan adı için sanal konağa aşağıdakileri ekleyebiliriz:

The Directory Definition Directive

Gerçek dünya senaryolarında, web sitesi dosyalarınız muhtemelen birkaç farklı dizinde bulunacaktır. Varsayılan sanal konak dosyasında Directory yönergesi bulunmaz çünkü yalnızca tek bir index.html dosyası sunabilir. Directory yönergesi, Apache'nin web sitesi belge kök dizini içindeki farklı dizinleri nasıl işleyeceğini belirtir. Dosya sistemine erişim kısıtlamalarını da bu yönergede tanımlarsınız. Varsayılan olarak Apache, yalnızca /var/www dizinindeki dosyalara İnternet erişimine izin verir. Bu dizinde, web sitenizin dosyalarını barındıracak başka dizinler oluşturabilirsiniz. Ayrıca, dizindeki dosyalara nasıl erişilmesini istediğinizi de belirtebilirsiniz. Örnek bir tanım şu şekilde görünebilir:

The <Directory /var/www/html> ifadesi, bu kuralların uygulanacağı dizini belirtir. “AllowOverride” seçeneği, belirtilen dizine yerleştirmeniz durumunda bir “.htaccess” dosyasının ayarları geçersiz kılıp kılmayacağını belirtir. Bu, .htaccess ve URL yeniden yazma ile çalışan Laravel gibi çerçevelerle çalışırken gereklidir.

Sanal konaklar hakkında daha fazla bilgi edinmek için Ubuntu 20.04 üzerinde Apache sanal konaklarının nasıl kurulacağına dair eğitimimizi ziyaret edebilirsiniz. İşte tanımladığımız tüm yönergeleri içeren örnek bir sanal konak dosyası:

Redirect, Alias ve ScriptAlias Yönergeleri

Bazı durumlarda, doğrudan DocumentRoot dizini altında olmayan web sitesi dosyalarına veya yürütülebilir dosyalara erişmek isteyebilirsiniz. İşte bu üç yönerge burada devreye girer.

The Redirect yönergesi, istemcilere farklı bir URL ile yeni bir istekte bulunmalarını söyler. Genellikle bunu, web sitenizin ziyaretçilerini farklı bir alan adına veya IP adresine yönlendirmek istediğinizde kullanırsınız. Şunu unutmayın ki, Redirect yönergesi, Alias ve ScriptAlias'tan önce çalıştırılır. Alias yönergesi, bir URL'yi bir dizin yoluna eşler. ScriptAlias yönergesi ise bir URL'yi yürütülebilir betikleri içerecek dizinlerle eşler. Alias ve ScriptAlias yönergelerinin çalışması için, dizin izinlerini web sunucusunun kullandığı www-data kullanıcısına ayarlamanız gerekir.

Apache'de Siteler ve Modüller Nasıl Etkinleştirilir

Sanal konaklar ve modüller, etkinleştirilmeden önce Apache işlemi tarafından aktif ve erişilebilir olamazlar. Ayrıca, sanal konaklar açıklandığı gibi sites-available dizini içinde oluşturulur. Eğer example.com.conf adında bir sanal konak dosyanız varsa, aşağıdaki komutu kullanarak bunu etkinleştirebilirsiniz:

Bu komut sanal konağı etkinleştirir. Ancak, değişikliklerin geçerli olması için aşağıdaki komutu girerek Apache'ye yapılandırma dosyalarını yeniden yüklemesini söylemelisiniz:

Şu adla adlandırılan bir sanal konak dosyasını devre dışı bırakmak isteyebilirsiniz: example.com.conf (böylece Apache bunu istekleri karşılamak için kullanmaz). Bunu yapmak için, bir dosyayı devre dışı bırakmak üzere aşağıdaki komutu girin:

Yine, değişikliklerin hemen geçerli olması için aşağıdaki komutu girerek Apache'ye yapılandırma dosyalarını yeniden yüklemesini söylemelisiniz:

Benzer şekilde, aynı sözdizimini kullanarak modülleri etkinleştirebilir ve devre dışı bırakabilirsiniz. Bir modülü etkinleştirme komutu “a2enmod” ve bir modülü devre dışı bırakma komutu “a2dismod.” Örneğin, mod_rewrite adında, .htaccess yapılandırmalarına bağlı olarak URL'leri yeniden yazmaya yardımcı olan bir Apache modülü vardır. .htaccess dosyasının çalışması için bu modülü etkinleştirmeniz gerekir. Bunu şu komutu girerek yapabilirsiniz:

Bu değişikliğin geçerli olması için Apache yapılandırmalarını yeniden yüklemelisiniz. Ayrıca şu komutu girerek modülü devre dışı bırakabilirsiniz:

Bundan sonra, değişikliklerin hemen geçerli olması için Apache2 yapılandırmalarını yeniden yükleyin.

Son olarak, Apache web sunucusuna aşina olmanıza yardımcı olacak bazı ek kaynaklar şunlardır:

Sonuç

Bu öğreticide, Ubuntu ve Debian sistemlerindeki temel Apache yapılandırma dosyalarını tanımladık. Gösterdiğimiz gibi, Apache son derece modülerdir; bu da farklı görevleri gerçekleştirmek için birçok modül kurabileceğiniz anlamına gelir.

Farklı sonuçlar elde etmek için bu modülleri kolayca etkinleştirebilir, devre dışı bırakabilir ve diğer yapılandırmaları değiştirebilirsiniz. Artık daha sonra ana yapılandırma dosyasına dahil edilecek olan yerel yapılandırma dosyalarını değiştirebilirsiniz. Böylece, genel yapılandırma dosyasını bozma konusunda endişelenmenize gerek kalmaz.

Keyifli Bilişimler!

author

Manpreet Singh

Yazar · CloudSigma

Preslav Dobrev, CloudSigma'da Kreatif Tasarımcı olarak görev yapmakta olup geleneksel ve yenilikçi pazarlama kanallarını kullanarak tutarlı bir kurumsal kimlik oluşturmaya odaklanmaktadır. Sanatsal vizyonu stratejik pazarlamayla harmanlayarak etkili marka anlatıları oluşturma konusunda oldukça yeteneklidir.

Yorumlar

Henüz yorum yapılmamış. İlk siz olun.