Apache2 config चर परिभाषित नहीं किया गया है


65

मैंने ubuntu 13.10 पर apache2 स्थापित किया। यदि मैं इसका उपयोग करके पुनः आरंभ करने का प्रयास करता हूं

sudo /etc/init.d/apache2 restart

मुझे यह संदेश मिला:

AH00558: apache2: 127.0.1.1 का उपयोग करते हुए सर्वर के पूर्ण रूप से योग्य डोमेन नाम का निश्चित रूप से निर्धारण नहीं कर सका। इस संदेश को दबाने के लिए विश्व स्तर पर 'ServerName' निर्देश सेट करें

इसलिए मैंने पढ़ा कि मुझे अपनी httpd.confफ़ाइल को संपादित करना चाहिए । लेकिन, जब से मैं इसे /etc/apache2/फ़ोल्डर में नहीं पा रहा हूं, मैंने इस कमांड का उपयोग करके इसे खोजने की कोशिश की:

/usr/sbin/apache2 -V

लेकिन मुझे जो आउटपुट मिलता है वह यह है:

[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined
[Fri Nov 29 17:35:43.942560 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_PID_FILE} is not defined
[Fri Nov 29 17:35:43.942602 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_USER} is not defined
[Fri Nov 29 17:35:43.942613 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_RUN_GROUP} is not defined
[Fri Nov 29 17:35:43.942627 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.947913 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948051 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOG_DIR} is not defined
[Fri Nov 29 17:35:43.948075 2013] [core:warn] [pid 14655] 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}

लाइन 74 /etc/apache2/apache2.confइस प्रकार है:

Mutex file:${APACHE_LOCK_DIR} default

मैंने अपनी /etc/apache2/envvarफ़ाइल पर एक नज़र दी , लेकिन मुझे नहीं पता कि इसके साथ क्या करना है।

मुझे क्या करना चाहिए?


आपकी envvars फ़ाइल में क्या है?
इथेनाक्लो

जवाबों:


60
[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${APACHE_LOCK_DIR} is not defined

यह संदेश प्रदर्शित होता है क्योंकि आपने सीधे Apache2 बाइनरी को निष्पादित किया है। उबंटू / डेबियन में अपाचे कॉन्फिगर एन्वार फाइल पर निर्भर करता है जो केवल सक्रिय है।

यदि आप init स्क्रिप्ट या अपाचेक्टल के साथ अपाचे शुरू करते हैं।

आपकी मूल समस्या यह है कि आपके पास अपनी मशीन के लिए कोई उचित होस्टनाम (fqdn) नहीं है।

यदि आप इसे नहीं बदल सकते हैं, तो ServerNameचर /etc/apache2/apache2.confको localhostया अपने पसंदीदा FQDN में बदल दें।


1
आप init स्क्रिप्ट के बारे में सही हैं। तब मैं जोड़ा ServerName localhostकरने के लिए apache2.conf(क्योंकि httpd.confहमेशा Ubuntu पर नहीं किया जाता है) और अब सब कुछ एकदम सही ढंग से काम करता है। क्या आप कृपया अपने उत्तरों में विवरण जोड़ सकते हैं, ताकि मैं इसे स्वीकार कर सकूं?
कर्ट बॉर्बकी

1
apache2ctlमेरे साथ काम करने की शुरुआत नहीं हुई, मुझे सेवा का उपयोग करना पड़ा :sudo service apache2 restart
Ldouard Lopez

लेकिन उन्होंने apache2पहले ही आदेश को क्यों तोड़ दिया ?
रीइनियरियरपोस्ट

2
यह समाधान केवल हल AH00558: apache2: Could not reliably determine the server's fully qualified domain nameकरता है लेकिन यह हल नहीं करता है Config variable ${APACHE_LOCK_DIR} is not defined
व्लादिमीर वुकानैक

मेरे लिए भी मैं यही मुद्दा देखता हूं।
indianwebdevil

84

इसे इस तरह से चलाकर अपने दूतों को स्रोत दें:

source /etc/apache2/envvars

और फिर

/usr/sbin/apache2 -V

आपको मिलना चाहिये:

el@apollo:/home/el$ apache2 -V
Server version: Apache/2.4.7 (Ubuntu)
Server built:   Apr  3 2014 12:20:28
Server's Module Magic Number: 20120211:27
Server loaded:  APR 1.5.1-dev, APR-UTIL 1.5.3
Compiled using: APR 1.5.1-dev, APR-UTIL 1.5.3
Architecture:   64-bit
Server MPM:     prefork
  threaded:     no
    forked:     yes (variable process count)
Server compiled with....
 -D APR_HAS_SENDFILE
 -D APR_HAS_MMAP
 -D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
 -D APR_USE_SYSVSEM_SERIALIZE
 -D APR_USE_PTHREAD_SERIALIZE
 -D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
 -D APR_HAS_OTHER_CHILD
 -D AP_HAVE_RELIABLE_PIPED_LOGS
 -D DYNAMIC_MODULE_LIMIT=256
 -D HTTPD_ROOT="/etc/apache2"
 -D SUEXEC_BIN="/usr/lib/apache2/suexec"
 -D DEFAULT_PIDLOG="/var/run/apache2.pid"
 -D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
 -D DEFAULT_ERRORLOG="logs/error_log"
 -D AP_TYPES_CONFIG_FILE="mime.types"
 -D SERVER_CONFIG_FILE="apache2.conf"

/etc/apache2/envvarsमौजूद नहीं है
मार्क रिचमैन

6
फ़ाइल मेरे ubuntu प्रणाली पर मौजूद है, लेकिन शेल इसे शेल स्क्रिप्ट के रूप में नहीं पहचानता है, इसलिए मुझे इसकी आवश्यकता है: स्रोत / etc / apache2 / envvars; apache2 -V
बेन क्रुएल

6
apachectl -Vमैन्युअल रूप से पर्यावरण चर में लोड करने के बजाय उपयोग कर सकते हैं ।
सैम सेहर्ट

यदि अभी भी काम नहीं कर रहा है, तो प्रयास करें source /etc/apache2/envvars && sudo -E apache2 -Vया rootऊपर दिए गए उत्तर के अनुसार लॉगिन करें । Apache2 env को एक नियमित उपयोगकर्ता के लिए सोर्स करना जो कि sudo का उपयोग करने की आवश्यकता है w / o "-E" काम नहीं करेगा। अन्य समस्याओं के बीच नियमित उपयोगकर्ता परमिट प्रमाणपत्र निजी फ़ोल्डर नहीं पढ़ सकते हैं। आपको एक त्रुटि मिलेगी। आपको sudo -E या रूट अकाउंट के तहत पूरी तरह से चलाने की आवश्यकता है।
bshea

यह अपाचे को डॉक अग्रभूमि cmd के रूप में चलाने के लिए बहुत उपयोगी है। जैसेCMD . /etc/apache2/envvars; /usr/sbin/apache2 -DFOREGROUND
एलेस्टर मैककॉर्मैक

7

/etc/apache2/envvarsAPACHE_LOCK_DIR के लिए अपनी जाँच करें । मेरे Ubuntu 12.04 में, यह /var/lock/apache2$SUFFIXSUFFIX सामान्य रूप से खाली है।

जाँचें कि क्या निर्देशिका मौजूद है और वह योग्य है।

क्या यह हो सकता है कि एन्वार फाइल सही ढंग से उपलब्ध नहीं है? यदि आप पर एक नजर है /etc/init.d/apache2तो आप देख सकते हैं कि यह खट्टा है।

मेरा (डिफ़ॉल्ट) /etc/apache2/envvars:

# envvars - default environment variables for apache2ctl

# this won't be correct after changing uid
unset HOME

# for supporting multiple apache2 instances
if [ "${APACHE_CONFDIR##/etc/apache2-}" != "${APACHE_CONFDIR}" ] ; then
    SUFFIX="-${APACHE_CONFDIR##/etc/apache2-}"
else
    SUFFIX=
fi

# Since there is no sane way to get the parsed apache2 config in scripts, some
# settings are defined via environment variables and then used in apache2ctl,
# /etc/init.d/apache2, /etc/logrotate.d/apache2, etc.
export APACHE_RUN_USER=www-data
export APACHE_RUN_GROUP=www-data
export APACHE_PID_FILE=/var/run/apache2$SUFFIX.pid
export APACHE_RUN_DIR=/var/run/apache2$SUFFIX
export APACHE_LOCK_DIR=/var/lock/apache2$SUFFIX
# Only /var/log/apache2 is handled by /etc/logrotate.d/apache2.
export APACHE_LOG_DIR=/var/log/apache2$SUFFIX

## The locale used by some modules like mod_dav
export LANG=C
## Uncomment the following line to use the system default locale instead:
#. /etc/default/locale

export LANG

## The command to get the status for 'apache2ctl status'.
## Some packages providing 'www-browser' need '--dump' instead of '-dump'.
#export APACHE_LYNX='www-browser -dump'

## If you need a higher file descriptor limit, uncomment and adjust the
## following line (default is 8192):
#APACHE_ULIMIT_MAX_FILES='ulimit -n 65536'

अगर कुछ भी काम नहीं करता है तो मैं पैकेज को पुनः स्थापित करने का प्रयास करूंगा।


2

जैसा कि अन्य ने कहा, आपको अपने पर्यावरण को सीधे चलाने से पहले (स्रोत) लोड करना होगा एक और विकल्प का उपयोग करना है: apache2ctlउदा

sudo apache2ctl -S

मेरे यजमानों को धूल चटाना


2

टी एल; डॉ; आपको पहले से जो है, उसका उपयोग करके अपाचे 2 शुरू करना चाहिए:

sudo /etc/init.d/apache2 {start|stop|restart}

विस्तृत:

AH00558: apache2: 127.0.1.1 का उपयोग करते हुए सर्वर के पूर्ण रूप से योग्य डोमेन नाम का निश्चित रूप से निर्धारण नहीं कर सका। इस संदेश को दबाने के लिए विश्व स्तर पर 'ServerName' निर्देश सेट करें

इस संदेश का अर्थ है कि आपको अपने सर्वर नाम / डोमेन नाम को परिभाषित करने की आवश्यकता है। यह एक स्थानीयहोस्ट / उत्पादन के परीक्षण के लिए आवश्यक नहीं है, आपको इसके बारे में चिंता करने की आवश्यकता नहीं है।

जब आप इसे दूसरे तरीके से चलाने का प्रयास करते हैं apache2, केवल का उपयोग करके , आपको उन त्रुटि संदेशों को प्राप्त होगा जो पहले कहा गया था: जब आप डिफ़ॉल्ट स्क्रिप्ट का उपयोग करना शुरू करते हैं तो पर्यावरण चर परिभाषित किए जाते हैं init.d


-1

शायद इससे आपकी समस्या दूर हो जाएगी

sudo bash -c '. /etc/apache2/envvars ; apache2'

1
पहले पढ़ें, बिल्कुल यह पंक्ति पहले ही प्रदान की गई थी, और यह भी समझाया गया था, कि यह एक सही उत्तर क्यों नहीं है।
asdmin

-2

आपको DocumentRoot को से अपडेट /var/www/htmlकरना होगा/var/www

फ़ाइल /etc/apache2/sites-available/000-default.conf को निम्नानुसार संपादित करें

DocumentRoot /var/www

-2

यह मेरे लिए काम करता है

sudo -u root bash -c "source /etc/apache2/envvars; apache2 -V"

प्रश्न में, एक समस्या थी (ServerName के बारे में एक त्रुटि संदेश) और एक विफल डिबग विधि (जो पर्यावरण चर को सोर्स नहीं करने के कारण होती है)। आपका उत्तर डिबग विधि को संबोधित करता है, और प्रश्न नहीं।
asdmin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.