web-dev-qa-db-ja.com

Apache2構成変数が定義されていません

Apache2をubuntu 13.10にインストールしました。を使用して再起動しようとした場合

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}

/etc/Apache2/Apache2.confの74行目は次のとおりです:

Mutex file:${Apache_LOCK_DIR} default

/etc/Apache2/envvarファイルを確認しましたが、どうすればよいかわかりません。

私は何をすべきか?

68
Kurt Bourbaki
[Fri Nov 29 17:35:43.942472 2013] [core:warn] [pid 14655] AH00111: Config variable ${Apache_LOCK_DIR} is not defined

このメッセージは、Apache2バイナリを直接実行したために表示されます。 Ubuntu/Debianでは、Apacheの設定は、アクティブ化のみされるenvvarファイルに依存しています。

Initスクリプトまたはapachectlを使用してApacheを起動した場合。

元の問題は、マシンに適切なホスト名(fqdn)がないことです。

変更できない場合は、/etc/Apache2/Apache2.confServerName変数をlocalhostまたはお好みのFQDNに変更します。

62
ah83

次のように実行して、envvarsを入手します。

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"
89
nadavkav

/etc/Apache2/envvars(Apache_LOCK_DIR用)。私のUbuntu 12.04では、これは/var/lock/Apache2$SUFFIX、通常はSUFFIXです。

ディレクトリが存在し、書き込み可能かどうかを確認してください。

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'

何もうまくいかない場合は、パッケージを再インストールしようとします。

7
erny

他の人が言ったように、直接実行する前に環境をロード(ソース)する必要があります。別のオプションはApache2ctlを使用することです。

Sudo Apache2ctl -S

私のホストをダンプする

2
amd

TL; DR;すでに持っているものを使用してApache2を起動する必要があります。

Sudo /etc/init.d/Apache2 {start|stop|restart}

詳細:

AH00558:Apache2:127.0.1.1を使用して、サーバーの完全修飾ドメイン名を確実に特定できませんでした。 'ServerName'ディレクティブをグローバルに設定して、このメッセージを抑制します

このメッセージは、サーバー名/ドメイン名を定義する必要があることを意味します。ローカルホストや本番環境のテストでこれを行うことは必須ではありません。心配する必要はありません。

Apache2のみを使用して別の方法で実行しようとすると、前述の理由により、これらのエラーメッセージが表示されます。環境変数は、init.dのデフォルトスクリプトの使用を開始すると定義されます。

2
George