[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
ファイルの内容です。
この問題が発生しました:原因はファイルにあります
/etc/Apache2/sites-available/000-default.conf
ルートが変更された場所:
アップグレード前= /var/www
アップグレード後= /var/www/html
このファイルを編集して修正します
Sudo gedit /etc/Apache2/sites-available/000-default.conf
Apacheを再起動します
Sudo service Apache2 restart
Apacheが私のために働いていたにもかかわらず、私はこの問題を抱えていました。簡単にしたかっただけです
$ /usr/sbin/Apache2 -V
SERVER_CONFIG_FILE
の値を見つけます。これはApache2を起動する方法ではないため、OPがポストするエラーで失敗します。迅速で汚い回避策は、最初に不足しているenvvarを設定することです。
$ source /etc/Apache2/envvars
$ /usr/sbin/Apache2 -V
これにより、Apache_LOCK_DIR変数が設定され、すべて正常です(-D SERVER_CONFIG_FILE="Apache2.conf"
)。
多くのQ&A Webサイトまたはフォーラムでは、人々は症状と実際の原因を混同しています。 ubuntuサーバーを13.10から14.04.1にアップグレードしたところ、OPで説明されているまったく同じ症状が発生しました。
1- Apacheは動作していないようです。 2-未定義のApache構成変数。 3- OPが言及した構文エラー。
問題は、これらの症状のすべてが実際の問題と実際に密接な関係があるわけではなく、最善を尽くして助けようとする人々の注意をそらすだけであるということです。
さまざまなルートの問題により、管理者がほぼ同じ説明でこのようなサイトにアクセスする可能性があります。「OSをアップグレードしましたが、現在Apacheは動作していません...」
OPとまったく同じ見かけの症状があるので、この質問に惹かれました。残念ながら、私の問題の本当の根本原因に対する有効なヒントを含む唯一の答えは、1の担当者がuser1469291によって投稿された、ダウン投票(-1)でした。そのため、問題の明確な説明(およびそれによって解決策)が見つかるまで、他のWebサイトをさらに検索しました。
以下の解決策はOPの本当の問題を解決しないかもしれませんが、私と同じ理由でこの質問に惹かれるかもしれない他の人を助けると確信しています。
/etc/Apache2/Apache2.confには以下が含まれます。
# Include generic snippets of statements
IncludeOptional conf-enabled/*.conf
# Include the virtual Host configurations:
IncludeOptional sites-enabled/*.conf
つまり、.confで終わる/ etc/Apache2/sites-enabled /内のサイト構成ファイルのみがロードされます。そのディレクトリ内の古いシンボリックリンクは無視されます。
以前は単にサイト対応/ *でした。そのため、単にww1.example.com、ww2.example.comなどと名前を付けた仮想ホスト構成ファイルはすべて、以前は動作していましたが、アップグレード後に突然、最初は不可解に動作を停止しました。
したがって、上記のディレクティブを変更してApacheをリロードするか、または私がしたように、sites-enabled /の古いシンボリックリンクをすべて手動で削除し、sites-available /のすべてのファイルの名前を変更してサフィックス.confを追加してから、それぞれを再度有効にします個別にサイト。
さらに、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/somewhereにホストする場合は、ディレクティブを適切にオーバーライドしてください。
あなたの問題をよく見ると、あなたはただApache2
を実行しています。 UbuntuでApacheを起動するには、次のコマンドを実行します。
Sudo Apache2ctl start
Apacheの構成は複数のファイルに分割され、それらのファイルの1つは環境変数です。 Apache2
だけを実行している場合、これらの変数は設定されません。
Apache2ctlスクリプトは、Apache2 -k start
でApacheを起動する前に変数をロードします(必要に応じて他の処理も行います)。
設定を編集します:Sudo leafpad /etc/Apache2/Apache2.conf
:
# Include the virtual Host configurations:
#before upgrade =
IncludeOptional sites-enabled/*
#after upgrade =
/IncludeOptional sites-enabled/*.conf
またはファイルを削除します。
augustinの answer は、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
構文の使用からRequire
への変更がありました。 module( here は2.2ドキュメントのリンクです)。
次のコマンドは、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/*
実際、docrootは/ var/wwwから/ var/www/htmlに正確で信頼できるものに変更されます。 do-release-upgradeスクリプトがdocrootを後退させないことは良くありません。
A)どちらも有効ですが、htmlはより一般的です。 CentOSはこの点で影響力があります。 「機能する」ページもより成熟しました。
B)/ var/www/htmlを使用する必要はありませんが、使用する場合は...
C)そして、ゼロから構築して移行する方が簡単かもしれません。
D)この症状は、envvarsがスコープ内にないため、Trusty、アップグレードの有無に関係なく、「Sudo Apache2 -k graceful」の場合に発生します。代わりに「Sudo Apache2ctl start/stop/restart」を使用してください。
私の場合:
/var/www/
のhtml
サブフォルダーは既に存在しましたが、まだエラーが発生していました:AH00526: Syntax error on line 74 of /etc/Apache2/Apache2.conf
/home/{user}/sites/
の代わりに/var/www/html
Apache2 -v
でバージョンを確認できます)5つの簡単な手順で問題を解決した方法:
/etc/Apache2/Apache2.conf
では、169行目の後に次を追加しました。
<Directory /home/{user}/sites/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
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>
サイト(Sudo a2dissite website && Sudo a2ensite website
)とサーバーをリロードし、最初のエラーはなくなりました。うわー!しかし、新しいものが出現しました:「AH00035:パスへのアクセスが拒否されました(ファイルシステムパス '/ home/{user}/sites')。パスのコンポーネントに検索権限がないためです」。これはステップ4で解決しました。
新しい問題は権限が原因であったため、website
フォルダーに至る各ディレクトリをchmod 755
に設定しました。ひとつひとつ! home
フォルダー、{user}フォルダー、sitesフォルダー、および私のWebサイトフォルダー
website.dev
でブラウザを更新した後、すべてが正常にロードされました!
P.S。website.dev
ファイルに/etc/hosts
を既に設定していました。
ボーナスヒント:特定のフォルダーの権限を確認するには、stat -c %a /path/to/file/or/folder
コマンドを使用できます。ディレクトリのすべての部分の権限を確認するには、namei -m /path/to/final/folder
を使用します。