Apache2 구성 변수가 정의되지 않았습니다


65

우분투 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 파일에 무엇입니까?
etagenklo

답변:


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

이 메시지는 apache2 2 진을 직접 실행했기 때문에 표시됩니다. Ubuntu / Debian에서 Apache 구성은 활성화 된 envvar 파일에 의존합니다.

init 스크립트 또는 apachectl로 아파치를 시작하는 경우

원래 문제는 시스템에 적합한 호스트 이름 (fqdn)이 없다는 것입니다.

당신이 그것을 변경할 수없는 경우, 변경 ServerName에 변수 /etc/apache2/apache2.conflocalhost또는 선호하는 FQDN.


1
당신은 init 스크립트에 대해 옳습니다. 그럼 추가 ServerName localhostapache2.conf(때문에 httpd.conf항상 우분투에서 사용되지 않습니다) 지금은 모든 것이 예상대로 작동합니다. 답변에 세부 정보를 추가하여 허용 된 것으로 표시 할 수 있습니까?
커트 부르 바키

1
로 시작해서 apache2ctl나를 위해 작동하지 않았다, 나는 서비스사용해야했다 :sudo service apache2 restart
Édouard Lopez

그러나 그들은 왜 apache2처음부터 명령을 어겼습니까?
reinierpost

2
이 솔루션은 해결 AH00558: apache2: Could not reliably determine the server's fully qualified domain name만되지만 해결 되지는 않습니다 Config variable ${APACHE_LOCK_DIR} is not defined.
Vladimir Vukanac

나에게도 같은 문제가 있습니다.
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존재하지 않음
Mark Richman

6
파일이 우분투 시스템에 존재하지만 셸이 셸 스크립트로 인식하지 못하므로 다음이 필요합니다. source / etc / apache2 / envvars; apache2 -V
Ben Crowell

6
apachectl -V환경 변수를 수동으로로드 하는 대신 사용할 수 있습니다.
Sam Sehnert

여전히 작동하지 않으면 위와 같이 답변을 시도 source /etc/apache2/envvars && sudo -E apache2 -V하거나 로그인하십시오 root. sudo를 사용해야하는 일반 사용자에게 apache2 env를 소싱하면 "-E"없이 작동하지 않습니다. 일반 사용자 권한은 다른 문제 중에서 인증서 개인 폴더를 읽을 수 없습니다. 오류가 발생합니다. sudo -E를 수행하거나 루트 계정으로 완전히 실행해야합니다.
bshea

이것은 docker foreground cmd로 Apache를 실행하는 데 매우 유용합니다. 예 :CMD . /etc/apache2/envvars; /usr/sbin/apache2 -DFOREGROUND
Alastair McCormack

7

/etc/apache2/envvarsAPACHE_LOCK_DIR을 확인하십시오 . 내 우분투 12.04에서 이것은 /var/lock/apache2$SUFFIXSUFFIX가 일반적으로 비어 있습니다.

디렉토리가 존재하고 쓰기 가능한지 확인하십시오.

envvars 파일이 올바르게 소스되지 않았을 수 있습니까? 당신이 살펴보면 /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

TL; DR; 이미 가지고있는 것을 사용하여 apache2를 시작해야합니다.

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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.