Giriş
Apache HTTP Sunucusu, açık kaynaklı bir web sunucusudur ve geliştiricisi Apache Software Foundation'dır. Yerel sunucunuzu Firefox veya Google Chrome gibi web sitesi sunucularına bağlayan bir yazılımdır. Bu bağlantı, dosya ve veri gönderip almak için kullanılır.
Dünya genelindeki en popüler sunucudur. İnternetteki tüm web sitelerinin %40'ından fazlası Apache HTTP tarafından desteklenmektedir. Popülerliğinin arkasındaki nedenler yüksek özelleştirilebilirliği, harika entegrasyon kapasitesi ve güvenilir medya desteğidir. Apache, modül tabanlı bir mimari üzerinde çalışır. Çeşitli işlevleri eklemek ve kaldırmak için bağımsız modülleri değiştirebilirsiniz. Bu eğitimde, Ubuntu 18.04 üzerinde Apache sunucusunu nasıl kuracağınız konusunda size rehberlik edeceğiz.
Kurulumdan Önce
Apache kurulumuna başlamadan önce bazı ön koşulları yerine getirmeniz gerekir. Başlamak için, yerel sunucuda sudo yetkilerine sahip, root olmayan bir kullanıcıyı zaten yapılandırdığınızdan emin olun. İhtiyacınız olacak diğer şey ise bir güvenlik duvarıdır. Temel güvenlik duvarınızı etkinleştirmeli ve gereksiz bağlantı noktalarını engellemelisiniz. Kuruluma başlamadan önce, yetkilere sahip root olmayan kullanıcınızla oturum açın. Sunucunuzu, şu Ubuntu sunucusu kurulumu eğitimimizi.
Ubuntu 18.04'te Apache Web Sunucusu Nasıl Kurulur
Ön koşulları yerine getirdiyseniz, asıl kuruluma geçebilirsiniz. Apache web sunucusunu 6 basit adımda kurabilir ve keşfedebilirsiniz:
1. Adım: Apache'yi Kurun
Apache'nin zaten Ubuntu'nun bir parçası olduğunu bilmek sizi memnun edecektir. Bu, tipik paket yönetim araçlarını kullanarak sunucunuza Apache kurabileceğiniz anlamına gelir. Depoda varsayılan bir yazılım olarak mevcuttur. İlk olarak, yerel paket dizinini güncellemeniz gerekecektir:
|
1 |
sudo apt update |
Bu komut, en son upstream değişikliklerinin paket dizininde görünmesini sağlar. Ardından, apache2 paketini kurmak için komut istemini vermemiz gerekir:
|
1 |
sudo apt install apache2 |
2. Adım: Güvenlik Duvarı Ayarlarınızı Değiştirin
Ön koşulları yerine getirirken UFW güvenlik duvarınızı kurmuş olmalısınız. Talimatları izlediyseniz, güvenlik duvarınız sunucuya erişiminizi engelliyor olacaktır. Apache'yi çalıştırmadan önce varsayılan web bağlantı noktalarına sunucu erişimi vermemiz gerekir. Sonuç olarak, güvenlik duvarı ayarları değiştirilmelidir.
Kurulum sırasında Apache, UFW'ye kaydolur. Bu kaydın sonucu olarak bazı uygulama profilleri oluşturulur. Ayrıca, Apache'ye güvenlik duvarı erişimini etkinleştirmek veya devre dışı bırakmak için bu profilleri kullanabilirsiniz. Ardından, aşağıdaki komutla bu ufw uygulamalarını görüntüleyin:
|
1 |
sudo ufw app list |
Uygulama profilinizi buna benzer bir listede göreceksiniz:

Yukarıdaki liste; Apache, Apache Full ve Apache Secure olmak üzere üç uygulama profilinin oluşturulduğunu göstermektedir. İşte bu profillerin her biri hakkında bazı yararlı ayrıntılar:
-
Apache:
Apache profili yalnızca port 80'i açabilir. Bu port, normal ve şifrelenmemiş web trafiğine izin verir.
-
Apache Full:
Apache Full profili hem port 80'i hem de 443'ü açma kapasitesine sahiptir. Port 80 normal, şifrelenmemiş web trafiğine izin verirken, port 443 TLS/SSL şifreli trafiği karşılar.
-
Apache Secure:
Son olarak, Apache Secure yalnızca port 443'ü açar. Yukarıda belirtildiği gibi, TLS veya SSL şifreli web trafiğinin içeri girmesinden sorumludur.
Bu profiller arasında seçim yaparken, yapılandırdığınız trafiği düşünün. En kısıtlayıcı profili seçerken istediğiniz trafiğin geçtiğinden emin olmak istersiniz. SSL yapılandırması şu anda kapsamımızın dışındadır. Bu nedenle, şimdilik port 80 üzerinden gelen trafiğe odaklanacağız. Bu, bu senaryoda 'Apache' uygulama profilini etkinleştirdiğimiz anlamına gelir. Bunu şu şekilde yapabilirsiniz:
|
1 |
sudo ufw allow ‘Apache’ |
Değişikliği doğrulamak için aşağıdakini yazın:
|
1 |
sudo ufw status |
Bu komut, şu anda geçişine izin verilen HTTP trafiğini içeren bir Çıktı görüntüleyecektir. Şuna benzer bir şey göreceksiniz:

Trafik akışı, istenen Apache profilinin etkinleştirildiğini gösteriyor. Güvenlik duvarı üzerinden web sunucusuna erişim izni verildi.
Adım 3: Web Sunucunuzu Kontrol Edin
Apache kurulumu tamamlandı ve güvenlik duvarı ayarları değiştirildi. Bu işlemin sonunda Ubuntu 18.04, Apache'yi otomatik olarak başlatacaktır. Ardından, servisin herhangi bir anda çalışıp çalışmadığını systemd init sistemi ile kontrol etmeniz gerekir. Init sistemleri hakkında daha fazla bilgi edinmek isterseniz, Systemctl ile Systemd servislerini ve birimlerini yönetme hakkındaki kılavuzumuza göz atabilirsiniz. Servisin çalışıp çalışmadığını kontrol etmek için şunu yazın:
|
1 |
sudo systemctl status apache2 |
Çıktı aşağıdaki gibi olacaktır:

Yukarıda servisin Active veya running (etkin veya çalışıyor) durumunu aramanız gerekir. Bu, servisin başarıyla başlatıldığını ve çalıştığını gösterir. Servisin çalışmasını test etmenin daha çok tercih edilen başka bir yolu daha vardır. Apache'den bir sayfa talep ederek durumunu kontrol edebilirsiniz. Sunucunuzun IP adresini kullanarak, yazılımın varsayılan Apache açılış sayfasında çalışıp çalışmadığını onaylayabilirsiniz. Sunucunuzun IP adresini henüz bilmiyorsanız, öğrenmek için kullanabileceğiniz komut şudur:
|
1 |
hostname -I |
Bu komut, boşluklarla ayrılmış bir dizi IP adresi içeren bir sonuç gösterecektir. Tarayıcıda her birini tek tek test edin. Erişmenin başka bir yolu da genel (public) IP adresinizi almaktır. Şunun gibi bir komut kullanabilirsiniz:
|
1 |
curl -4 icanhazip.com |
Bu, web üzerindeki diğer konumlardan görüldüğü şekliyle IP adresinizi gösterecektir. Ardından, IP adresinizi aldıktan sonra web tarayıcınıza gidin. Adres çubuğuna aşağıdakini yazın ve çalıştırın:
|
1 |
http://your_server_ip |
Bu, varsayılan Ubuntu 18.04 Apache web sayfasını açacaktır. Şöyle görünür:

Bu sayfa, dosyalarınız ve dizinleriniz hakkında bazı temel bilgiler içerir. Adres yazıldığında açıldığı için Apache'nin düzgün çalıştığını gösterir.
Adım 4: Apache'de Temel Yönetim
Doğrulama, Apache'nin çalıştığını ve sunucunuzun faal olduğunu onaylar. Şimdi, yönetim için sunucuda kullanabileceğiniz bazı temel komutları inceleyeceğiz.
Apache'nizin varsayılan yapılandırması, sunucu her önyüklendiğinde onu başlatır. Bu ayarı devre dışı bırakma seçeneğiniz vardır. Şunu yazın:
|
1 |
sudo systemctl disable apache2 |
Bu varsayılan özelliği yeniden etkinleştirmek için şu komutu kullanın:
|
1 |
sudo systemctl enable apache2 |
Ardından, sunucuyu manuel olarak durdurmak istiyorsanız aşağıdakini yazın:
|
1 |
sudo systemctl stop apache2 |
Durdurduktan sonra tekrar başlatmak isterseniz şu komutu kullanın:
|
1 |
sudo systemctl start apache2 |
Sunucuyu durdurup başlatmak, yani esasen yenilemek için şunu yazın:
|
1 |
sudo systemctl restart apache2 |
Sunucuyu durdurduğunuzda, tüm bağlantılarını kaybetme eğilimindedir. Yeniden başlatmak, bu bağlantıları tekrar bulup bağlaması anlamına gelir. İsterseniz, bağlantıyı kaybetmeden Apache'yi yeniden de yükleyebilirsiniz (reload). Bu, özellikle yapılandırma değişiklikleri yaparken kullanışlıdır. Bağlantıları kesmeden yeniden yüklemek için aşağıdakini yazın:
|
1 |
sudo systemctl reload apache2 |
Adım 5: Sanal Konak (Virtual Host) Kurulumu
Bu zorunlu olmasa da, sanal konaklarınızı (virtual hosts) kurmanız şiddetle tavsiye edilir. Sanal konaklar, sunucuda yapılandırma ayrıntıları gruplarını içeren küçük bloklardır. Sunucunuzdaki tek bir sanal konak üzerinde birden fazla alan adını barındırabilirsiniz.
Varsayılan olarak, Ubuntu 18.04 üzerinde Apache kullanıyorsanız, /var/www/html dizinindeki belgelere hizmet veren bir adet etkinleştirilmiş sunucu bloğu bulunacaktır. Yalnızca tek bir site yerine birden fazla site barındırıyorsanız bu ayarı değiştirmek isteyeceksinizdir. Ancak, daha da iyi çalışan başka bir seçenek daha vardır. /var/www/html dizinine hiç dokunmayın. Bunun yerine, istediğiniz alan adındaki siteler için bir dizin yapısı oluşturmak üzere /var/www/ dizinine gidin. Bunu yaparsanız, /var/www/html dizini varsayılan dizin olarak yapılandırılır. Bir istemci isteğinin alan adınızdaki sitelerden hiçbiriyle eşleşmemesi durumunda, istekler buradan sunulacaktır.
Bundan sonra, yeni bir alan adını ve bununla ilişkili dizini nasıl oluşturabileceğinizi göreceğiz. Bu örnek için varsayılan bir isim olan your_domain adını kullanacağız. Sonraki talimatlarda geçen your_domain ifadesini kendi alan adınızla değiştirin. Başlamak için, your_domain için nasıl yeni bir dizin oluşturabileceğinize bakalım:
|
1 |
sudo mkdir /var/www/your_domain |
Şimdi, dizinin sahipliğini atamanız gerekiyor. Bu amaçla $USER ortam değişkenini kullanabilirsiniz:
|
1 |
sudo chown -R $USER:$USER /var/www/your_domain |
Devam etmek için web kök izinlerinizin doğru olması gerekir. Yapılandırmadaki umask değerine dokunmadıysanız, izinleriniz sorunsuz olmalıdır. Ama emin değilseniz, her zaman şununla onaylayabilirsiniz:
|
1 |
sudo chmod -R 755 /var/www/your_domain |
Sırada bir index.html sayfası oluşturacağız. Tercih ediyorsanız bizim gibi nano'yu veya başka bir düzenleyiciyi kullanabilirsiniz:
|
1 |
nano /var/www/your_domain/index.html |
Bu örnek HTML'yi index içine ekleyin, ardından Kaydedip Kapatın:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Hoş geldiniz to Your_domain!</title> </head> <body> <h1>Başarılı! The your_domain sanal ana makinesi is çalışıyor!</h1> </body> </html> |
Bir sonraki adım, bir sanal ana makine dosyası oluşturmaktır. Apache'nin yukarıdaki örnek içeriği sunmasını sağlamak için tüm doğru yönergeleri içeren bir sanal ana makine dosyası gereklidir. Varsayılan yapılandırma dosyası şu konumda bulunacaktır: /etc/apache2/sites-available/000-default.conf. Bu dosyayı değiştirmek yerine, şu konumda yeni bir dosya oluşturacağız: /etc/apache2/sites-available/your_domain.conf.
|
1 |
sudo nano /etc/apache2/sites-available/your_domain.conf |
Daha önce olduğu gibi, yapılandırma için bir örnek ekleyeceğiz. Ancak bu sefer, bunu alan adına ve az önce oluşturduğumuz yeni dizine göre güncelleyeceğiz. Bu bloğu ekleyin, ardından Kaydedip Kapatın:
|
1 2 3 4 5 6 7 8 |
<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Yukarıda görebileceğiniz gibi, ServerAdmin e-postamızı da güncelledik. Bu, your_domain site yöneticisinin ulaşabileceği bir adrestir. Sadece bununla kalmayıp, DocumentRoot'u da yeni dizine güncelledik ve iki yeni yönerge ekledik. Bu yönergeler ServerName ve ServerAlias'ı içerir. ServerName, temel alan adını ayarlamak için kullanılır. Sanal ana makineyi tanımlamak için temel alan adının eşleşmesi gerekir. Diğer taraftan ServerAlias, temel ada benzer şekilde eşleşmesi gereken diğer adları sağlar. Dosyayı a2ensite aracını kullanarak kolayca etkinleştirebilirsiniz:
|
1 |
sudo a2ensite your_domain.conf |
000-default.conf dosyasında belirtilen varsayılan siteyi devre dışı bırakmak için şu komutu kullanın:
|
1 |
sudo a2dissite 000-default.conf |
Yapılandırma hazır olduğuna göre, şu komutu yazarak hata kontrolü yapabilirsiniz:
|
1 |
sudo apache2ctl configtest |
Herhangi bir yapılandırma hatası yoksa bu, aşağıdaki çıktıyı gösterecektir:
|
1 2 3 |
Output Syntax OK |
Değişiklikleri uygulamak için Apache sunucusunu daha önce belirtildiği gibi yeniden başlatmalısınız:
|
1 |
sudo systemctl restart apache2 |
İşte bu kadar! Sanal ana makinenizi kurdunuz ve alan adınızı ayarladınız. Apache'nin gerçekten your_domain adresine hizmet verip vermediğini kontrol etmek için http://your_domain adresine gidin.
Adım 6: Dosya ve Dizinlere Göz Atma
Apache sunucunuzun bazı temel yapılandırmalarını başarıyla gerçekleştirdiniz. Ayrıca, Apache hizmetinizi nasıl yöneteceğinizi de biliyorsunuz. Sırada, en kritik dizin ve dosyalardan bazılarını incelemek için biraz zaman ayırabilirsiniz.
İçerik
- /var/www/html
Bu dizinden daha önce de bahsetmiştik. Varsayılan Apache sayfasını içerir. İsterseniz bu sayfanın içeriğini değiştirebilirsiniz. Bunu yapmak için Apache yapılandırma dosyalarını değiştirmeniz gerekecektir.
Sunucu Yapılandırması
- /etc/apache2
Bu, ana Apache yapılandırma dizinidir. Yani bu dizin, Apache ile ilişkili tüm yapılandırma dosyalarından oluşur.
- /etc/apache2/apache2.conf
Dizinin sonundaki eklemeden de anlaşılacağı gibi, bu ana yapılandırma dosyasıdır. Bu dosya, dizindeki diğer birkaç dosyayı yükler ve Apache yapılandırmasında değişiklik yapmak için kullanılabilir. Apache sunucusunun yapılandırmasında herhangi bir değişiklik yapmak istiyorsanız, değişiklikleri yapacağınız yer burasıdır.
- /etc/apache2/ports.conf
Adından da anlaşılacağı gibi, bu dosya daha önce tartıştığımız portlarla ilgilidir. Port 80 varsayılan olarak etkindir ve SSL içeren modüller tanıtıldığında port 443 etkinleştirilir. Bu dosya, hangi portların açık ve etkin olduğuna dair ayrıntıları içerir.
- /etc/apache2/sites-available/
Sanal ana makinelerinizin gideceği yer burasıdır. Yapılacak her türlü sunucu bloğu yapılandırması bu dizinde gerçekleştirilir. Sunucu bloklarını etkinleştirmek için, bunların a2ensite aracılığıyla diğer dizinlere bağlanması gerekir. Apache, bu dizindeki dosyalara yalnızca sites-enabled dizinine bağlanarak etkinleştirilmişlerse erişebilir.
- /etc/apache2/sites-enabled/
Bu, etkinleştirilmiş sanal ana makinelerin bulunduğu dizindir. Bahsettiğimiz gibi, sites-available dizinindeki dosyaları a2ensite komutuyla bağladığınızda ana makineler etkinleştirilir. Bu dizindeki dosyalar, Apache başladığında, yeniden yüklendiğinde veya bir yapılandırmayı derlediğinde önemlidir.
- /etc/apache2/conf-available/, /etc/apache2/conf-enabled/
Bu dizinler, sites-available ve sites-enabled dizinlerine benzer şekilde çalışır. conf-available dizinindeki dosyaları etkinleştirmek için a2enconf komutunu kullanmalısınız. Devre dışı bırakma komutu ise a2disconf'tur. Bu dizinler, site başına sanal ana makineleri depolamak yerine, sanal ana makineyle ilgili olmayan yapılandırma ayrıntılarını içerir:
- /etc/apache2/mods-available/, /etc/apache2/mods-enabled/
Bu dizinler de yukarıdaki iki örneğe benzer bir ilişkiye sahiptir. Mevcut olan ve a2enmod komutuyla etkinleştirilen modülleri içerirler. Bir modülü devre dışı bırakmak için a2dismod komutunu kullanabilirsiniz. .load uzantılı dosyalar, belirli bir modülü yükleyebilen parçalar içerir. .conf uzantılı dosyalar ise ilgili modül için geçerli yapılandırma ayrıntılarını barındırır.
Sunucu Günlükleri
- /var/log/apache2/access.log
Bu günlük dosyası, sunucunuza yapılan tüm istekleri içerir. Bu varsayılan olarak gerçekleşir. Apache'yi istekleri farklı şekilde kaydedecek şekilde yapılandırma seçeneğiniz vardır.
- /var/log/apache2/error.log
Bu, hata günlüğüdür. Yaptığınız tüm hatalar varsayılan olarak doğrudan bu dosyaya gider. Hata günlüklerinin hangi ayrıntıyla kaydedildiğini LogLevel yönergesi aracılığıyla görebilirsiniz.
Sonuç
Son olarak, yukarıdaki adımları takip ederek Apache web sunucusunu Ubuntu 18.04'ünüze kolayca kurabilirsiniz. Sunucuyu sisteminize kurduktan sonra, platformda sahip olduğunuz çeşitli seçenekleri keşfedebilirsiniz. Farklı türde içerikler üretmek için farklı teknolojiler kullanabilirsiniz. Bu sayede sunucuda kendiniz için benzersiz ve kolaylaştırıcı bir deneyim geliştirebilirsiniz.
Ayrıca, Apache sunucunuzu Let’s Encrypt ile nasıl güvenli hale getireceğinizi adım adım eğitimimizi takip ederek öğrenebilirsiniz. CentOS 7 üzerinde Apache kurmayı öğrenmek istiyorsanız, CentOS 7 üzerinde Linux, Apache, MySQL, PHP (LAMP) yığınını kurma eğitimimizi takip edin..
Keyifli kodlamalar!
Yorumlar
Henüz yorum yapılmamış. İlk siz olun.