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


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ファイルには何が含まれていますか?
-etagenklo

回答:


60
[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)がないことです。

変更できない場合は、ServerName変数をに変更/etc/apache2/apache2.confするlocalhostか、好みのFQDN に変更します。


1
あなたはinitスクリプトについて正しいです。次に(Ubuntuで常に使用されるとは限らないため)に追加ServerName localhostしましapache2.confhttpd.confが、すべて正常に機能するようになりました。回答に詳細を追加してください。そうすれば、承認済みのフラグを立てることができますか?
カートブルバキ

1
最初apache2ctlは私のために動作しませんでした、私はサービス使用する必要がありましたsudo service apache2 restart
エドゥアールロペス14

しかし、apache2そもそもなぜ彼らは命令を破ったのでしょうか?
reinierpost

2
このソリューションは解決するだけですがAH00558: apache2: Could not reliably determine the server's fully qualified domain name、解決しませんConfig variable ${APACHE_LOCK_DIR} is not defined
ウラジミールVukanac 16

私にとっても同じ問題が発生します。
indianwebdevil

84

次のように実行して、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"

/etc/apache2/envvars存在しません
マークリッチマン14

6
ファイルは私のubuntuシステム上に存在しますが、シェルはそれをシェルスクリプトとして認識しないので、これが必要です:source / etc / apache2 / envvars; apache2 -V
ベンクロウェル14

6
apachectl -V環境変数を手動でロードする代わりに使用できます。
サムSehnert

それでも機能しない場合は、上記の回答ごとに試すsource /etc/apache2/envvars && sudo -E apache2 -Vかログインしrootてください。sudoを使用する必要がある通常のユーザーにapache2 envをソースしても、「-E」なしでは機能しません。通常のユーザー権限では、他の問題の中でも特に証明書のプライベートフォルダーを読み取ることができません。エラーが発生します。sudo -Eを実行するか、rootアカウントで完全に実行する必要があります。
bshea

これは、Apacheをdocker foreground cmdとして実行するのに非常に便利です。例CMD . /etc/apache2/envvars; /usr/sbin/apache2 -DFOREGROUND
アラステアマコーマック

7

/etc/apache2/envvarsAPACHE_LOCK_DIRを確認してください。私のUbuntu 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'ディレクティブをグローバルに設定して、このメッセージを抑制します

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

onlyを使用して別の方法で実行しようとすると、前述の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.