VirtualHost conf फ़ाइल जोड़ने के बाद अपाचे पुनः आरंभ नहीं होगा, क्यों नहीं?


14

एक CentOS 7सर्वर में, मुझे निम्न त्रुटि मिलती है जब मैं टाइप करता हूं जब मैं sudo apachectl restartएक फ़ाइल को नीचे जोड़ता हूं httpd.conf:

Job for httpd.service failed. See 'systemctl status httpd.service' and 'journalctl -xn' for details.

जब मैं टाइप करता हूं sudo systemctl status httpd.service -l, तो परिणाम होता है:

httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 20:10:37 EST; 2min 15s ago
  Process: 2101 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 2099 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 2099 (code=exited, status=1/FAILURE)
   Status: "Total requests: 0; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 20:10:37 ip-address httpd[2099]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Dec 23 20:10:37 ip-address systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 20:10:37 ip-address systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 20:10:37 ip-address systemd[1]: Unit httpd.service entered failed state.

मैं प्राप्त कर सकते हैं apacheअगर मैं बाहर टिप्पणी के निर्देश शामिल पुनः आरंभ करने की है, और मैं अन-टिप्पणी के निर्देश शामिल करके फिर से त्रुटि को पुन: कर सकते हैं। मैं apacheशामिल फ़ाइल की सामग्री का उपयोग करके ठीक से शुरू करने के लिए कैसे प्राप्त कर सकता हूं ?

उस रेखा के नीचे httpd.confस्थित त्रुटि को ट्रिगर करता है IncludeOptional sites-enabled/*.conf:। फ़ोल्डर .confमें एकमात्र फ़ाइल sites-enabledहै mydomain.com.conf, जिसमें निम्न सामग्री है:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
    ErrorLog /var/www/mydomain.com/error.log
    CustomLog /var/www/mydomain.com/requests.log combined
</VirtualHost>

httpd.confक्या साथ पहले से स्थापित आता है के रूप में ही है httpd, एक पंक्ति को छोड़कर ऊपर के निर्देश शामिल हैं। मुझे पता है क्योंकि मैंने इस त्रुटि को ट्रिगर करने से पहले किया था sudo yum remove httpd mod_sslऔर sudo yum install httpd mod_sslठीक है। पूरे httpd.confएक फाइल शेयरिंग साइट पर पढ़ा जा सकता है इस लिंक पर क्लिक करके

जब मैंने इस ट्यूटोरियल के चरणों का स्पष्ट रूप से पालन किया तो मुझे इस समस्या का सामना करना पड़ा ।

जब मैं शामिल फ़ाइल को टिप्पणी करता हूं, तो http/mydomain.comस्थित स्थैतिक सामग्री को सफलतापूर्वक काम करता है /var/www/html, जो कि इसमें DocumentRootपरिभाषित है httpd.conf। समस्या VirtualHostऊपर दिखाई गई फ़ाइल में निर्देश से आ रही है । निदान में सहायता के लिए, मैंने EDIT # 3 को नीचे दी गई सभी .confफ़ाइलों के लिंक के साथ शामिल किया है जो तीनों में सम्‍मिलित हैं जिसमें निर्देश शामिल हैं httpd.conf

EDIT # 1

जब मैं /etc/hostnameपरिभाषित करने के लिए m32 की सलाह को परिभाषित करने की कोशिश करता हूं mydomain.com, तब apacheभी पुनरारंभ नहीं होगा, और systemctl status httpd.serviceनिम्नलिखित में परिणाम:

[sudo_user_account@server-ip-address ~]$ sudo systemctl status httpd.service -l
httpd.service - The Apache HTTP Server
   Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled)
   Active: failed (Result: exit-code) since Tue 2014-12-23 14:25:35 EST; 20s ago
  Process: 31993 ExecStop=/bin/kill -WINCH ${MAINPID} (code=exited, status=0/SUCCESS)
  Process: 31991 ExecStart=/usr/sbin/httpd $OPTIONS -DFOREGROUND (code=exited, status=1/FAILURE)
 Main PID: 31991 (code=exited, status=1/FAILURE)
   Status: "Total requests: 1; Current requests/sec: 0; Current traffic:   0 B/sec"

Dec 23 14:25:35 hostname systemd[1]: httpd.service: main process exited, code=exited, status=1/FAILURE
Dec 23 14:25:35 hostname systemd[1]: Failed to start The Apache HTTP Server.
Dec 23 14:25:35 hostname systemd[1]: Unit httpd.service entered failed state.  

EDIT # 2

मैंने अपनी /etc/hostsफ़ाइल की सामग्री को बदलने के लिए eyoung100 की सलाह की कोशिश की , जैसा कि निम्नलिखित छवि में परिभाषित किया गया है, लेकिन मुझे अभी भी EDIT # 1 में परिभाषित वही त्रुटि मिलती है।

संपादित करें # 3

डेरेक के अनुरोध के अनुसार, मैं दौड़ा sudo apachectl configtestऔर गया:

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message
Syntax OK

इसके अलावा, गैरेथ.रेड के सुझाव के अनुसार, मैंने httpd.conf में शामिल निर्देशों की जांच की । Httpd.conf में तीन शामिल निर्देश हैं । मैंने नीचे तीनों को सूचीबद्ध किया है, साथ ही प्रत्येक निर्देश के फ़ोल्डर में स्थित सभी फाइलें। ये सभी मानक .confफ़ाइलें हैं, जिनके साथ इंस्टॉल की गई हैं httpd। मैंने उनमें से किसी को अभी तक संशोधित नहीं किया है। आप .confनीचे दिए गए लिंक पर क्लिक करके फ़ाइल साझा करने वाली साइट पर प्रत्येक फाइल देख सकते हैं:

Include conf.modules.d/*.confनिम्न फ़ाइलों को conf.modules.dनिर्देशिका में संदर्भित करता है : 00-base.conf
00-dav.conf
00-lua.conf
00-mpm.conf
00 -xy.conf
00-ssl.conf
00-systemd.conf
01-cgi.conf

IncludeOptional conf.d/*.confconf.dनिर्देशिका में निम्न फ़ाइलों का संदर्भ देता है : autoindex.conf
ssl.conf
userdir.conf
welcome.conf
एक README फाइल भी है जिसे मैं यहां छोड़ रहा हूं।

इसके अलावा, IncludeOptional sites-enabled/*.confनिर्देश और यह सामग्री ऊपर ओपी में अच्छी तरह से उल्लिखित थी।

क्या इनमें से किसी में VirtualHostसेटिंग्स के साथ परस्पर विरोधी फाइलें शामिल हैं mydomain.com.conf?

संपादित करें # 4

GarethTheRed के सुझाव के अनुसार, मैं डायरेक्टरी में चला mydomain.com.confगया conf.dऔर फिर mydomain.com.confएक-एक करके लाइनों को तब तक कमेंट करना शुरू किया जब तक httpdकि रीस्टार्ट नहीं हो पाया। मैंने तब अन-कमेंटिंग लाइन्स शुरू कीं, यह देखने के लिए कि कितनी लाइन्स रह सकती हैं और httpdअभी भी रीस्टार्ट हैं। मैं httpdपुनः आरंभ करने में सक्षम था , लेकिन systemctl status httpd.service -lउसी चेतावनी का उत्पादन जारी रखता हूं :

AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::e23f:49ff:feb7:2a21. Set the 'ServerName' directive globally to suppress this message

VirtualHostवाक्य रचना कि अनुमति देता है httpdशुरू करने के लिए (हालांकि इसके बाद के संस्करण चेतावनी उत्पन्न करने के लिए जारी रखने के) के रूप में इस प्रकार है:

<VirtualHost *:80>
    ServerName www.mydomain.com
    ServerAlias mydomain.com
    DocumentRoot /var/www/mydomain.com/public_html
</VirtualHost>  

ध्यान दें कि मुझे निम्नलिखित पंक्तियों को छोड़ना था, जिनकी उपस्थिति http शुरू करने में पूर्ण अक्षमता में चेतावनी को बढ़ाती है:

# ErrorLog /var/www/mydomain.com/error.log
# CustomLog /var/www/mydomain.com/requests.log combined

इसके अलावा, मैं भाग गया sudo journalctl -xelu httpdऔर टर्मिनल ने कई बार दोहरा कर जवाब दिया:

-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:43 server-ip-address systemd[1]: Stopped The Apache HTTP Server.
-- Subject: Unit httpd.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished shutting down.
Dec 24 17:48:48 server-ip-address systemd[1]: Starting The Apache HTTP Server...
-- Subject: Unit httpd.service has begun with start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has begun starting up.
Dec 24 17:48:48 server-ip-address httpd[10364]: AH00558: httpd: Could not reliably d
Dec 24 17:48:48 server-ip-address systemd[1]: Started The Apache HTTP Server.
-- Subject: Unit httpd.service has finished start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
-- 
-- Unit httpd.service has finished starting up.
-- 
-- The start-up result is done.
lines 887-909/909 (END)

नोट: उपरोक्त परिणाम समान हैं चाहे मैं eyoung100 के होस्ट फ़ाइल या m32 की होस्ट फ़ाइल का उपयोग करूं। इस प्रश्न का उत्तर देने के लिए, मुझे लगता है कि मुझे लॉग फाइल बनाने में सक्षम होना चाहिए और सर्वरनेम चेतावनी से भी बचना चाहिए। अन्यथा, मुझे डर है कि httpd को कॉन्फ़िगर करने के बाद के चरणों से भाषाई त्रुटियों का खतरा होगा।


1
जब आप एक ServerNameनिर्देश जोड़ते हैं तो क्या सटीक "नेबुलस" त्रुटि उत्पन्न होती है ? इसे अपने प्रश्न में जोड़ें।
wurtel

1
का आउटपुट क्या है apachectl configtest?
डेरेक डिक

क्या IncludeOptionalमूल httpd.confफ़ाइल के अंत में कोई है ? मेरा मानना ​​है कि एक डिफ़ॉल्ट इंस्टॉल पर है। मुद्दा यह हो सकता है कि आप IncludeOptionalअंत में अतिरिक्त जोड़ रहे हैं जो apacheसम्मिलित कॉन्फ़िगरेशन फ़ाइल को दो बार पढ़ने के लिए मजबूर करता है और इसके परिणामस्वरूप विफल हो जाता है।
garethTheRed

एक शुरुआत के लिए, आप अपने बढ़ने की जरूरत है mydomain.com.confके लिए /etc/httpd/conf.d(जहां अन्य सभी कर रहे हैं) और हटाना /etc/httpd/sites-enabled(है कि एक Debian / Ubuntu बात है) और IncludeOptionalआप को जोड़ा गया httpd.conf। आप AH00558अभी के लिए संदेश को अनदेखा कर सकते हैं क्योंकि यह बंद नहीं होता है apache। अगली बार अपनी confफ़ाइल से एक पंक्ति निकालें जब तक कि आप अपराधी को नहीं ढूंढते (या वैकल्पिक रूप से, खाली एक के साथ शुरू करें और एक समय में एक पंक्ति को पुनर्स्थापित करें)।
गैरेथ.रेड

1
@garethTheRed और google का कोई भी व्यक्ति, आपको इनक्लूड साइट-इनेबल / * को हटाने की जरूरत नहीं है। वह एक लाल हेरिंग था। असली मुद्दा था लॉग फाइल जैसा कि नीचे garethTheRed द्वारा बताया गया है। मैं ओपी के रूप में एक ही ट्यूटोरियल का पालन किया और एक ही मुद्दा था। वर्चुअल होस्ट conf फ़ाइल से लॉग फ़ाइल लाइनों को हटाकर इसे ठीक किया।
लुईस एगलटन

जवाबों:


19

लॉग त्रुटियों का कारण बन रहे हैं क्योंकि apacheआपकी वेबसाइट की जड़ में नहीं लिख सकते हैं। यदि आप फ़ाइल अनुमतियाँ ठीक करने वाले थे, तब भी आपको SELinux द्वारा अवरुद्ध किया जाएगा; जो केवल apacheलॉग लिखने की अनुमति देता है /var/log/httpd। इस निर्देशिका में लॉग इन करने के लिए अपनी वेबसाइट को बदलने का सबसे आसान समाधान होगा - हो सकता है कि उस फ़ाइलनाम के साथ जिसमें वेबसाइट का नाम अन्य लॉग से अलग करने के लिए हो।

ErrorLog /var/log/httpd/mydomain_com_error.log
CustomLog /var/log/httpd/mydomain_com_requests.log combined

सर्वर का होस्टनाम सेट करने और AH00558 चेतावनी से छुटकारा पाने के लिए, बस उपयोग करें:

hostnamectl set-hostname --static <FQDN of your machine>

जैसे

hostnamectl set-hostname --static mydomain.com

मुझे एक और त्रुटि का सामना करना पड़ा क्योंकि मैं इस पर काम करना जारी रखता हूं। क्या आप इसके साथ मेरी मदद करने को तैयार हैं? यहाँ लिंक है: unix.stackexchange.com/questions/176052/…
21

2

मुझे यह त्रुटि तब मिली जब मैं मशीन के लिए होस्टनाम सेट करना भूल गया। क्या आपने ऐसा किया है?
यह आदेश चलाएँ:

echo 'example.com' >> /etc/hostname  

के साथ सत्यापित करें hostname

संपादित करें:
अद्यतन किए गए ओपी के साथ, ऐसा लगता है कि आपकी होस्ट फ़ाइल सेटअप सही नहीं है। यहाँ मेरा क्या दिखता है;

127.0.0.1 localhost.localdomain localhost
# Auto-generated hostname. Please do not remove this comment.
166.66.666.66 m32.me m32
::1     ip6-localhost ip6-loopback

इस तरह से कुछ सरल करने के लिए इसे स्थापित करने का प्रयास करें। बेशक, सभी जानकारी को अपने साथ बदलें। अपने डोमेन के
166.66.666.66साथ अपने खुद के आईपी के
m32.me and m32साथ, और TLD के बिना डोमेन


इसने समस्या को ठीक नहीं किया, मुझे अभी भी AH00558त्रुटि मिलती है जब मैं आपके ipऔर मेरे साथ मेजबान फ़ाइल का उपयोग करता हूं mydomain.com mydomain
कोडमेड
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.