Linux ­Kurulu­m ve Y­onetim­i
  • Döküman Hakkında
  • Linux ve GNU'nun Geçmişi
    • CentOS, Debian ve FreeBSD Ana Sürümlerin Farkları
  • Temel Komutlar
    • Temel Terminal Komutları
    • Yardım Dosyaları
    • Dosya İzinleri, Yetkiler, Kullanıcılar ve Gruplar
    • Dosya Düzenleme Araçları
      • nano ve pico
      • vi
    • Sıkıştırılmış Dosyalar
  • Standart Girdi ve Çıktı
    • Standart Çıktı
    • Standart Girdi
    • UNIX Pipeline
    • Olmazsa Olmaz: stdio.h
    • Standart Hata ve File Descriptor
    • Forkbomb
    • Named Pipe
  • Gelişmiş Terminal Komutları
    • Tarih ve Saat Ayarlama
    • Sistem Yükünü İzleme
    • patch ve diff
    • xargs
    • awk ve sed
    • egrep ve Regular Expressions
    • rename
    • Imagemagick ve Görüntü Dosyaları
    • wget
    • Python ile Dosya Sunuculuğu
  • Temel Dağıtımlar
    • RHEL Tabanlı (CentOS, Rocky, Alma)
      • rpm Paketleri
      • DNF Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • Debian
      • deb Paketleri
      • apt Paket Yöneticisi
      • Repo Ayarları
      • Network Ayarları
    • FreeBSD
      • Ports ve pkg Yönetimi
      • Güncelleme Teknikleri
      • Network Ayarları
    • Arch Linux
      • pacman ve AUR
      • Network Ayarları
    • Ortak Network Dosyaları
  • SSH
    • Uzak Sunucuya Bağlanma
    • sshd Sunucu Ayarları
    • Private ve Public Anahtarlar
    • Güvenli Dosya Aktarımı
    • sshfs
  • Kernel Boot
    • Sunucu Başlangıcına Genel Bakış
    • Çekirdeğin Yüklenmesi ve Boot Seçenekleri
    • Çekirdek Parametreleri
    • Bootloader Nedir?
  • User Space
    • Başlangıç: Init
    • Init Versiyonunu Belirlemek
    • System V
      • Servislerin Yönetimi
      • Çalışma Seviyeleri (Run Levels)
      • Örnek System V Servis Oluşturma
    • systemd
      • Servislerin Yönetimi
      • Birimler ve Birim Tipleri
      • Örnek systemd Servis Oluşturma
    • Acil Durumlar ve Tek Kullanıcı Modu
  • BASH Programlama
    • Döngüler ve Diğer Kontrol Yöntemleri
    • Menüler
  • Log Dosyaları
    • Log İnceleme ve Filtreleme
  • İnternet Servisleri
    • Bir sayfanın İnternetteki Serüveni
    • Nameserver Servisleri
    • Apache
    • PHP-FPM
    • FTP/FTPS/SFTP
      • vsftpd
      • ProFTPD
      • SFTP
      • Komut Satırından ftp Kullanımı
  • Zamanlanmış Görevler
    • crontab
    • at
  • Veritabanı
    • MySQL
      • MySQL Kurulumu
      • MySQL Servisini Çalıştırmak
      • Veritabanı ve Tablo oluşturmak
      • SQL Tablosuna Veri Eklemek
      • Temel SQL Sorgularına Giriş
        • Birinci bölüm
      • mysqldump ile yedekleme
      • Replikasyon teknikleri
      • Yedekleri içeri alma
    • PostgreSQL
      • PostgreSQL Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • MongoDB
      • MongoDB Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
    • Redis
      • Redis Kurulumu
      • Temel Yapılandırma
      • Temel Kullanım
  • Temel Network Yapılandırması
  • Gelişmiş Network Komutları
    • ip
    • ifconfig
    • route
    • ping
    • traceroute
    • dig
    • nslookup
    • netcat
    • nmap
    • tcpdump
    • Wireshark (Giriş)
    • Bantgenişliği Ölçümü
  • Güvenlik
    • Firewalld
    • IPTables
      • Temel İzinler
      • IP ve Port Engelleme
    • selinux
  • Disk Sistemleri
    • ext
    • zfs
    • lvm
  • RAID
    • RAID Biçimleri
    • Verinin Disklere Yayılması
    • Cache
    • Terimler ve Tavsiyeler
  • Örnek Kurulumlar ve Modern Yaklaşımlar
    • CentOS 7 Tam Sistem Kurulumu (Arşiv)
    • AlmaLinux ile Hosting Ortamı Kurulumu
    • Ubuntu ile Hosting Ortamı Kurulumu
    • Modern Hosting Yaklaşımları (PaaS, Coolify vb.)
  • Konteynerleştirme (Docker / Podman)
  • Yapılandırma Yönetimi (Ansible)
  • İzleme ve Uyarı (Prometheus / Grafana)
  • Nginx Web Sunucusu
  • Kubernetes (Giriş)
  • PCI-DSS ve Linux Sistemleri
  • İndeks
  • Kaynaklar
Powered by GitBook
On this page
  • Temel Özellikler
  • Kurulum (Paket Yöneticisi ile - Önerilen)
  • Servis Yönetimi (systemctl)
  • Yapılandırma Dosyaları ve Yapısı
  • Temel Sanal Ana Bilgisayar (Virtual Host) Yapılandırması (Apache 2.4+)
  • Sunucu Durumu ve Bilgisi (mod_status, mod_info)
  • HTTPS/TLS (SSL)
  1. İnternet Servisleri

Apache

Apache HTTP Sunucusu (genellikle kısaca "Apache" veya RHEL tabanlı sistemlerde "httpd" olarak anılır), dünyanın en yaygın kullanılan açık kaynaklı web sunucusu yazılımlarından biridir. Apache Software Foundation tarafından geliştirilir ve Apache Lisansı altında dağıtılır. HTTP ve HTTPS protokolleri üzerinden web içeriği sunmak için kullanılır.

Temel Özellikler

  • Modüler Yapı: Apache'nin işlevselliği, dinamik olarak yüklenebilen modüller aracılığıyla genişletilebilir (örn. SSL/TLS, URL yeniden yazma, proxy, kimlik doğrulama modülleri).

  • Esnek Yapılandırma: Direktif tabanlı yapılandırma dosyaları (httpd.conf, .htaccess) ile detaylı kontrol imkanı sunar.

  • Sanal Ana Bilgisayarlar (Virtual Hosts): Tek bir sunucu üzerinde birden fazla web sitesini barındırmaya olanak tanır.

  • Platform Bağımsızlığı: Çeşitli Unix benzeri sistemlerde (Linux, BSD) ve Windows üzerinde çalışabilir.

  • Geniş Topluluk Desteği: Yaygın kullanımı sayesinde geniş bir kullanıcı topluluğuna ve bol miktarda belgeye sahiptir.

Kurulum (Paket Yöneticisi ile - Önerilen)

Apache'yi kaynak koddan derlemek yerine, dağıtımınızın paket yöneticisini kullanmak şiddetle tavsiye edilir. Bu, kurulumu basitleştirir, güncellemeleri kolaylaştırır ve sistemle uyumluluğu sağlar.

  • RHEL Tabanlı (CentOS Stream, Rocky, AlmaLinux, Fedora): Paket adı genellikle httpd'dir. SSL modülü (mod_ssl) ayrı kurulabilir.

    sudo dnf install httpd mod_ssl -y
  • Debian Tabanlı (Debian, Ubuntu, Mint): Paket adı genellikle apache2'dir. SSL modülü genellikle varsayılan olarak gelir veya a2enmod ssl ile etkinleştirilir.

    sudo apt update
    sudo apt install apache2 -y

Servis Yönetimi (systemctl)

Apache servisi systemd ile yönetilir. Servis adı dağıtıma göre değişir:

  • RHEL Tabanlı: httpd.service

  • Debian Tabanlı: apache2.service

# Servisi başlatma
sudo systemctl start httpd # veya apache2

# Servisi durdurma
sudo systemctl stop httpd # veya apache2

# Servisi yeniden başlatma
sudo systemctl restart httpd # veya apache2

# Yapılandırmayı yeniden yükleme (daha hızlı)
sudo systemctl reload httpd # veya apache2

# Servisin durumunu kontrol etme
sudo systemctl status httpd # veya apache2

# Sistem başlangıcında otomatik çalışmasını sağlama
sudo systemctl enable httpd # veya apache2

# Sistem başlangıcında otomatik çalışmasını engelleme
sudo systemctl disable httpd # veya apache2

Yapılandırma Dosyaları ve Yapısı

Apache'nin yapılandırma dosyalarının konumu ve organizasyonu dağıtım aileleri arasında farklılık gösterir:

1. RHEL Tabanlı Sistemler (/etc/httpd/)

  • Ana Yapılandırma: /etc/httpd/conf/httpd.conf

  • Modül Yapılandırmaları: /etc/httpd/conf.modules.d/

  • Ek Yapılandırmalar/Sanal Ana Bilgisayarlar: /etc/httpd/conf.d/

    • Genellikle sanal ana bilgisayar (Virtual Host) tanımları bu dizine .conf uzantılı dosyalar halinde eklenir (örn. /etc/httpd/conf.d/vhost-example.com.conf).

    • httpd.conf dosyasının sonunda genellikle IncludeOptional conf.d/*.conf satırı bulunur.

2. Debian Tabanlı Sistemler (/etc/apache2/)

  • Ana Yapılandırma: /etc/apache2/apache2.conf

  • Portlar: /etc/apache2/ports.conf

  • Modüller:

    • Mevcut Modüller: /etc/apache2/mods-available/

    • Etkin Modüller: /etc/apache2/mods-enabled/ (buradakiler mods-available'a sembolik linklerdir)

    • Etkinleştirme/Devre Dışı Bırakma: a2enmod <modül_adı>, a2dismod <modül_adı>

  • Site Yapılandırmaları (Sanal Ana Bilgisayarlar):

    • Mevcut Siteler: /etc/apache2/sites-available/ (örn. example.com.conf)

    • Etkin Siteler: /etc/apache2/sites-enabled/ (buradakiler sites-available'a sembolik linklerdir)

    • Etkinleştirme/Devre Dışı Bırakma: a2ensite <site_dosya_adı>, a2dissite <site_dosya_adı>

  • Ek Yapılandırma Parçaları:

    • Mevcut Yapılandırmalar: /etc/apache2/conf-available/

    • Etkin Yapılandırmalar: /etc/apache2/conf-enabled/

    • Etkinleştirme/Devre Dışı Bırakma: a2enconf <conf_dosya_adı>, a2disconf <conf_dosya_adı>

Debian tabanlı sistemlerdeki bu yapı, yapılandırmayı daha modüler hale getirir ve siteleri/modülleri kolayca etkinleştirip devre dışı bırakmayı sağlar.

Temel Sanal Ana Bilgisayar (Virtual Host) Yapılandırması (Apache 2.4+)

Aşağıda, example.com alan adı için basit bir sanal ana bilgisayar tanımı örneği verilmiştir (Apache 2.4 ve sonrası sözdizimi ile).

RHEL Tabanlı (/etc/httpd/conf.d/example.com.conf):

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com # İsteğe bağlı ek alan adları

    DocumentRoot /var/www/example.com/html # Web sitesi dosyalarının konumu

    ErrorLog /var/log/httpd/example.com-error.log
    CustomLog /var/log/httpd/example.com-access.log combined

    <Directory "/var/www/example.com/html">
        AllowOverride None # .htaccess kullanımını kontrol eder
        Require all granted # Apache 2.4+ erişim kontrolü
    </Directory>
</VirtualHost>

Debian Tabanlı (/etc/apache2/sites-available/example.com.conf):

<VirtualHost *:80>
    ServerAdmin webmaster@example.com
    ServerName example.com
    ServerAlias www.example.com

    DocumentRoot /var/www/example.com/html 

    ErrorLog ${APACHE_LOG_DIR}/example.com-error.log
    CustomLog ${APACHE_LOG_DIR}/example.com-access.log combined

    <Directory "/var/www/example.com/html">
        AllowOverride None
        Require all granted
    </Directory>
</VirtualHost>
  • <VirtualHost *:80>: Port 80'e gelen tüm IP adreslerindeki istekler için sanal ana bilgisayarı tanımlar. HTTPS için <VirtualHost *:443> kullanılır.

  • ServerName: Sanal ana bilgisayarın birincil alan adı.

  • ServerAlias: İsteğe bağlı ek alan adları.

  • DocumentRoot: Bu siteye ait web dosyalarının bulunduğu kök dizin.

  • ErrorLog, CustomLog: Bu siteye özel log dosyaları.

  • <Directory ...>: Belirtilen dizin için erişim izinleri ve seçenekleri tanımlar.

    • AllowOverride None: .htaccess dosyalarının direktifleri geçersiz kılmasına izin verilmez (daha güvenli ve performanslı).

    • Require all granted: Apache 2.4'te dizine erişime izin verir. Eski Order allow,deny ve Allow from all direktiflerinin yerini almıştır.

Debian tabanlı sistemlerde, bu dosyayı oluşturduktan sonra siteyi etkinleştirmek gerekir:

sudo a2ensite example.com.conf
sudo systemctl reload apache2

Sunucu Durumu ve Bilgisi (mod_status, mod_info)

Apache'nin çalışma durumunu (aktif bağlantılar, yük vb.) izlemek için mod_status, yapılandırma ve modül bilgilerini görmek için mod_info modülleri kullanılabilir. Bu modüller genellikle ayrı yapılandırma dosyalarıyla etkinleştirilir ve güvenlik nedeniyle erişimleri kısıtlanmalıdır.

Örnek Yapılandırma (Debian: /etc/apache2/conf-available/server-status.conf):

<IfModule mod_status.c>
    <Location /server-status>
        SetHandler server-status
        Require local # Sadece localhost'tan erişime izin ver
        # Require ip 192.168.1.0/24 # Belirli bir IP bloğuna izin ver
    </Location>
    ExtendedStatus On # Daha detaylı bilgi göster
</IfModule>

Etkinleştirmek için:

sudo a2enconf server-status
sudo a2enmod status # Gerekliyse modülü de etkinleştir
sudo systemctl reload apache2

Ardından http://localhost/server-status adresinden erişilebilir. mod_info için de benzer bir yapılandırma (<Location /server-info>) yapılır.

HTTPS/TLS (SSL)

Güvenli web siteleri için HTTPS (HTTP over TLS/SSL) kullanmak zorunludur. Apache'de HTTPS'i etkinleştirmek için mod_ssl modülünün aktif olması, 443 portunun dinlenmesi ve bir SSL sertifikasının (genellikle Let's Encrypt ile ücretsiz alınabilir) yapılandırılması gerekir. Sanal ana bilgisayar tanımı <VirtualHost *:443> bloğu içinde yapılır ve SSLEngine on, SSLCertificateFile, SSLCertificateKeyFile gibi direktifler eklenir.

Apache, esnekliği ve geniş modül ekosistemi ile güçlü bir web sunucusudur. Alternatifi olarak Nginx, özellikle yüksek trafikli sitelerde ve ters proxy olarak popülerlik kazanmıştır.

PreviousNameserver ServisleriNextPHP-FPM

Last updated 1 month ago