Bloğa geri dön

CentOS 7 üzerinde Apache Web Sunucusu Kurulumu

CentOS 7 üzerinde Apache Web Sunucusu Kurulumu

Bir web sunucusu, web sayfalarını depolar, işler ve web sitesi ziyaretçilerine sunar. Oldukça fazla sayıda Açık Kaynaklı web sunucusu yazılım seçeneği vardır, ancak Apache HTTP sunucusu dünyada en yaygın kullanılan web sunucusu olarak kabul edilir. Bunun nedeni, açık kaynaklı olmasının yanı sıra, modüler mimarisinin farklı amaçlara hizmet edecek modüller ekleyerek yeteneklerinin genişletilmesine olanak tanımasıdır. Sonuç olarak, web sunucusu son derece sağlamdır.

Eğer bir CentOS 7 sistemine Apache kurmak istiyorsanız, bu eğitim tam size göre. Ek olarak, sanal ana bilgisayarlar oluşturmayı öğreneceksiniz, böylece CentOS üzerinde çalışan tek bir Apache HTTP sunucusunda birden fazla web sitesi barındırabilirsiniz.

Bu, yalnızca Apache kurulumuna odaklanan ayrıntılı bir eğitimdir. LAMP yığını hakkında adım adım bir eğitim arıyorsanız, göz atabileceğiniz CentOS 7 üzerinde Linux, Apache, MySQL, PHP (LAMP) Nasıl Kurulur kılavuzumuz mevcuttur. Şimdi başlayalım!

Önkoşullar

Bu uygulamalı bir eğitim olduğundan, aşağıdakilere sahip olmalısınız:

Adım 1: Apache HTTP Sunucusunun Kurulması

Apache'yi CentOS varsayılan depolarında bulabilirsiniz. Bu nedenle, kurulum yum paket yöneticisi kullanılarak oldukça kolaydır. Önkoşullar bölümünde belirtildiği gibi, root olmayan kullanıcıyla giriş yapmış olmanız gerekir. Yerel Apache httpd paket dizinini güncellemek için terminalinizde aşağıdaki komutu çalıştırın:

Paketler güncellendikten sonra, Apache'yi kurmak için aşağıdaki komutu girin:

Kurulumu onaylayın ve yum'un Apache'yi ve gerekli bağımlılıklarını kurmasını bekleyin.

Eğer CentOS 7 üzerinde FirewallD ile Güvenlik Duvarı Kurulumu eğitimindeki adımları izlediyseniz ve 80 numaralı bağlantı noktası için güvenlik duvarını etkinleştirdiyseniz, hazırsınız demektir. Firewalld, CentOS için güvenlik duvarı yöneticisidir. Aksi takdirde, aşağıdaki komutu girerek firewalld'nin http (port 80) hizmetini etkinleştirebilirsiniz:

Trafiği güvenli HTTPS üzerinden sunmayı planlıyorsanız, aşağıdaki komutu girerek firewalld'nin https (port 443) hizmetini etkinleştirebilirsiniz:

Son olarak, değişikliklerin geçerli olması için firewalld'yi yeniden yüklemelisiniz. Yeniden yükleme komutu şudur:

Bu noktada, yukarıdaki komutları çalıştırıp çalıştırmadığınıza bağlı olarak, trafiği HTTP veya HTTPS üzerinden sunmak için Apache'yi kurdunuz ve yapılandırdınız.

Adım 2: Apache Web Sunucusunun Çalıştığının Doğrulanması

CentOS'ta Apache işlemi kurulumdan sonra otomatik olarak başlamaz. Apache'yi manuel olarak başlatmak için aşağıdaki komutu girin:

Hizmetin başarıyla başlatıldığını doğrulamak için aşağıdaki komutu girerek durumu kontrol edin:

Hizmet çalışıyorsa, aşağıdaki ekran görüntüsüne benzer bir çıktı görmelisiniz. Aktif (active) durumuna dikkat edin:

httpd status

Çıktı, hizmetin başarıyla başlatıldığını ve çalıştığını gösterir. Sırada, Apache'nin internet kullanıcılarına bir sayfa sunabildiğini de test etmeliyiz. Apache, sunucunuza internet üzerinden erişilip erişilemediğini test etmek için kullanabileceğiniz varsayılan bir sayfa ile birlikte gelir.

Henüz bilmiyorsanız, sunucunuzun genel IP adresini bulmanız gerekecektir. Bu IP adresi, tarayıcınızın adres çubuğunda varsayılan Apache web sayfasını istemek için kullanacağınız adrestir. Aşağıdaki komutu girerek ana bilgisayarın ağ adreslerini görüntüleyebilirsiniz:

Elde ettiğiniz adres listesinden, çalıştıklarını doğrulamak için her birini tarayıcınızda deneyebilirsiniz. İsteğe bağlı olarak, curl IP adresinizi şuradan almak için: icanhazip.com. Aşağıdaki komut, başka bir internet konumundaki bir bilgisayardan görüldüğü şekliyle genel IP adresinizi çıktı olarak verir:

Sunucunuzun genel IP adresini aldıktan sonra, bunu kopyalayıp tarayıcınızın adres çubuğuna yapıştırın:

Tarayıcınız varsayılan CentOS 7 Apache web sayfasını yüklemelidir:

web server home page

Varsayılan Apache web sayfasını yükleyebildiyseniz, bu sunucunuzun düzgün çalıştığı anlamına gelir. Aşağı kaydırırsanız, Apache dosyaları ve dizin konumları hakkında bazı temel bilgileri görebilirsiniz. Servis kurulup düzgün bir şekilde çalışmaya başladığında, servisi yönetmek için çeşitli systemctl komutlarını kullanabilmeniz gerekir. 

Adım 3: Apache Servisini Yönetme

Bu bölümde size bazı temel Apache Yönetim komutlarını göstereceğiz. İşte web sunucusunu durduran komut:

İşte web sunucusunu başlatmak için kullanılan komut:

Sırada, web sunucusunu yeniden başlatmak (durdurmak ve başlatmak) için kullanılan komut var:

Bundan sonra, Apache servisini yeniden yükleme komutunu göstereceğiz. Bu komut, yalnızca yapılandırma değişiklikleri yaparken gereklidir. Yeniden yükleme yaparak, Apache işlemi, yeniden başlatmış olsaydınız gerçekleşecek olan bağlantıların kesilmesi durumu yaşanmadan yapılandırma değişikliklerini uygulayacaktır:

Varsayılan yapılandırmalara göre, Apache sunucu önyüklendiğinde otomatik olarak başlar. Bu davranışı değiştirmek isterseniz, servisin başlangıçta çalışmasını devre dışı bırakacak komut şudur:

Servisin başlangıçta çalışmasını yeniden etkinleştirmek için aşağıdaki komutu girin: 

Adım 4: Apache Sanal Konaklarını (Virtual Hosts) Kurma

Varsayılan olarak Apache, tek bir web sitesini barındıracak ve sunacak şekilde yapılandırılmıştır. Çoğu durumda, web sunucunuzun birden fazla web sitesini sunmasını ve barındırmasını istersiniz. Örneğin, alt alan adlarınız olabilir veya ana şirket/kuruluş web siteniz için bir blog sayfası kurmak isteyebilirsiniz. İşte bu noktada Apache sanal konakları (virtual hosts) devreye girer. Apache sanal konakları, web sunucunuzu birden fazla web sitesi sunacak şekilde yapılandırmanıza olanak tanır. Apache sanal konakları, Nginx sunucusundaki

sunucu bloklarının (server blocks) eşdeğeridir. Bu kılavuzda, alan adımız olarak example.com kullanarak bir sanal konağın nasıl oluşturulacağını göstereceğiz. Elbette, example.com alan adı internette çalışmayacaktır, bu nedenle onu kendi gerçek alan adınızla değiştirmelisiniz – adımlar aynıdır. 

CentOS üzerine Apache kurduğunuzda, /var/www/html dizininden içerik sunacak şekilde yapılandırılmış bir sanal konak yükler. Bu tasarım, tek bir site barındırıyorsanız iyi çalışır. Ancak biz birden fazla site barındırabilmek istiyoruz. Varsayılan /var/www/html dizinini olduğu gibi bırakıp bunun yerine /var/www konumu içinde example.com alan adı için başka bir dizin oluşturacağız. Varsayılan dizini bırakmanın nedeni, istemci istekleri sanal konaklarla yapılandırdığınız diğer sitelerle eşleşmediğinde bu dizinin sunulmasını sağlamaktır. Ayrıca, oluşturduğunuz sanal konakları devre dışı bırakmak isterseniz, trafiği sunmak için varsayılan dizin kalacaktır. 

İlk olarak, /var/www içinde alan adınız için bir dizin oluşturun. İstediğiniz bir ismi seçmekte özgürsünüz. Ancak, sanal konak conf dosyasını oluşturduğunuzda kolayca hatırlayabilmeniz için alan adınıza benzer bir isim seçmeniz önerilir. Örnek dizini oluşturmak için aşağıdaki komutu girin:

Sitenin günlük (log) dosyalarını tutacak ek bir klasör oluşturmak için aşağıdaki komutu girin:

Web sitesi dizinleriniz hazır olduğunda, aşağıdaki komutu kullanarak $USER çevre değişkeni ile dizinin sahipliğini atayın:

Web kök dizininizin varsayılan izinlere sahip olduğundan emin olmak için aşağıdaki komutu çalıştırın:

Şimdi, index.html sayfasını, nano kullanarak example dizini içinde oluşturmak için aşağıdaki komutu girin:

Nano düzenleyicide aşağıdaki HTML kod parçacığını ekleyin:

İşlem tamamlandığında, Ctrl O tuşlarına basıp ENTER tuşuna basın. Artık Ctrl X tuşlarına basarak düzenleyiciyi kapatabilirsiniz.

Şu ana kadar, sanal ana bilgisayarı test etmek için site dizininiz ve temel web sayfanız hazır. Sırada, sanal ana bilgisayar yapılandırma dosyalarını oluşturmak var. Sanal ana bilgisayar dosyaları, tek bir Apache sunucusunda barındırmak istediğiniz çeşitli sitelerin yapılandırmalarını belirtir. Belirlenen alan adı isteklerini ilgili özel dizine yönlendirirler. 

Sanal ana bilgisayar dosyaları /etc/httpd/sites-available dizininde saklanır. Etkinleştirilen sanal ana bilgisayar dosyaları, /etc/httpd/sites-available dizininden /etc/httpd/sites-enabled dizinine sembolik olarak bağlanır (symlink). Bu iki dizin CentOS'ta varsayılan olarak oluşturulmaz, bu nedenle bunları kendiniz oluşturmanız gerekir. Dizinleri oluşturmak için aşağıdaki komutu girin:

Dizinler oluşturulduktan sonra, Apache'ye sites-enabled dizinindeki sanal ana bilgisayarları araması talimatını verin. Bunu Apache'nin ana yapılandırma dosyasını değiştirerek yapacaksınız. Dosyayı nano düzenleyicide açmak için aşağıdaki komutu girin:

Apache'ye isteğe bağlı bir dizindeki ek yapılandırma dosyalarını aramasını söyleyecek bir satır eklemek istiyoruz. Dosyanın en altına gidin ve sonuna aşağıdaki satırı ekleyin:

Dosyayı kaydetmek için Ctrl O tuşlarına basın ve ENTER tuşuna basın. Artık Ctrl X tuşlarına basarak düzenleyiciyi kapatabilirsiniz. Bir sonraki adım, sites-available dizini içinde sanal ana bilgisayar dosyasını oluşturmaktır. Yeni dosyayı oluşturmak ve nano düzenleyiciyle açmak için aşağıdaki komutu girin:

Açılan dosyaya aşağıdaki yapılandırma bloğunu ekleyin. example.com adresini kendi gerçek alan adınızla değiştirmeyi unutmayın ve eğer /var/www/example içinde farklı bir dizin adı kullandıysanız, bunu da uygun şekilde güncelleyin: 

Gördüğünüz gibi, alan adını ve bu alan adı için sunulacak dosyaların bulunacağı belge kök dizinini (document root) belirttik. Ayrıca hata günlüğü (error log) konumunu da belirttik – bu, sunucu sorunlarını giderirken size yardımcı olacaktır. 

Sanal ana bilgisayar dosyamız sites-available dizini içinde yer aldıktan sonra, bir sonraki adım sites-enabled dizinine sembolik bir bağlantı oluşturarak dosyayı etkinleştirmektir. Sembolik bağlantıyı oluşturmak için aşağıdaki komutu girin: 

Buraya kadar olan adımları takip ettiyseniz, sanal ana makineniz artık web sitenizin içeriğini sunmaya hazır olmalıdır. Ancak, sanal ana makineler çalışmaya başlamadan önce yapılandırmanız gereken bir kontrol daha var. Bir sonraki bölümde bunu ele alacağız. 

Adım 5: Sanal Ana Makinelere İzin Vermek İçin SELinux İzinlerini Ayarlama

Aralarında Fedora, RHEL ve CentOS'un da bulunduğu Linux dağıtımları varsayılan olarak SELinux ile birlikte gelir. SELinux (Security Enhanced Linux), bir sunucunun istekleri nasıl işlemesi gerektiğini ve kullanıcıların soketler, ağ bağlantı noktaları ve temel dizinlerle nasıl etkileşime girmesi gerektiğini kısıtlayan ve tanımlayan, Linux sistemlerine yönelik bir güvenlik mimarisidir. 

Kutudan çıktığı haliyle SELinux, varsayılan Apache yapılandırmasıyla çalışacaktır. Ancak, özel bir günlük (log) dizini de dahil olmak üzere oluşturduğunuz özel sanal ana makine ile Apache hizmetini yeniden başlatmayı denediğinizde bir hizmet hatası alınacaktır. Çözüm, Apache hizmetinin gerekli dosyalara yazmasına izin vermek için SELinux politikalarını değiştirmektir. 

SELinux, CentOS'u son derece güvenli bir sunucu haline getirir. Bu nedenle, tamamen devre dışı bırakmanızı önermiyoruz. SELinux'un güvenlik seviyenizi çeşitli şekillerde özelleştirmenize izin verdiği göz önüne alındığında, politikaları yalnızca ortamınızın ihtiyaçlarına göre güncellemeniz veya belirlemeniz önerilir.

Apache politikalarını güncellemek için iki seçeneğiniz vardır: ya Evrensel Olarak ya da Belirli Dizine Göre. Belirli bir dizine özel politikaları güncellemek daha güvenlidir.  Bu nedenle önerilen seçenek budur. 

  • Apache Politikalarını Evrensel Olarak Güncelleme

Apache politikasını evrensel olarak değiştirebilirsiniz; bu, httpd_unified Boolean değerini kullanarak SELinux'a tüm Apache işlemlerine aynı şekilde davranması talimatını verecektir. Apache politikalarını evrensel olarak değiştirmenin, her dizini belirli bir şekilde yapmakla aynı düzeyde kontrol sağlamayacağını unutmayın. Ancak bakım söz konusu olduğunda daha pratiktir. Apache politikalarını evrensel olarak güncellemek için aşağıdaki komutu çalıştırın: 

Bu komuttaki değerlerin ne işe yaradığını tanımlayalım:

  • setsebool – SELinux boolean değerlerini günceller. 
  • -P etiketi  – önyükleme zamanı değerini günceller, böylece bu değişiklik yeniden başlatmalar arasında kalıcı olur. 
  • httpd_unified  – SELinux'a tüm Apache işlemlerini aynı türde ele alması talimatını verecek boolean değeridir. 1 değerinin kullanılması bunu etkinleştirir. 
  • Bir Dizin Üzerinde Apache Politikalarını Ayarlama

Dizinler üzerinde daha fazla kontrol istiyorsanız, Apache politikalarını dizin başına ayarlamak doğru yoldur. Ancak bu, daha fazla bakım gerektirme yükünü de beraberinde getirir. Bunun nedeni politikanın genel (global) olmamasıdır. Dolayısıyla, sanal ana makine conf dosyalarınızda belirttiğiniz yeni günlük dizinleri için bağlam türünü manuel olarak ayarlamanız gerekecektir. 

Politikayı güncellemeden önce, aşağıdaki komutu kullanarak SELinux'un /var/www/example/log dizinine atadığı bağlam türünü kontrol edin:

Komut, temel olarak dizinin SELinux bağlamı olan aşağıdaki gibi bir çıktı verecektir:

httpd_sys_content_t, Apache işleminin yalnızca bu dizinde oluşturulan dosyaları okumasına izin verildiğini SELinux'a bildiren geçerli bağlamdır. Sanal ana makine yapılandırmalarımızdan, Apache'nin /var/www/example/log dizinindeki günlük dosyalarına yazmasını istediğimiz için, Apache'nin web uygulaması günlük dosyalarını oluşturmasına ve bunlara ekleme yapmasına izin vermek üzere bu politikayı değiştireceğiz. Buna izin veren bağlam httpd_log_t bağlamıdır. Bağlamı güncellemek için gereken komut şudur:

Yukarıdaki komuttan kaynaklanan değişiklikleri uygulamak ve bunların önyüklemeler arasında kalıcı olmasını sağlamak için aşağıdaki komutu çalıştırın:

Komutun ne işe yaradığını tanımlayalım:

  • restorecon – değişiklikleri uygular ve yeniden başlatmalar arasında kalıcı olmalarını sağlar.
  • -R bayrağı – komutu özyinelemeli olarak çalıştırır ve mevcut tüm dosyaları yeni bağlamı kullanacak şekilde günceller.
  • -v bayrağı – komut çalıştıktan sonra bağlam değişikliklerini yazdırır. Şuna benzer bir çıktı verecektir:
Bağlam değişikliklerini görüntülemek için aşağıdaki komutu tekrar çalıştırabilirsiniz:
Çıktıda güncellenmiş bağlam türünü görmelisiniz:
Apache'in günlük dizinine yazmasına izin verecek şekilde SELinux dizin politikaları güncellendiğine göre, artık sanal konağı test edebiliriz. 

Adım 6: Sanal Konak Yapılandırmasını Test Etme

Sanal konağı test edebilmemiz için Apache hizmetlerini yeniden başlatmanız gerekecektir. Bunun için gereken komut şudur:

Ardından, aşağıdaki komutu kullanarak günlük dizininin içeriğini listeleyin:

Apache'in günlük dosyalarını oluşturduğunu gösteren, şuna benzer bir çıktı görüntülenmelidir: 

list log files web server

Bu noktaya kadar olan adımları takip ettiyseniz, sanal konak dosyanızda tanımlanan alan adınızı ziyaret ettiğinizde Apache artık örnek HTML sayfasını sunabiliyor olmalıdır. Dilerseniz, ek alan adları kurmak ve bunların SELinux izinlerini uygun şekilde güncellemek için 4. ve 5. adımları tekrarlayabilirsiniz.

Sonuç

Bu öğreticide Apache'i kurduk, Apache'in özel günlük dosyalarına yazmasına izin vermek için SELinux politikalarını nasıl güncelleyeceğimizi öğrendik ve son olarak yapılandırmamızın doğru çalıştığını onaylamak için test ettik. Bu temel bilgileri kullanarak, bunun üzerine yeni şeyler inşa edebilir ve daha zengin deneyimlere sahip daha iyi uygulamalar sunabilirsiniz. 

Eksiksiz bir web yığınını keşfetmek isterseniz, şu konudaki öğreticimize göz atın: CentOS 7 üzerinde LAMP yığınının nasıl kurulacağı

Keyifli Çalışmalar!

author

Akshay Nagpal

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.