Ubuntu 14.04にアップグレードした後、Apacheが機能しないのはなぜですか?


36
[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ファイルの内容です。


3
/etc/apache2/apache2.confの74行目に構文エラーがあるため、機能していません。そのファイルのコンテンツをアップロードして、何が問題なのかを確認してください。
ルシオ14

2
昨日からグーグルを検索
アマンディープシン14

次の場所にファイルをアップロードしました:pastebin.ubuntu.com/7298873
アマンディープシン14


/ var / wwwを/ var / www / htmlに移動する必要がありますか??
アマンディープシン14

回答:


31

この問題が発生しました:原因はファイルにあります

/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

これはOPが直面する可能性のある問題であるため、これは彼が現在抱えている問題ではありません。どちらの場合も、この回答で説明したように000-default.confファイルを編集することはお勧めしません。
ダン14

/ var / www / htmlに移動した後の動作
アマンディープシン14

2
+1私もこれを理解できませんでした。あなたは男だ!
gion_13 14

2
私の場合、私はまだこの問題を抱えており、htmlサブフォルダは既に存在します。私の場合、すべてのサイトがVirtualHostsを使用しているため、実際には無関係
です-jhbsk

4
これは答えにはなりません!上記のエラーはDocumentRoot設定とは無関係です。
Reinierポスト

50

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")。


1
これは私のために働いた。同じ問題で、Apacheは実行中で動作していましたapache2 -Sが、実行は失敗しました。すべて修正済み。
Twisty

奇妙な。これは私には役に立たなかったようです。なぜそうすべきかについては理にかなっています。
タイラークロンプトン

@TylerCrompton-どのように失敗しましたか?エラーは何でしたか?
車線

違いはありませんでした。私はまだOPの問題を経験していました。apache2ただし、rootとして実行すると問題は解決しました。
タイラークロンプトン

4
簡単に代替:apache2ctl -V
Reinierポスト

14

症状と解決策

多くの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にホストする場合は、ディレクティブを適切にオーバーライドしてください。


1
これは良い答えです。急いで物事が正しく動作しないと不平を言う前に、変更を理解することが最善です。
MikeNGarrett 14

1
このおかげで、ファイル名を変更してもサイト対応のシンボリックリンクが削除されないことに気付きませんでした。
-Benno

これは解決策を提供しません。
Reinierポスト

6

あなたの問題をよく見ると、あなたはただ走っているだけapache2です。UbuntuでApacheを起動するには、次のコマンドを実行します。

sudo apache2ctl start

Apacheの構成は複数のファイルに分割され、それらのファイルの1つは環境変数です。justを実行している場合apache2、これらの変数は設定されていません。

apache2ctlスクリプトは、でapacheを開始する前に変数をロードします(必要に応じて他の処理も行います)apache2 -k start


1
#sudo apache2ctl start httpd(pid 1390)がすでに実行されている
シン14

では、あなたが抱えている問題は何ですか?
ダン14

@AmandeepSingh:sudo apache2ctl restart代わりに試してください。
シェフィールド14

1
@scheffieldこのコマンドを数回試しました。問題は、Apacheの新しいバージョンのルートフォルダーの場所が/ var / wwwから/ var / www / htmlに変更されたためです。すべてのファイルをサブフォルダー/ htmlに移動しましたが、うまくいきました。
アマンディープシン14

4

設定を編集しますsudo leafpad /etc/apache2/apache2.conf::

# Include the virtual host configurations:

#before upgrade = 
IncludeOptional sites-enabled/*
#after upgrade = 
/IncludeOptional sites-enabled/*.conf

またはファイルを削除します。


+1。答えは下がったが、この質問にアクセスする可能性のある多くの管理者の問題の解決策が含まれていた。
オースティン14

2

augustinの答えは、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/' {} \;

また、使用してから変更があったAllow from/のDeny fromに構文をRequiremod_authz_hostモジュール(ここでは 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/* 

1

実際、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」を使用してください。


0

私の場合:

  • htmlサブフォルダー/var/www/既に存在ていましたが、それでもエラーが発生しました:AH00526: Syntax error on line 74 of /etc/apache2/apache2.conf
  • たとえば/home/{user}/sites/、デフォルトではなく、ユーザールートでWebサイトをホストすることにしました。/var/www/html
  • Apache 2.4.7を使用しています(バージョンはで確認できますapache2 -v

5つの簡単な手順で問題を解決した方法:

  1. /etc/apache2/apache2.confIライン169の後に次のコメントを追加しました:

    <Directory /home/{user}/sites/>
        Options Indexes FollowSymLinks
        AllowOverride None
        Require all granted
    </Directory>
    
  2. website.confat という名前の仮想ホスト構成/etc/apache2/sites-availableがdefaultからコピーされ、次のようになっていることを確認しました000-default.conf

    <VirtualHost *:80>
        ServerAdmin webmaster@localhost
        ServerName website.dev
        ServerAlias www.website.dev
        DocumentRoot /home/{user}/sites/website
    </VirtualHost>
    
  3. サイトをリロードしました(sudo a2dissite website && sudo a2ensite website)とサーバーましたが、最初のエラーはなくなりました。うわー!しかし、新しいものが出現しました: "AH00035:パスのコンポーネントで検索許可が欠落しているため、/へのアクセス(ファイルシステムパス '/ home / {user} / sites')。これはステップ4で解決しました。

  4. 新しい問題は権限が原因であったため、websiteフォルダに至る各ディレクトリをに設定しましたchmod 755。ひとつひとつ!のhomeフォルダ、{}ユーザーフォルダ、サイトフォルダ、さらには私のウェブサイトのフォルダ

  5. website.dev正常にロードされたすべてのものでブラウザを更新した後!

PS私はすでにwebsite.dev自分でセットアップしていた/etc/hostsファイルに。

ボーナスヒント:特定のフォルダーのアクセス許可を確認するには、コマンドを使用できますstat -c %a /path/to/file/or/folder。ディレクトリのすべての部分の権限を確認するには、を使用しますnamei -m /path/to/final/folder

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.