उबंटू 14.04 में अपग्रेड करने के बाद मेरी अपाचे काम क्यों नहीं कर रही है?


36
[aman@aman-Inspiron-1440:~$ apache2
[Mon Apr 21 17:36:38.019213 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Mon Apr 21 17:36:38.019345 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Mon Apr 21 17:36:38.019370 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Mon Apr 21 17:36:38.019385 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Mon Apr 21 17:36:38.019414 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.028756 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029032 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Mon Apr 21 17:36:38.029056 2014] [core:warn] [pid 4134] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf:
Invalid Mutex directory in argument file:${APACHE_LOCK_DIR}

यह/etc/apache2/apache2.conf फ़ाइल की सामग्री है ।


3
यह काम नहीं कर रहा है क्योंकि आपके पास /etc/apache2/apache2.conf की लाइन 74 पर सिंटैक्स त्रुटि है । कृपया, उस फ़ाइल की सामग्री को अपलोड करें कि क्या गलत है।
लुसियो

2
कल से गूगल सर्च कर रहे हैं,
अमनदीप सिंह

फ़ाइल को यहां अपलोड किया गया: pastebin.ubuntu.com/7298873
अमनदीप सिंह


क्या मुझे / var / www को / var / www / html में स्थानांतरित करने की आवश्यकता है ??
अमनदीप सिंह

जवाबों:


31

मुझे यह समस्या थी: इसका कारण फ़ाइल में है

/etc/apache2/sites-available/000-default.conf 

जहां रूट बदल गया है:

उन्नयन से पहले = उन्नयन के /var/www
बाद =/var/www/html

इसलिए इस फ़ाइल को संशोधित करने के लिए संपादित करें

sudo gedit /etc/apache2/sites-available/000-default.conf

और अपाचे को पुनरारंभ करें

sudo service apache2 restart

जैसा कि यह एक समस्या है जो ओपी का सामना कर सकता है, यह इस समय वह समस्या नहीं है। किसी भी स्थिति में, जैसा कि मैंने इस उत्तर में बताया है , मैं 000-default.confफ़ाइल को संपादित करने की अनुशंसा नहीं करता।
दान

/ Var / www / html
अमनदीप सिंह

2
+1 या तो मैं इसका पता नहीं लगा सका। आप ही है वह आदमी!
gion_13

2
मेरे मामले में मैं अभी भी इस मुद्दे पर हूँ और htmlसबफ़ोल्डर पहले से मौजूद है, जो मेरे मामले में वास्तव में अप्रासंगिक है क्योंकि मेरी सभी साइटें VirtualHosts का उपयोग करती हैं
jhbsk

4
यह जवाब नहीं हो सकता है! ऊपर की त्रुटि DocumentRootसेटिंग से असंबंधित है ।
रेनियर पोस्ट

50

मुझे यह समस्या तब भी थी जब अपाचे मेरे लिए काम कर रहे थे। मैं बस एक त्वरित करना चाहता था

$ /usr/sbin/apache2 -V

के मूल्य को खोजने के लिए SERVER_CONFIG_FILE। क्योंकि यह अपाचे 2 को शुरू करने का तरीका नहीं है, यह ओपी पदों की त्रुटियों के साथ विफल हो जाता है। एक त्वरित और गंदा काम केवल उन दूतों को सेट करने के लिए है जो पहले गायब हैं:

$ source /etc/apache2/envvars
$ /usr/sbin/apache2 -V

यह APACHE_LOCK_DIR चर सेट करता है और सब कुछ ठीक है ( -D SERVER_CONFIG_FILE="apache2.conf")।


1
इसने मेरे लिए काम किया। एक ही मुद्दा, अपाचे चल रहा था और संचालन, फिर भी चल रहा apache2 -Sविफल रहा। सब तय हो गया।
ट्विस्टी

अजीब। यह मेरे लिए काम नहीं कर रहा था। यह समझ में आता है कि यह क्यों करना चाहिए
टायलर क्रॉम्पटन

@TylerCrompton - यह कैसे विफल हुआ? क्या त्रुटि थी?
लेन

इससे कोई फर्क नहीं पड़ा। मैं अभी भी उस मुद्दे का अनुभव कर रहा था जो ओपी के पास था। apache2जड़ के रूप में चल रहा है हालांकि समस्या को ठीक कर दिया।
टायलर क्रॉम्पटन

4
एक आसान विकल्प:apache2ctl -V
रेनियर पोस्ट

14

लक्षण और समाधान

कई प्रश्नोत्तर वेब साइटों या मंचों में, लोग लक्षणों और वास्तविक कारणों को भ्रमित करते हैं। मैंने सिर्फ 13.10 से 14.04.1 तक एक ubuntu सर्वर को अपग्रेड किया और ओपी द्वारा वर्णित सटीक समान लक्षणों में भाग गया, जिसमें शामिल हैं:
1- अपाचे जाहिरा तौर पर काम नहीं कर रहा है। 2- अपाचे कॉन्फ़िगरेशन चर अपरिभाषित। 3- ओपी द्वारा उल्लिखित वाक्यविन्यास त्रुटि।

समस्या यह है कि ये सभी लक्षण वास्तव में वास्तविक समस्या के लिए जर्मन नहीं हैं और वे केवल उन लोगों के लिए एक व्याकुलता का काम करते हैं जो मदद करने की पूरी कोशिश करते हैं।

विभिन्न मूल समस्याएं प्रशासकों को इस तरह की साइटों पर आने का कारण बन सकती हैं, जिनमें से लगभग एक ही विवरण है: "मैंने ओएस को उन्नत किया और अब अपाचे काम नहीं कर रहा है ..."

एक विशिष्ट कारण

ओपी के रूप में सभी एक ही स्पष्ट लक्षण होने के बाद, मैं इस सवाल से आकर्षित हुआ। दुर्भाग्य से, एकमात्र जवाब जिसमें मेरी समस्या के वास्तविक मूल कारण के लिए एक वैध संकेत था (1), 1 के प्रतिनिधि के साथ user1469291 द्वारा पोस्ट किया गया था !! इसलिए मैंने अन्य वेब साइटों को तब तक खोजा, जब तक मुझे समस्या का स्पष्ट स्पष्टीकरण नहीं मिला (और इस कारण समाधान)।

इसके बाद का समाधान ओपी की वास्तविक समस्या को हल नहीं कर सकता है, लेकिन मुझे यकीन है कि यह दूसरों की मदद करेगा जो इस प्रश्न के लिए उसी कारण आकर्षित हो सकते हैं जैसे मैं था।

/etc/apache2/apache2.conf में शामिल हैं:

# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf

# Include the virtual host configurations:
IncludeOptional sites-enabled/*.conf

जिसका अर्थ है कि / etc / apache2 / साइट्स-सक्षम / अंत में .conf में केवल साइट कॉन्फ़िगरेशन फ़ाइलें लोड हो जाएंगी। उस निर्देशिका में पुराने सिमिंकल को नजरअंदाज कर दिया जाएगा।

यह केवल साइटों-सक्षम / * हुआ करता था। यही कारण है कि मेरे सभी वर्चुअल होस्ट कॉन्फ़िगरेशन फ़ाइलें जिन्हें मैंने बस ww1.example.com, ww2.example.com, आदि नाम दिया है, काम करते थे, लेकिन अचानक और शुरू में उन्नयन के बाद काम करना बंद कर दिया।

तो, या तो ऊपर दिए गए निर्देश को बदल दें और अपाचे को फिर से लोड करें, या, जैसे मैंने किया था, मैन्युअल रूप से साइटों-सक्षम / में सभी पुराने सिम्बलिंक को हटा दें, और प्रत्यय को जोड़ने के लिए सभी साइटों को उपलब्ध / / फिर प्रत्यय को जोड़ दें। फिर प्रत्येक को फिर से सक्षम करें। व्यक्तिगत रूप से साइट।

इसके अलावा, apache.conf में डिफ़ॉल्ट निर्देश सख्त हैं:

<Directory />
  Options FollowSymLinks
  AllowOverride None
  Require all deny
</Directory>
<Directory /var/www/>
  Options Indexes FollowSymLinks
  AllowOverride None
  Require all granted
</Directory>

इसलिए यदि आप अपने वर्चुअल साइट्स को / home / user / कहीं पर होस्ट करते हैं, तो निर्देश को उचित तरीके से ओवरराइड करना सुनिश्चित करें।


1
यह एक अच्छा जवाब है। दौड़ने और शिकायत करने से पहले परिवर्तनों को समझने के लिए सबसे अच्छा है कि चीजें सही से काम नहीं करती हैं।
मिक गार्जेट

1
इसके लिए धन्यवाद, मुझे एहसास नहीं हुआ कि फ़ाइल का नामकरण साइट-सक्षम से सिमलिंक को हटा नहीं सका।
बेनो

यह एक समाधान प्रदान नहीं करता है।
रीनियर पोस्ट

6

आपकी समस्या को करीब से देखते हुए, आप बस चला रहे हैं apache2। उबंटू में अपाचे शुरू करने के लिए, निम्न कमांड चलाएं:

sudo apache2ctl start

अपाचे कॉन्फ़िगरेशन को कई फ़ाइलों में विभाजित किया गया है, उन फ़ाइलों में से एक पर्यावरण चर हैं। जब आप बस चला रहे होते हैं apache2, तो ये चर सेट नहीं होते हैं।

Apache2ctl स्क्रिप्ट चर को लोड करेगा (और जरूरत पड़ने पर कुछ अन्य सामान के साथ-साथ जब आवश्यक हो) शुरू करने से पहले apache2 -k start


1
#sudo apache2ctl स्टार्ट httpd (pid 1390) पहले से चल रहा है
अमनदीप सिंह

तो आपको क्या समस्या है?
डैन

@ अमनदीपसिंह: sudo apache2ctl restartइसके बजाय कोशिश करें ।
scheffield

1
@scheffield ने कई बार इस कमांड की कोशिश की। अपाचे के नए संस्करण / var / www से / var / www / html में रूट फ़ोल्डर स्थान परिवर्तन के कारण समस्या थी। मैंने सभी फ़ाइलों को एक सबफ़ोल्डर / html में स्थानांतरित कर दिया और यह काम किया।
अमनदीप सिंह

4

कॉन्फ़िगरेशन संपादित करें sudo leafpad /etc/apache2/apache2.conf:

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

या फ़ाइल को हटा दें।


+1। उत्तर को अस्वीकार कर दिया गया था लेकिन इसमें कई प्रशासकों की समस्या का समाधान था जो इस प्रश्न पर जा सकते हैं।
अगस्टिन

2

अगस्टिन के जवाब ने मेरे लिए काम किया जब मेरे सभी वर्चुअल होस्ट 12.04 LTS से 14.04 LTS के सर्वर अपग्रेड के बाद गायब हो गए। अगर मेरे पास ऐसा करने की प्रतिष्ठा होती तो मैं इसे बढ़ा देता।

निम्न आदेश .confसभी सिम्बलिंक में प्रत्यय जोड़ देगा /etc/apache2/sites-enabledजिसमें पहले से ही नहीं है:

sudo find /etc/apache2/sites-enabled -type l ! -name '*.conf' -exec rename 's/$/.conf/' {} \;

इसके अलावा, mod_authz_host मॉड्यूल में Allow from/ Deny fromसिंटैक्स का उपयोग करने से बदलाव आया है ( यहां 2.2 प्रलेखन के लिए लिंक है)।Require

निम्न आदेश का आम उपयोग संपादित करेंगे Order allow, denyजिसके बाद Allow from allहोने की Require all grantedबजाय:

perl -0777 -pi.bak -e 's/Order\s+allow\s*,\s*deny\s*\n\s*Allow\s+from\s+all/Require all granted/sg' /etc/apache2/sites-available/* 

1

वास्तव में, डॉकरॉट सटीक / भरोसेमंद से / var / www से / var / www / html के बीच बदलता है। यह खराब है कि डू-रिलीज़-अपग्रेड स्क्रिप्ट वापस डॉकरोट को वापस नहीं लाती है।

A) या तो मान्य है, लेकिन HTML अधिक पारंपरिक है। इस संबंध में CentOS प्रभावशाली है। "यह काम करता है" पृष्ठ अब और भी परिपक्व है।

बी) आपको / var / www / html का उपयोग करने की आवश्यकता नहीं है, लेकिन यदि आप करते हैं ...

  • आपको अपनी सामग्री को स्थानांतरित करने की आवश्यकता है या इसे उर्फ ​​(अनुशंसित नहीं)।
  • आपको पुराने स्थान को संदर्भित करने के लिए कहीं भी अपडेट करने की आवश्यकता है।
  • विशेष रूप से बैकअप / पुनर्स्थापना / अनुकूलन स्क्रिप्ट।

ग) और जमीन से ऊपर जाने और पलायन करने में आसान हो सकता है।

डी) यह लक्षण तब होगा जब आप भरोसेमंद, अपग्रेड या स्कोवर के दायरे में नहीं होने के कारण बॉक्स से बाहर "सुडो एपाचे 2 -क ग्रेसफुल" होंगे। इसके बजाय "sudo apache2ctl start / stop / पुनरारंभ" का उपयोग करें।


0

मेरे मामले में:

  • htmlपर सबफ़ोल्डर /var/www/पहले से ही अस्तित्व में है, लेकिन अभी भी मैं त्रुटि हो रही थी:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • मैंने पहले ही /home/{user}/sites/डिफ़ॉल्ट के बजाय अपनी वेबसाइट को अपने उपयोगकर्ता रूट में होस्ट करने का निर्णय लिया था/var/www/html
  • मैं Apache 2.4.7 का उपयोग कर रहा हूं (आप अपने संस्करण की जांच कर सकते हैं apache2 -v)

मैंने पाँच आसान चरणों में समस्या हल कैसे की:

  1. में /etc/apache2/apache2.confमैं लाइन 169 के बाद निम्नलिखित कहा:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. मैं सुनिश्चित किया मेरी वर्चुअल होस्ट विन्यास नामित website.confपर /etc/apache2/sites-availableडिफ़ॉल्ट से नकल किया गया था 000-default.conf, और इस तरह देखा:

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. मैंने अपनी साइट ( sudo a2dissite website && sudo a2ensite website) और मेरे सर्वर को पुनः लोड किया और प्रारंभिक त्रुटि हो गई। वू हू! लेकिन एक नया उभर कर आया: "AH00035: एक्सेस टू / इनकार (फाइल सिस्टम पथ '/ होम / {यूजर} / साइट्स') क्योंकि पथ के एक घटक पर खोज अनुमतियाँ गायब हैं"। यह मैंने चरण 4 में हल किया।

  4. नई समस्या अनुमतियों के कारण थी, इसलिए मैंने बस प्रत्येक निर्देशिका को websiteफ़ोल्डर में ले जाने के लिए सेट किया था chmod 755। हर एक! homeफ़ोल्डर, {user} फ़ोल्डर, साइटों फ़ोल्डर, और यहां तक कि मेरी वेबसाइट फ़ोल्डर

  5. website.devसब कुछ ठीक लोड पर मेरे ब्राउज़र ताज़ा करने के बाद !

पीएस मैं website.devअपनी /etc/hostsफाइल में पहले से ही सेटअप कर चुका था ।

बोनस टिप: किसी विशेष फ़ोल्डर की अनुमतियों की जांच करने के लिए आप कमांड का उपयोग कर सकते हैं stat -c %a /path/to/file/or/folder। एक निर्देशिका उपयोग के हर हिस्से की अनुमति की जांच करने के लिए namei -m /path/to/final/folder

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