İçeriğe geç
ServerPlus FırsatıYüksek performanslı VDS sunucularda avantajlı fiyatlarTürkiye lokasyon, NVMe disk ve güçlü altyapıyla projelerinizi hızlandırın.
Kampanyayı İncele
Linux

Apache Service Failed Hatası: Linux’ta Nedenini Bulma ve Güvenli Başlatma Rehberi

3 Eylül 2026·Güncelleme: 3 Eylül 2026·10 dk okuma

Apache service failed hatasında günlükleri, yapılandırmayı, port çakışmalarını ve izinleri inceleyerek hizmeti güvenli biçimde yeniden başlatın.

Apache service failed hatası, Apache HTTP Server hizmetinin systemd tarafından başlatılamadığını veya başladıktan hemen sonra durduğunu ifade eder. Hata; hatalı bir sanal ana makine yapılandırması, 80/443 port çakışması, eksik sertifika dosyası, disk doluluğu, yanlış dosya izinleri ya da SELinux kuralı gibi farklı nedenlerden doğabilir. Bu rehber, Linux sunucularda sorunun gerçek nedenini loglardan belirlemeye, riski düşük düzeltmeleri sırayla uygulamaya ve Apache’yi doğrulayarak yeniden hizmete almaya odaklanır.

Önce hizmeti zorla tekrar tekrar başlatmak yerine, systemd durum çıktısını ve Apache yapılandırma testini inceleyin. Özellikle üretim sunucusunda yapılandırma dosyalarını değiştirmeden önce yedek alın; çok sayıda siteyi etkileyebilecek değişiklikleri bakım penceresinde uygulayın.

Apache service failed hatası: Belirti ve kapsam

Sorun çoğunlukla aşağıdaki komutlardan birinin ardından görülür:

systemctl start apache2
systemctl restart apache2
systemctl start httpd
systemctl restart httpd

Debian ve Ubuntu ailesinde servis adı genellikle apache2; RHEL, Rocky Linux, AlmaLinux, CentOS Stream ve Fedora’da ise genellikle httpd olur. Başarısızlık durumunda failed, exit-code, address already in use, Syntax error veya Permission denied gibi ek ifadeler görülebilir. Bu ek ifade tek başına yeterli olmayabilir; karar için günlükteki ilk anlamlı hata satırına ulaşmak gerekir.

Hızlı teşhis kontrol listesi

Aşağıdaki kontrol sırası, gereksiz değişiklik yapmadan kök nedene yaklaşmayı sağlar:

  1. Doğru servis adını ve systemd hata özetini kontrol edin.
  2. Bu özetin bağlı olduğu ayrıntılı journal kayıtlarını okuyun.
  3. Apache yapılandırmasının sözdizimini test edin.
  4. 80 ve 443 portlarında başka bir süreç olup olmadığını doğrulayın.
  5. Disk alanı, inode ve kritik günlük dizinlerinin yazılabilirliğini inceleyin.
  6. Sertifika, dosya yolu, izin ve SELinux kaynaklı uyarıları değerlendirin.
  7. Sadece hatayı düzelttikten sonra hizmeti başlatıp HTTP/HTTPS yanıtını test edin.

İlk durum ve günlük incelemesi

Önce dağıtımınıza uygun komutu kullanın. Çıktıdaki son satırlar kadar, Process: bölümündeki hata kodu ve mesaj da önemlidir.

# Debian / Ubuntu
sudo systemctl status apache2 --no-pager -l
sudo journalctl -u apache2 -b --no-pager -n 100

# RHEL / Rocky Linux / AlmaLinux / CentOS Stream / Fedora
sudo systemctl status httpd --no-pager -l
sudo journalctl -u httpd -b --no-pager -n 100

-b yalnızca mevcut önyüklemenin kayıtlarını gösterir. Sorun eski bir yeniden başlatmadan sonra oluştuysa, journalctl --list-boots ile önceki önyüklemeyi belirleyip ilgili kayıtları ayrıca inceleyin.

Dağıtıma ve yerel ayarlara bağlı olarak Apache hata günlüğü de yararlı olabilir. Debian/Ubuntu sistemlerinde varsayılan yol çoğunlukla /var/log/apache2/error.log, RHEL tabanlı sistemlerde ise /var/log/httpd/error_log olur. Dosyanın mevcut olduğunu doğruladıktan sonra son satırları okuyun:

sudo tail -n 100 /var/log/apache2/error.log
# veya
sudo tail -n 100 /var/log/httpd/error_log

Apache service failed hatasının yaygın nedenleri

Belirti veya log ifadesi Muhtemel neden İlk güvenli kontrol
Syntax error veya Invalid command Hatalı direktif, kapanmamış etiket ya da yüklenmemiş modül Apache yapılandırma testi
Address already in use 80/443 portunu Nginx, başka Apache süreci veya uygulama kullanıyor ss -ltnp ile dinleyen süreci saptama
No such file or directory Yanlış DocumentRoot, Include, sertifika veya anahtar dosyası yolu Logdaki tam dosya yolunu doğrulama
Permission denied Unix izinleri, sahiplik veya SELinux engeli İzin ve AVC kayıtlarını inceleme
No space left on device Disk ya da inode tükenmesi df -h ve df -i kontrolü
SSL başlatma hatası Süresi geçmiş, okunamayan veya yanlış eşleşen sertifika/anahtar İlgili VirtualHost ve dosya yollarını doğrulama

Güvenli adım adım çözüm

1. Yapılandırmayı değiştirmeden önce yedekleyin

Çalışan bir yapılandırma dosyasını düzenleyecekseniz önce tarih damgalı bir kopya alın. Apache ana yapılandırma dizini dağıtıma göre değişir: Debian/Ubuntu’da çoğunlukla /etc/apache2, RHEL ailesinde çoğunlukla /etc/httpd kullanılır. Yerel mimariniz farklıysa varsayım yapmak yerine servis birimindeki başlangıç komutunu ve mevcut yapılandırmayı doğrulayın.

# Debian / Ubuntu örneği
sudo cp -a /etc/apache2 /root/apache2-backup-$(date +%F-%H%M%S)

# RHEL tabanlı örnek
sudo cp -a /etc/httpd /root/httpd-backup-$(date +%F-%H%M%S)

Bu işlem yapılandırma yedeği alır; web içeriği, veritabanı veya sertifika yönetim sisteminizin diğer bileşenleri için ayrı yedek gereksinimlerini karşılamaz.

2. Sözdizimi hatasını bulun ve düzeltin

Yapılandırma testi, Apache’yi başlatmadan dosya ve direktif hatalarını yakalar. Test çıktısında verilen dosya ve satır numarasını doğrudan inceleyin. Bir dosyayı tamamen kaldırmak yerine hatalı son değişikliği geri almak, üretim etkisini azaltır.

# Debian / Ubuntu
sudo apache2ctl configtest

# RHEL tabanlı sistemler
sudo httpd -t

Syntax OK sonucu yalnızca sözdiziminin geçerli olduğunu gösterir; port çakışması veya dosya erişim sorunu gibi çalışma anı problemlerini tamamen elemez. Test hata veriyorsa hizmeti yeniden başlatmayın. Hata örneğin bir Include dosyasını, VirtualHost bloğunu veya SSL dosya yolunu işaret ediyorsa ilgili satırı düzeltin ve testi yeniden çalıştırın.

Yeni etkinleştirdiğiniz bir modül ya da site sonrasında sorun başladıysa, değişikliği not edin. Debian/Ubuntu’da etkin site ve modüller genellikle a2ensite/a2dissite ve a2enmod/a2dismod araçlarıyla yönetilir. RHEL tabanlı sistemlerde ise çoğu ek ayar /etc/httpd/conf.d/ altında dosyalarla yüklenir. Dağıtım yöntemlerini birbirine karıştırmayın.

3. Port çakışmasını güvenle giderin

Apache’nin dinleyeceği 80 veya 443 portu başka bir işlem tarafından kullanılıyorsa servis başlatılamaz. Dinleyen süreçleri görün:

sudo ss -ltnp | grep -E ':(80|443)\s'

Çıktıda Nginx, Caddy, HAProxy, Docker proxy veya ikinci bir Apache örneği görürseniz süreci hemen sonlandırmayın. Önce bu hizmetin kasıtlı olarak ters vekil, yük dengeleyici veya başka bir uygulama için çalışıp çalışmadığını belirleyin. Aynı portta tek bir süreç dinleyebilir. Mimari tercihinize göre çakışan hizmetin yapılandırmasını değiştirmek, Apache’nin dinleme portunu planlı biçimde değiştirmek veya gereksiz hizmeti bakım penceresinde durdurmak gerekir.

4. Disk alanı ve inode tüketimini kontrol edin

Apache günlük yazamadığında, geçici dosya oluşturamadığında veya sistem bölümü dolduğunda başlatma sorunları yaşayabilir. Alan ve inode durumunu birlikte değerlendirin:

df -h
df -i

/, /var veya Apache günlüklerinin bulunduğu bağlı dosya sistemi doluysa, rastgele dosya silmek yerine büyük ve gereksiz dosyaları tespit edin. Günlükleri silmeden önce saklama politikanızı ve olay inceleme gereksinimini değerlendirin. Logrotate yapılandırmasının çalışması, uygulama günlüklerinin kontrolsüz büyümemesi ve yeterli boş alan izlenmesi kalıcı çözümün parçasıdır.

5. Sertifika ve dosya erişim hatalarını doğrulayın

HTTPS yapılandırmasında sertifika veya özel anahtar yolu yanlışsa Apache genellikle başlatma aşamasında hata verir. Logdaki yol üzerinden dosyanın varlığını, okunabilirliğini ve sertifika bilgisini inceleyin:

sudo ls -l /sertifika/dosya/yolu
sudo openssl x509 -in /sertifika/dosya/yolu -noout -subject -issuer -dates

İlk komuttaki yol bir örnektir; mutlaka kendi VirtualHost yapılandırmanızda tanımlı gerçek yolu kullanın. Özel anahtar dosyalarının izinlerini genişletmek yerine, Apache ana sürecinin güvenli erişim modelini ve sertifika yöneticinizin önerdiği sahiplik/izin düzenini koruyun. Sertifika ve anahtarın eşleşmesi veya zincir dosyası gibi ayrıntılar, kullandığınız Apache ve TLS yapılandırmasına göre ayrıca kontrol edilmelidir.

6. SELinux uyarılarını atlamayın

SELinux etkin RHEL tabanlı sistemlerde klasik Unix izinleri doğru görünse bile erişim reddedilebilir. Önce durumunu kontrol edin:

getenforce
sudo ausearch -m AVC,USER_AVC -ts recent

AVC kayıtları Apache’nin erişmeye çalıştığı nesneyi gösteriyorsa, sorunu çözmek için SELinux’u kalıcı olarak kapatmayın veya geniş kapsamlı politika değişiklikleri uygulamayın. Yanlış bağlam, beklenmeyen dizinden içerik sunma ya da uygulamanın ağ erişimi gibi asıl nedeni belirleyin. Bağlam değişikliği veya gerekli boole ayarı, yalnızca kullandığınız uygulamanın belgelenmiş gereksinimine göre uygulanmalıdır.

Düzeltmeden sonra Apache’yi başlatma ve doğrulama

Yapılandırma testi temiz sonuç verdikten ve kök neden giderildikten sonra hizmeti başlatın. Başlatma yerine restart kullanmak, çalışan bir Apache varsa kısa kesinti oluşturabilir; bu nedenle bakım durumuna göre bilinçli seçim yapın.

# Debian / Ubuntu
sudo systemctl start apache2
sudo systemctl is-active apache2
sudo systemctl status apache2 --no-pager -l

# RHEL tabanlı sistemler
sudo systemctl start httpd
sudo systemctl is-active httpd
sudo systemctl status httpd --no-pager -l

active sonucu son adımdır ancak tek başına uygulamanın doğru siteyi sunduğunu kanıtlamaz. Sunucunun kendisinden HTTP başlıklarını test edin:

curl -I http://127.0.0.1/
curl -k -I https://127.0.0.1/

-k, HTTPS testinde sertifika doğrulamasını atlar; yalnızca yerel bağlantı teşhisi için kullanılmalıdır. Gerçek kullanıcı deneyimi için alan adınızla, doğru DNS kaydı ve geçerli sertifika doğrulaması üzerinden ayrıca test yapın. Son olarak hata günlüğünde yeni kritik hata oluşmadığını kontrol edin.

Tekrarını önleme

  • Yapılandırma değişikliklerini sürüm kontrolünde veya en azından tarihçeli yedeklerle yönetin.
  • Her değişiklikten sonra servis yeniden başlatmadan önce apache2ctl configtest ya da httpd -t çalıştırın.
  • Disk alanı, inode kullanımı, sertifika bitiş tarihi ve hizmet durumu için izleme alarmları kurun.
  • Port kullanımını belgelendirin; ters vekil ve Apache’nin sorumluluklarını açıkça ayırın.
  • Günlük döndürme politikasını düzenli kontrol edin ve başarısız servis olaylarından sonra journal kayıtlarını saklayın.

Sonuç

Apache service failed hatası için en güvenli yaklaşım, hata mesajını tahmin ederek komut çalıştırmak değil; önce systemd ve Apache günlükleriyle nedeni kanıtlamak, ardından yapılandırma testi, port, depolama, erişim ve SELinux kontrollerini sıralı uygulamaktır. Düzeltme sonrası hem servis durumunu hem de yerel HTTP/HTTPS yanıtını doğrulamak, hizmetin yalnızca çalıştığını değil temel olarak yanıt verdiğini de gösterir.

Sık sorulan sorular

Apache neden restart sonrası failed durumuna geçer?

En yaygın nedenler hatalı yapılandırma, başka bir sürecin 80/443 portunu kullanması, eksik SSL dosyası ve izin sorunlarıdır. Kesin neden için systemctl status ile journalctl -u çıktısındaki ilk hata satırını inceleyin.

Apache servis adının apache2 mi yoksa httpd mi olduğunu nasıl anlarım?

Debian/Ubuntu’da çoğunlukla apache2, RHEL tabanlı dağıtımlarda çoğunlukla httpd kullanılır. systemctl list-unit-files | grep -E 'apache2|httpd' komutu kurulu birimi doğrulamanıza yardımcı olur.

Configtest başarılıysa Apache neden yine açılmayabilir?

Configtest sözdizimini denetler. Port çakışması, çalışma anında erişilemeyen kaynaklar, disk doluluğu veya bazı izin/SELinux engelleri test başarılı olsa da başlatmayı önleyebilir.

Portu kullanan süreci kill komutuyla kapatmalı mıyım?

Hayır, önce sürecin hangi hizmete ait olduğunu ve üretimdeki rolünü belirleyin. Süreci zorla sonlandırmak veri kaybına, kesintiye veya otomatik yeniden başlatma döngüsüne neden olabilir.

SELinux’u kapatmak Apache hatasını çözer mi?

Geçici olarak belirtinin değişmesine yol açabilir ancak güvenlik denetimini kaldırır ve kök nedeni gizler. AVC kayıtlarından engellenen erişimi belirleyip dar kapsamlı, doğrulanmış düzeltme uygulanmalıdır.

ServerPlus Teknik Ekibi

Sunucu, hosting, sanallaştırma ve veri merkezi operasyonlarından edinilen bilgileri uygulanabilir teknik rehberlere dönüştürür.