Apache2 (Httpd) हाई सिएरा के अपडेट के बाद काम नहीं कर रहा है


15

मेरे पास एक मुद्दा है जहां अपाचे हाई सिएरा 10.13.1 को अपडेट करने के बाद शुरू नहीं होगा। त्रुटि लॉग में कुछ भी नहीं दिख रहा है, लेकिन जब मैं apachectl startकुछ नहीं करने की कोशिश करता हूं । अगर मैं दौड़ता apachectl configtestहूँ तो मुझे "सिंटेक्स ओके" प्राप्त होता है

मैं sudo launchctl load -w /System/Library/LaunchDaemons/org.apache.httpd.plistकोई फायदा नहीं हुआ जैसे आदेशों का उपयोग किया है । अपाचे शुरू नहीं होगा। मैं दौड़ सकता हूं sudo launchctl load -w /Library/LaunchDaemons/homebrew.mxcl.httpd.plistऔर वह भी काम नहीं कर रहा है।

मैंने अन्य सेवाओं (mysql) के साथ सूची में ब्रूफ़ सेवाओं की सूची और httpd शो को देखा, लेकिन httpd की स्थिति हरे रंग के बजाय पीले रंग की "शुरू" दिख रही है।

मैंने कई अलग-अलग चीजों की कोशिश की है, और मुझे जो मिल रहा है वह यह है कि अगर मैं system.log फ़ाइल में देखता हूं तो मुझे लगता है com.apple.xpc.launchctl[1] (homebrew.mxcl.httpd24[11780]): Service exited with abnormal code:1

यदि मैं अपाचेक्टल स्टार्ट चलाता हूं, तो कमांड काम करती है, लेकिन जब मैं स्टॉप कमांड चलाता हूं तो मुझे "httpd (कोई पीआईडी ​​फाइल नहीं) मिलती है।
मैं कॉम का आउटपुट भी प्राप्त कर रहा हूं। Apple.xpc.launchd [1] org.apache.httpd): कृपया OnDemand से KeepAlive पर जाएं।

क्या हाई सिएरा के साथ कुछ ऐसा है जो अपाचे को चलने से रोक रहा है जब वह सिएरा में ठीक से चला?


1
आप काढ़ा अपाचे httpd और Apple के Apache httpd (जिनके लॉन्च डेमन अलग-अलग बायनेरी शुरू करते हैं) को मिला रहे हैं! आपको httpd स्थिति कहां से मिलती है (यानी पीला बनाम हरा सूचक)? आपने किस प्रारंभिक सेट-अप गाइड का उपयोग किया?
कालोनोमथ

मैं उन्हें मिश्रण नहीं कर रहा हूं, मैं दोनों काढ़ा और एप्पल के अपाचे का उपयोग करने के चरणों से गुजर रहा था, जब मैं एक brew services list' I receive a yellow indicator, I checked with all of the available users and ran काढ़ा सेवा सूची का प्रदर्शन करता हूं 'और वे सभी एक ही संकेतक दिखा रहे हैं। एक सेटअप गाइड के लिए, Ansible का उपयोग अपाचे को सेट करने के लिए किया गया था। यह 5 अन्य मैकबुक पर किया गया है, वे अभी भी सिएरा चला रहे हैं। इस एक मैकबुक में एक मुद्दा था और एक ऐप्पल ने डायग्नोस्टिक चलाया और ओएस को रीसेट किया, जबकि ओएस को हाई सिएरा में बदल दिया
अल्केयोनोरो

मिश्रण के साथ मेरा मतलब है: आपके पास कम से कम दो एपाचेक्टल और httpd बायनेरिज़ (और दो कॉन्फिग फाइल) स्थापित हैं। आमतौर पर ब्रू के अपाचेक्टल को प्राथमिकता दी जाती है (क्योंकि पैट वैरिएबल की डिफ़ॉल्ट सामग्री के कारण, आपकी समस्या अलग हो सकती है)। AFAIR शराब की भठ्ठी Apple के httpd को डिफ़ॉल्ट स्टार्ट विकल्प (यानी apachectl start) के साथ शुरू नहीं करेगी । साथ ही ... configtest!
कालोनोमथ

"Ansible को अपाचे सेट करने के लिए उपयोग किया गया था" के साथ आपका मतलब है कि यह गाइड: मैक डेवलपमेंट Ansible Playbook ? / A-how या to-up गाइड के लिए लिंक जोड़ना बेहतर है। विभिन्न macOS संस्करणों के लिए विभिन्न सेट-अप गाइडों में सभी अलग-अलग विन्यास होते हैं / अलग-अलग envs बनाते हैं।
कालोनोमथ

मैंने इस सप्ताह के अंत में हाई सिएरा को अपडेट किया, और मुझे यह वही समस्या है। मैं Homebrew httpdसूत्र का उपयोग कर रहा हूं , और अब अपाचे का जवाब नहीं है। जब मैं करता हूं brew services list, मुझे startedपीले रंग में httpd के लिए भी मिलता है , और जब मैं दौड़ता हूं sudo apachectl stop, तो यह मुझे बताता है किhttpd (pid 87?) not responding.
आश्चर्य

जवाबों:


16

मेरी राय में आपने अपने कई httpd लॉन्च डेमोंस / स्टार्ट मैकेनिज्म को बहुत अधिक httpd संबंधित कमांडों को निष्पादित करके ठीक किया।

Homebrew और homebrew के अपाचे-httpd स्थापित और डिफ़ॉल्ट पथ के साथ आप httpd को प्रारंभ करने के लिए छह तरीके हैं।

Apple का Apache:

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

होमब्रे की अपाचे:

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

अगर आपने फ़ाइल homebrew.mxcl.httpd.plist को मैन्युअल रूप से कॉपी किया है तो ~ / लाइब्रेरी / लॉन्चअगेंट्स / या / लाइब्रेरी / लॉन्चडैमन्स / आपके पास उन्हें लोड करके इसे शुरू करने के लिए दो और विकल्प हैं (sudo) launchctl load ...

यदि आपने httpd config फाइल या Apachectl स्क्रिप्ट को भारी रूप से संशोधित नहीं किया है तो Apple शाखा Apple / httpd.conf फ़ाइल / var और DocumentRoot / लाइब्रेरी फ़ोल्डर में उपयोग करेगी।

Homebrew शाखा / usr / स्थानीय / में सबफ़ोल्डर्स का उपयोग करती है।

1024 से कम बंदरगाहों पर httpd पोर्ट को बाध्य करने पर कुछ लॉन्च विधियां काम नहीं करेंगी!

यदि आप (sudo) brew services ...httpd शुरू करने के लिए उपयोग करते हैं तो आपको (sudo) brew services listस्थिति की जांच करने के लिए उचित कमांड का उपयोग करना होगा :

यदि आप इसे रूट के रूप में शुरू करते हैं तो इसे रूट प्राइवेट के साथ सूचीबद्ध करें:

sudo brew services start httpd > sudo brew services list

या उपयोगकर्ता निजी के साथ:

brew services start httpd> brew services list


आपकी समस्या को हल करने के लिए Apple के httpd को अनलोड करें:

  • sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist
  • किसी भी मैन्युअल रूप से स्थापित homebrew.mxcl.httpd.plist निकालें
  • किसी भी homebrew httpd सेवा के साथ बंद करो (sudo) brew services stop httpd
  • Apachectl द्वारा शुरू किए गए किसी भी httpd को रोकें:

    apachectl stop
    sudo apachectl stop
    sudo /usr/sbin/apachectl stop
    
  • गतिविधि खोलें और जांचें कि कोई httpd प्रक्रिया नहीं चल रही है।
  • रीबूट

अब - मान लें कि आप विशेषाधिकार प्राप्त बंदरगाहों पर होमब्रे के httpd का उपयोग करना चाहते हैं - दर्ज करें:

sudo brew services start httpd

के साथ सफल शुरुआत की जाँच करें sudo brew services list


आपके द्वारा प्रदान किए गए फिक्स का प्रयास करते समय, मुझे वही आउटपुट प्राप्त होता है जैसा मैंने किया था। apachectl stopके उत्पादन प्रदान करता है httpd (no pid file) not runningऔर जब मैं चलाने sudo brew services httpd start sudo brew services list apache2 (httpd) इंगित करता है startedएक पीले रंग में जब मैं संबंधित मैं करने में असमर्थ हूँ पहुँच कुछ भी वेबपेज करने का प्रयास। मुझे आश्चर्य है कि अगर 10.13 में अपडेट कुछ अपाचे में बदल गया तो इसे शुरू करने से रोकना चाहिए।
अल्केओनेनेरो

14

Homebrew httpd के बारे में, हाल ही में एक मुद्दा जो मैंने चलाया था वह एक पुराना बचा हुआ httpd.pid फ़ाइल था जो शुरू से ही httpd को रोक रहा था। लक्षण apachectl startकहा गया था कि httpd पहले से ही चल रहा है, लेकिन यह नहीं था।

कारण यहाँ एक पुरानी फ़ाइल थी:

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

समाधान इस पीआईडी ​​फ़ाइल को हटाना था और फिर httpd शुरू हुआ।


महान! यह मेरी समस्या है जब मेरी MBP यह निर्णय लेती है कि यह नींद से नहीं जा रहा है और मुझे इसे शक्ति-चक्र देना है।
9

2
इस समाधान ने MacOS Mojave में भी काम किया। ब्रू ने सोचा कि अपाचे चल रहा है लेकिन httpdगतिविधि की निगरानी में कोई नहीं था । यह तय किया।
वाहिद अमीरी

इसने मुझे बहुत परेशानी से बचाया!
SEJU

यह मेरे लिए भी काम किया। मैं किसी भी वेबसाइट को लोड नहीं कर सका, और ERR_CONNECTION_REFUSED प्राप्त करता रहा। जब मैंने उन सेवाओं को सूचीबद्ध करने का प्रयास किया, जो brew services listमेरे साथ चल रही थीं , तो पीला 'स्टार्ट' स्टेटस मिल रहा था, जिसका मतलब था कि सर्वर की सक्रिय स्थिति में कुछ गड़बड़ थी। यह तय की गई पिड को हटाने और अब सेवा सूची सक्रिय स्थिति को हरा के रूप में दिखाती है कि अब इसके बजाय 'शुरू' हो गया है। इसके लिए शुक्रिया!
माइक कोरमेन्डी

यदि आपकी मशीन को कर्नेल पैनिक / पावर कट / आदि के बाद हार्ड रिबूट किया गया है, तो यह आपकी समस्या होने की संभावना है। धन्यवाद!
डोम स्टब्स

2

मैंने पहले हाई सिएरा में अपग्रेड करने के बाद आज उसी का सामना किया। मैंने पाया कि निम्नलिखित अपाचे फाइलें ब्रांड के नए संस्करणों के साथ बदल दी गईं। सौभाग्य से इन सभी फ़ाइलों के लिए एक ही फ़ोल्डर में FILE ~ पिछली फ़ाइल मौजूद थी। मैंने अभी मूल वाले ~ पिछले संस्करण को कॉपी किया, अपाचे को फिर से शुरू किया और सब कुछ ठीक था।

फ़ोल्डर में /etc/apache2:

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

उदाहरण:

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

फ़ोल्डर में /etc/apache2/extra/~ के साथ लगभग 10 फाइलें हैं। पिछले उन सभी को बदला जाना चाहिए, इन सभी को बदलना चाहिए, या /etc/apache2/extra/फ़ोल्डर में केवल दो का उल्लेख करना चाहिए
अल्केयोनोरो

मैं httpd.conf और httpd-vhosts.conf फाइलों के साथ शुरुआत करूंगा। यदि आपके पास एसएसएल सेटअप है तो आपको httpd-ssl.conf को भी अपडेट करना होगा। बाकी इस बात पर निर्भर करता है कि क्या आपने उन्हें पहले बदला था। मैं यह देखने के लिए एक भिन्न का उपयोग करूंगा कि क्या फाइलें बदल गई हैं। उदाहरण के लिए httpd.conf httpd.conf ~ अन्य सभी फाइलों पर पिछले
अनमेश

मैंने उन फाइलों के साथ शुरुआत की है, जिनसे कुछ भी नहीं बदला।
अल्केओनेनेरो

1

मुझे भी यही समस्या थी

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

इसका मतलब है कि httpd असामान्य रूप से बाहर निकल गया।

मैंने तब मैन्युअल रूप से httpd शुरू किया कि समस्या क्या है

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

अनुमतियों को देखते हुए यह बहुत स्पष्ट था

> 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

मुझे लगता है कि मैंने httpd को मूल के रूप में शुरू किया, जो इस मुद्दे का कारण बना। मैंने फाइलें और उसके बाद हटा दीं

brew services restart httpd

सब ठीक था।


1

मैं हाल ही में इसमें भाग गया। कारण homebrew उपयोगकर्ता सुलभ फ़ोल्डरों में apache2 / httpd स्थापित करता है और एक उपयोगकर्ता के रूप में चलता है (कमांड चलाकर: काढ़ा सेवा शुरू httpd)।

एक नियमित उपयोगकर्ता के रूप में नहीं चलने का मतलब है कि httpd विशेषाधिकार प्राप्त बंदरगाहों (1024 और नीचे) पर नहीं सुन सकता है।

तो भले ही httpd.conf को 80 और 443 को सुनने के लिए कॉन्फ़िगर किया गया हो, httpd उन पोर्ट के माध्यम से अनुरोध प्राप्त नहीं कर सकता है।

ख़ासियत यह है कि जब आप कमांड चलाकर httpd शुरू करते हैं: sudo apachectl start। यह कमांड रूट यूजर के रूप में httpd को शुरू करता है। रूट उपयोगकर्ता को पोर्ट्स 80 और 443 पर सुनने की अनुमति है। httpd तो _www उपयोगकर्ता के रूप में चल रहे विशेषाधिकारों को वापस छोड़ देता है।

तो इसका छोटा सा जवाब है homebrew httpd को पोर्ट्स 80 और 443 पर चलाना। इसे यूज़ करना शुरू करना है: sudo apachectl start। आप इसे इसके साथ भी शुरू कर सकते हैं: sudo brew सेवाएं शुरू httpd। ब्रू आपको बताएगा कि यह रूट के लिए कुछ फ़ोल्डर्स का दावा कर रहा है, जो मुझे लगता है कि ठीक है, लेकिन आवश्यक नहीं है क्योंकि sudo apachectl start को फ़ाइल अनुमति और / या स्वामी परिवर्तन की आवश्यकता नहीं है।


0

मैं इसके विपरीत सुझाव दूंगा कि होमब्रिज कहता है कि हमेशा सुडो द्वारा httpd चलाएं। अगर आप ps -aef करते हैं तो वहाँ के लिए। grep httpd आप इसे चलाने के रूप में सूचीबद्ध देखेंगे। सुदो के बिना करना कोई पीएस आउटपुट नहीं देता है जो गलत प्रभाव दे सकता है httpd नहीं चल रहा है।

इसके अलावा, मुझे यकीन नहीं है कि दोनों मामलों में अलग-अलग या समान कॉन्फ़िगरेशन लोड किए गए हैं। मैंने PHP स्थापित किया और DocumentRoot निर्देशिका में phpinfo के साथ test.php फ़ाइल बनाई। यदि आप sudo के साथ अपाचे शुरू करते हैं, तो आप स्थानीय होस्ट / test.php के साथ phpinfo देख सकते हैं। काढ़ा सेवा शुरू करते समय httpd आपको त्रुटि देगा यदि DocumentRoot उस क्षेत्र में है जहां रूट एक्सेस की आवश्यकता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.