Apache2 (Httpd), High Sierra güncellemesinden sonra çalışmıyor


15

High Sierra 10.13.1 sürümüne güncelledikten sonra Apache'nin başlamamasıyla ilgili bir sorunum var. Hata günlüklerinde hiçbir şey görünmüyor, ama denediğimde apachectl starthiçbir şey olmuyor. Çalıştırırsam apachectl configtest"Sözdizimi Tamam"

Ben sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plistboşuna gibi komutları kullandım . Apache başlamıyor. Koşabilirim sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plistve bu da çalışmıyor.

Demlemek hizmetleri listesine bir göz attım ve diğer süreç (mysql) ile birlikte httpd listede görünür ancak httpd'nin durumu yeşil yerine sarı bir "başlatıldı" gösteriyor.

Birçok farklı şey denedim ve bulduğum şey, eğer system.log dosyasına bakarsam buluyorum com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Apachectl start çalıştırırsam, komut çalışıyor gibi görünüyor, ancak stop komutunu çalıştırdığımda "httpd (pid dosyası yok) çalışmıyor.
Ben de com.; Apple.xpc.launchd [1] çıktı alıyorum org.apache.httpd): Lütfen OnDemand'den KeepAlive'ye geçin.

High Sierra'da Apache'nin Sierra'da iyi koştuğunda çalışmasını engelleyen bir şey var mı?


1
Demlemek Apache httpd ve Apple Apache httpd (lansman cinleri farklı ikili başlar) karıştırma! Httpd durumunu nereden alıyorsunuz (örn. Sarı ve yeşil gösterge)? Hangi başlangıç ​​kurulum kılavuzunu kullandınız?
klanomath

Onları karıştırmıyorum, hem demlemek hem de Apple'ın brew services list' I receive a yellow indicator, I checked with all of the available users and ran apache'sini deneme adımlarından geçiyordum, Bir demleme hizmetleri listesi gerçekleştirdiğimde ve hepsi aynı göstergeyi gösteriyor. Bir kurulum kılavuzuna gelince, apache kurmak için Ansible kullanıldı. Bu, diğer 5 MacBook'ta yapıldı, hala Sierra çalıştırıyorlar. Bu MacBook'un bir sorunu vardı ve bir Apple bir tanılama çalıştırdı ve işletim sistemini sıfırladı, işletim sistemini High
Sierra'ya

Karıştırma ile kastediyorum: yüklü en az iki apachectl ve httpd ikili dosyası (ve iki yapılandırma dosyası) var. Genellikle demlemenin apachectl'i tercih edilir (PATH değişkeninin varsayılan içeriği nedeniyle, sizinki farklı olabilir). AFAIR demleme apachectl'i Apple'ın httpd'sini varsayılan başlatma seçeneğiyle (yani apachectl start) başlatmaz . İle aynı ... configtest!
klanomath

"Ansible apache kurmak için kullanıldı" ile bu kılavuzu kastediyorsun: Mac Geliştirme Ansible Playbook ? Nasıl yapılır veya kurulum kılavuzuna bir bağlantı eklemek daha iyidir. Çeşitli macOS sürümleri için çeşitli kurulum kılavuzlarının tümü biraz farklı yapılandırmalar içerir / farklı ortamlar oluşturur.
klanomath

Bu hafta sonu High Sierra'ya yeni güncelleme yaptım ve aynı sorunu yaşıyorum. Homebrew httpdformülünü kullanıyorum ve şimdi apache yanıt vermiyor. Yaptığımda brew services list, startedsarı renkte sudo apachectl stophttpd (pid 87?) not responding.
httpd'yi de alıyorum ve koştuğumda

Yanıtlar:


16

Bence httpd ile ilgili çok sayıda komut çalıştırarak çeşitli httpd başlatma cinlerini / başlatma mekanizmalarını barındırdınız.

Homebrew ve homebrew'un apache-httpd'si yüklendiğinde ve varsayılan PATH ile httpd'yi başlatmanın altı yolu vardır.

Apple'ın Apache'si:

  • sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • sudo /usr/sbin/apachectl start

Homebrew'un Apache'si:

  • sudo apachectl start
  • apachectl start
  • sudo brew services start httpd
  • brew services start httpd

Homebrew.mxcl.httpd.plist dosyasını el ile ~ / Library / LaunchAgents / veya / Library / LaunchDaemons'a kopyaladıysanız / yükleyerek başlatmak için iki seçeneğiniz daha vardır (sudo) launchctl load ....

Httpd yapılandırma dosyalarını veya apachectl betiklerini yoğun bir şekilde değiştirmediyseniz, Apple dalı / var'daki Apple'ın httpd.conf dosyasını ve / Library klasöründeki DocumentRoot'u kullanır.

Homebrew şubesi / usr / local / dizininde alt klasörler kullanır.

Httpd bağlantı noktalarını 1024'ten düşük bağlantı noktalarına bağladıysanız bazı başlatma yöntemleri çalışmaz!

Eğer kullanırsanız (sudo) brew services ...httpd başlatmak için Uygun kullanmak zorunda (sudo) brew services listdurumunu kontrol etmek için komut:

Kök olarak başlatırsanız, kök privs ile listeleyin:

sudo brew services start httpd > sudo brew services list

veya kullanıcı ayrıcalıklarıyla:

brew services start httpd> brew services list.


Sorununuzu çözmek için Apple'ın httpd'sini kaldırın:

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • manuel olarak yüklenen homebrew.mxcl.httpd.plist'i kaldırın
  • herhangi bir homebrew httpd hizmetini durdur (sudo) brew services stop httpd
  • apachectl tarafından başlatılmış herhangi bir httpd'yi durdur:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • Etkinlik İzleyicisi'ni açın ve hiçbir httpd işleminin çalışmadığını kontrol edin.
  • Yeniden Başlatma

Şimdi - homebrew'un httpd'sini ayrıcalıklı bağlantı noktalarında kullanmak istediğinizi varsayarsak - şunu girin:

sudo brew services start httpd

İle başarılı başlangıcı kontrol edin sudo brew services list.


Sağladığınız düzeltmeyi denerken yaptığım çıktıyı alıyorum. apachectl stopçıktısını verir httpd (no pid file) not runningve çalıştırdığımda sudo brew services httpd start sudo brew services list apache2 (httpd) startedsarı renkte gösterir Web sayfasına ilişkin bir şeye erişmeye çalıştığımda yapamıyorum. 10.13 güncellemesinin apache'de başlamasını engelleyen bir şey değiştirip değiştirmediğini merak ediyorum.
Alcyeonnero

14

Homebrew httpd ile ilgili olarak, son zamanlarda karşılaştığım bir sorun, httpd'nin başlamasını engelleyen eski bir artık httpd.pid dosyasıydı. Belirti, apachectl starthttpd'nin zaten çalıştığı söylendi, ancak çalışmadı.

Çünkü burada eski bir dosyaydı:

/usr/local/var/run/httpd/httpd.pid

Çözüm bu pid dosyasını silmek ve sonra httpd başladı.


harika! MBP'm uykudan uyanmayacağına karar verdiğinde ve güç döngüsünde olması gerektiğinde bu benim sorunum.
frumbert

2
Bu çözüm MacOS Mojave'de de çalıştı. Brew, Apache'nin çalıştığını, ancak httpdetkinlik izlemede olmadığını düşündü . Bu sorunu düzeltti.
Vahid Amiri

Bu beni çok sıkıntıya soktu!
SEJU

Bu benim için de işe yaradı. Hiçbir web sitesi yükleyemedim ve ERR_CONNECTION_REFUSED almaya devam ettim. Birlikte çalışan hizmetleri listelemeye çalıştığımda brew services list, sunucunun etkin durumuyla ilgili bir sorun olduğu anlamına gelen sarı 'başlatılmış' durumunu alıyordum. Pid'i kaldırmak bunu düzeltti ve şimdi servis listesi aktif durumu şimdi yeşil bir 'başladı' olarak gösteriyor. Bunun için teşekkür ederim!
Mike Kormendy

Makinenizin bir çekirdek paniği / elektrik kesintisi / vb. Sonrasında yeniden başlatılması zorsa, bu sizin sorununuz olabilir. Teşekkürler!
Dom Stubbs

2

Bugün daha önce High Sierra'ya geçtikten sonra da aynı durumla karşılaştım. Aşağıdaki apache dosyalarının yeni sürümlerle değiştirildiğini gördüm. Neyse ki tüm bu dosyalar için aynı klasörde bir FILE ~ önceki dosya vardı. Sadece ~ önceki sürümü orijinal olanlara geri kopyaladım, apache'yi yeniden başlattım ve her şey yolundaydı.

Klasörde /etc/apache2:

./httpd.conf
./extra/httpd-vhosts.conf
./extra/httpd-ssl.conf

Misal:

cp /etc/apache2/httpd.conf~previous /etc/apache2/httpd.conf

Klasörde /etc/apache2/extra/, bunlara ~ önceden eklenmiş yaklaşık 10 dosya var, bunların tümü değiştirilmeli veya /etc/apache2/extra/klasörde bahsettiğiniz iki dosya var
Alcyeonnero

Httpd.conf ve httpd-vhosts.conf dosyalarıyla başlayacağım. SSL kurulumunuz varsa, httpd-ssl.conf dosyasını da güncellemeniz gerekir. Gerisi daha önce değiştirip değiştirmediğinize bağlıdır. Ben tüm diğer dosyalarda örneğin diff httpd.conf httpd.conf ~ önceki değişti görmek için bir diff kullanır
Unmesh

Ben bu dosyalarla başladım, hiçbir şey değişmedi.
Alcyeonnero

1

Aynı problemim vardı

com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

Bu httpd'nin anormal olarak çıktığı anlamına gelir.

Daha sonra sorunun ne olduğunu görmek için httpd'yi el ile başlattım

> httpd
(13)Permission denied: AH00091: httpd: could not open error log file /usr/local/var/log/httpd/error_log.

İzinlere bakıldığında oldukça açıktı

> ll /usr/local/var/log/httpd/
total 96
-rw-r--r--  1 root  admin    242 15 apr 12:38 access_log
-rw-r--r--  1 root  admin  42062 20 jun 11:01 error_log

Sanırım httpd'ye bu soruna neden olan kök olarak başladım. Dosyaları kaldırdım ve sonra

brew services restart httpd

hepsi iyiydi.


1

Son zamanlarda bununla karşılaştım. Bunun nedeni, homebrew'un apache2 / httpd'yi kullanıcı tarafından erişilebilen klasörlere yükleyip kullanıcı olarak çalışmasıdır (brew services start httpd komutunu çalıştırarak).

Normal kullanıcı olarak çalışmamak, httpd'nin ayrıcalıklı bağlantı noktalarını (1024 ve altı) dinleyemediği anlamına gelir.

Bu nedenle, httpd.conf 80 ve 443'ü dinleyecek şekilde yapılandırılmış olsa bile, httpd bu bağlantı noktaları üzerinden istek alamaz.

Özellik httpd'yi şu komutu çalıştırarak başlatmanızdır: sudo apachectl start. Bu komut httpd'yi root kullanıcısı olarak başlatır. Kök kullanıcının 80 ve 443 numaralı bağlantı noktalarını dinlemesine izin verilir. Httpd daha sonra _www kullanıcısı olarak çalışan ayrıcalıkları geri bırakır.

Yani kısa cevap homebrew httpd'yi 80 ve 443 numaralı bağlantı noktalarında çalıştırmaktır: sudo apachectl start. Ayrıca şununla da başlatabilirsiniz: sudo brew services start httpd. Brew, sudo apachectl start dosya izinleri ve / veya sahip değişiklikleri gerektirmediğinden, kök için belirli klasörleri talep ettiğini söyleyeceğim.


0

Aksine HomeBrew'un her zaman sudo tarafından httpd çalıştırmasını söylediklerini öneririm. Orada ps -aef | grep httpd yaparsanız çalışan olarak listelenen göreceksiniz. Sudo olmadan yapmak, psd'nin yanlış bir izlenim vermesine neden olabilecek hiçbir ps çıkışı üretmez.

Ayrıca her iki durumda da farklı veya aynı yapılandırmaların yüklü olup olmadığından emin değilim. PHP'yi yükledim ve DocumentRoot dizininde phpinfo ile test.php dosyası oluşturdum. Sudo ile apache'yi başlatırsanız, demleme servislerini kullanırken phphatfo ile localhost / test.php görebilirsiniz, DocumentRoot root erişimi gereken alanda ise httpd start size hata verecektir.

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.