Apache sunucusu otomatik olarak başlamıyor


11

Dizüstü bilgisayarımdaki geliştirme ortamını kurmanın bir parçası olarak Apache'yi uzun süre yükledim.

Ancak, birkaç ay önce durdurduğumdan, artık önyüklemede otomatik olarak başlamıyor. Bu sorunu evde dizüstü bilgisayarımda ve iş yerinde dizüstü bilgisayarımda yaşıyorum.

Her iki durumda da, Apache'yi birkaç ay önce Ubuntu 10.10'a yükledim, birkaç hafta boyunca aksaklık olmadan kullandım, ancak bir gün durdum ve şimdi otomatik olarak başlamıyor. Bunun için güncelleme rc'yi çalıştırmayı denedim, ancak init betiğinin zaten kullanımda olduğu söylendi.

Ancak, ile manuel olarak başlatma / yeniden başlatma

sudo service apache2 start/restart

iyi çalışıyor. Her iki durumda da, 11.04'e yükseltmeden sonraya kadar izin verdim, çünkü yeni sürümle çözüleceğini umdum. Ama değil! Birisi bana Apache'nin otomatik olarak bir kez daha nasıl başlayacağını söylese minnettar olurum.

Yanıtlar:


10

Koşmaya çalış

update-rc.d apache2 enable [list of run levels]

kök olarak.

Okumak isteyebilirsiniz

man update-rc.d

1
Çok teşekkürler, komutu çalıştırdım (çalışma seviyesi listesi yok, sadece varsayılanlar) ve işe yarıyor gibi görünüyor. Neden çalışmayı bıraktığını biliyor musunuz? Başlangıç ​​komut dosyalarıyla uğraşmadım, sanırım Apache'yi komut satırından durdurdum - ama kalıcı olarak durdurmak gibi bir niyetim yoktu . :-)
Carsten Agger

Neden çalışmayı durdurdu hakkında hiçbir fikrim yok :) Belki güncelleme sonra bir şey doğru çalışmaya başlıyor.
IgNAR

Teşekkürler, ama yardımcı olmuyor. Update-rc.d apache2 etkinleştirmeyi nasıl çağırırsam yapayım, apache tekrar otomatik olarak durur. Her zaman manuel olarak başlatmam gerekiyor. Gerçek bir sorun yok gibi görünüyor, çünkü elle yaptığımda her zaman doğru başlıyor.
Carsten Agger

9

Bu yanıtı, aynı belirtilerle karşılaştığım son konulara dayanarak ekliyorum.

İlk olarak bazı arka plan verileri:

  • Ubuntu, /etc/init.d/hizmetleri başlatmak / durdurmak için klasördeki komut dosyalarını kullanır .
  • Ubuntu , "runlevel" tabanlı hizmetleri başlatmak / durdurmak /etc/init.d/için /etc/rc#.d/klasörlerde depolanan bu komut dosyalarının sembolik bağlarını kullanır .
  • "S" ile başlayan semboller, hizmetin başlatılması gerektiğini belirtir.
  • "K" ile başlayan semboller, hizmetin durdurulması (öldürülmesi) gerektiğini gösterir.
  • Runlevel 1, sembolik bağlanmış komut dosyalarını /etc/rc1.d/, runlevel 2'nin kullandığı /etc/rc2.d/vb. Yürütür .
  • Ubuntu için varsayılan çalışma seviyesi 2'dir.
  • Apache'nin kurulumu esas sudo update-rc.d apache2 defaultsolarak /etc/rc#.d/klasörlerde uygun sembolik bağlantıları oluşturan çalışır .

Bu yüzden sunucumda bir noktada, ya da bir noktada, sudo update-rc.d apache2 disabletüm "S" simgelerini kaldıran ve "K" simgelerini değiştiren bir şey koştu . Böylece, çalışma seviyelerinden herhangi birini başlatırken Apache'yi öldürmek ya da başlamamak.

Benim çözümüm Apache'yi yeniden etkinleştirmekti:

sudo update-rc.d apache2 enable

Artık Apache çalışma seviyelerini başlatırken veya değiştirirken beklendiği gibi başlar / durur.

NB:

Sadece sudo update-rc.d apache2 defaultstekrar koşmanın yetersiz olduğunu belirtmek gerekir, çünkü semboliklerin var olduğunu görür ve bunların istenen şey olduğunu düşünür. Sadece cevap veriyor:

System start/stop links for /etc/init.d/apache2 already exist.

1
Teşekkür ederim! Bu, yapılandırmamdaki sorunları gidermede çok değerliydi.
21'de yeniden

1
Bu sorunu yaşıyorum ama bu çözüm şaşırtıcı bir şekilde işe yaramadı. Koştuğumda sahip olduğum sudo update-rc.d apache2 enable defaultsşeyi kaldırır ve hemen geri koyar. Ben K09apache2rc0, 1 ve 6 ve S91apache2rc2, rc3, rc4, rc5 var. service apache2 startiyi çalışıyor, ancak otomatik olarak başlamayacağı için her yeniden başlatmadan sonra yapmam gerekiyor. mysql, diğer taraftan, her zaman iyi başlar.
Buttle Butkus

1
Bunlar doğru görünüyor. Eğer belirli sorununun ayrıntıları ile yeni bir soru açmak ve alakalı hatları eklemeyi unutmayın isteyebilirsiniz /var/log/syslogve /var/log/apache2/error.log. Sorunun bağlantısıyla bana mesaj at ve yardım edip edemeyeceğimi göreceğim.
Karl Wilbur

3

Bu durumda Apache'nin neden başlamayacağını öğrendim. Başlangıç ​​günlüklerinde bunun bir izini bulamadım, yalnızca önyükleme sırasında ekrana yazdırılan çıktıda.

Ama işte gidiyorsunuz: Senaryoda son satır /etc/apache2/apache2.confbaşarısız oldu.

Neden?

Diyor ki:

Include sites-enabled/

Ancak, kurduğum sitelerin ikisi kendi giriş dizinimde - şifrelenmiş!

Bu nedenle, önyükleme sırasında (Apache'nin başlatılması sırasında) bu siteler mevcut değildir ve Apache başarısız olur ve çalışmayı reddeder.

Çözüm?

Ben "devre dışı_ siteleri" adlı küçük bir komut dosyası oluşturdum ve içine /etc/rc0.dve /etc/rc6.d(kapatma ve yeniden başlatma) symlinked :

#!/bin/bash

/usr/sbin/a2dissite vvsshop
/usr/sbin/a2dissite neoflex
/etc/init.d/apache2 reload

exit 0

Ayrıca, her giriş yaptığımda siteleri yeniden etkinleştirmek için bir komut dosyası hazırladım ve Sistem Ayarlarıma bir başlangıç ​​programı olarak ekledim. Şimdi çalışıyor!

Yani, burada dersin, Apache önyükleme sırasında açıklanamayacağı ve günlüklerde herhangi bir hata bulamadığınızda veya sunucuyu manuel olarak başlatırken, ihtiyaç duyduğu tüm dizinlerin mevcut olup olmadığını kontrol ettim. Bu muhtemelen başka bir şekilde de çözülebilir.


Günlüklerde herhangi bir hata bulamadığınız için şaşırdım. Geçmişte bazı Apache başlatma hatalarının beklediğim günlük dosyasında olmadığını, ancak sanal ana makinelerimden birinin günlük dosyasında olduğunu keşfettim. Durum böyle olabilir mi?
Marius Gedminas

apachectl configtestdaemon olarak çalışırken dosyalara erişim için izinlerin olmadığı konusunda sizi bilgilendirirdi.
Anuga

1

Bu sorunu arayan (googling) diğer kullanıcılar için şunları çalıştırırsanız kontrol edin:

chkconfig |grep httpd

anladın

httpd 0: kapalı 1: kapalı 2: açık 3: açık 4: açık 5: açık 6: kapalı

başka yap:

chkconfig httpd on

( Ubuntu chkconfig eşdeğeri için üzgünüm update- rc'dir. Ubuntu Sunucusu için Chkconfig alternatifine bakın ? )


0

Aynı sorunu yaşadım ve Ubuntu 14'ü yerel bir Vagrant kurulumunda çalıştırıyorum. /etc/apache2/sites-enabledDizini kaldırdım ve Vagrant yapılandırmalarına göre yerel sürücüme bağlı olan ana dizinime bir bağlantı ekledim.

Kaynak henüz bağlanmadığı için apache dizini görmüyor. sites-enabledBir sembolik bağlantı eklemek yerine sadece dizini kopyalamak için Vagrant ile ilgili hükümümü yeniden yazdım .

Ben de apache init etkin olduğundan emin olmak için sudo update-rc.d apache2 enableönerdi yaptım Karl Wilbur.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.