Linux
 Computer >> コンピューター >  >> トラブルシューティング >> Linux

LinuxのApacheでmod_authz_hostエラーを解決する方法|ステップバイステップガイド

Red Hat Enterprise Linux、Arch、Scientific Linux、Debian Server、Ubuntu Serverなど、Apache2をサポートする各種Linuxディストリビューションにapache2サービスをインストールすると、mod_authz_hostモジュールに関するエラーが発生し、サービスが実行できなくなることがあります。このエラーは、apache2サービスを再起動するたびに問題となる可能性が高く、多くの場合はファイルの1行目に関する構文警告として表示されますが、別の形式のエラーが出ることもあります。

どの行で問題が発生していても、その原因はmod_authz_hostがインストールされていないことや、メモリ上にロードされていないことにはほとんど関係ありません。むしろ、このエラーが表示されているということは、apache2サーバーサービスがモジュールを正しくロードできている証拠です。本当の原因は、どこかのディレクティブが不適切な場所に置かれていることであり、コードを整理し直せばすぐに解決できます。なお、「mod_authz_hostをインストールせよ」という指示を目にすることがありますが、それは本件とは無関係です。エラーは特定パッケージの不足からも、未解決の依存関係からも生じていません。開発者がエラーメッセージを選んだ表現の仕方こそが、こうした誤解を招いているのです。

restrict.confのモジュールディレクティブを修正する

ここでは例として、Linuxディストリビューション情報サイトのdistrowatch.comを使用します。Apache2の公式ドキュメントではdev.example.comが例として使われていますが、いずれにしても実際の環境ではこれらのアドレスは使用しないでください。

テキストエディタで設定ファイルを開きます。保護されたディレクトリ内にあるため、root権限が必要です。ここではnanoを使用しましたが、viなどお好みのエディタでも構いません。必ずしもコンソールエディタを使う必要はありませんが、GUI環境で作業する場合は、sudoの代わりにgksuを使うようにしてください。

ファイルを読み込んだら、次のような記述に注目してください。

Order deny,allow
Deny from all
Allow from distrowatch.com

このテキストは、<Location />〜</Location>ブロックの中にのみ存在しているべきものです。最初のタグ内のスペースに注意してください。もしこれらの行がブロックの外に浮いた状態になっているなら、タグで囲むか、以下のように移動させます。

<Location />
    Order deny,allow
    Deny from all
    Allow from distrowatch.com
</Location>

distrowatch.comは、実際に運用するURLに置き換えてください。dev.example.comへの直接参照が見つかった場合は、サンプルコードからそのままコピーしたか、デフォルトで追加されたものです。example.comドメインは技術文書での説明用に存在するだけで、実際の用途はありません。httpd.apache.org/docs/2.2/howto/access.htmlの公式ドキュメントにも確かにこれらの参照が含まれています。新しい設定を追加する際に、これらは削除しても問題ないでしょう。

restrict.confファイルにディレクトリ単位の制御を含めたい場合は、<Location />〜</Location>タグを<Directory />〜</Directory>タグに置き換えることも可能ですが、この場合も最初のタグ内のスペースを維持してください。ファイルを保存して閉じたら、apache2サービスを再起動します。これ以降は問題なく動作するはずです。

エラーメッセージの読み方とデバッグのコツ

Apacheサーバーが行番号付きの構文エラーを返すのは、まさにディレクティブが前述のタグで安全に囲まれていないことを示しています。デバッグ時には、エラーで指定された行に直接移動して、何が問題なのかを確認するとよいでしょう。エラーメッセージには「Apacheのエラーログに詳細情報があるかもしれない」と表示されますが、おそらくここで説明した内容と同じことが繰り返されるだけです。

今後の構文エラーも同様の方法で修正できます。一つ直した後に、apache2サービスが別のエラーを出すことがあるかもしれません。奇妙に聞こえるかもしれませんが、これは正常な動作です。Apacheは問題のある最初の行までしかコードを解析しないため、それ以降に問題があってもそこまで到達していなかったのです。こうした問題に遭遇したら、ファイル編集時に行番号に細心の注意を払ってください。nanoでファイルを編集している場合、Ctrlキーを押しながらCキーを押すと、カーソルが現在いる行番号を確認できます。これによりデバッグ作業が格段にスムーズになります。

また、タグに囲まれていない複数のブロックが散在しているケースもあります。それぞれに適切なタグを付与する必要があります。さらに、同じURLに対して同一のディレクティブを持つコピーが複数ある場合は、重複ブロックを削除しましょう。重複は潜在的な競合を引き起こす可能性があります。通常、特定のURLにつき1つの記述だけで十分です。同じURLに対して追加のディレクティブを渡すと、最終的に互いの設定が打ち消し合う恐れがあるためです。

まとめ

mod_authz_host関連のエラーは、モジュール自体の不具合ではなく、設定ファイル内のディレクティブの配置ミスが原因であることがほとんどです。<Location><Directory>ブロックでディレクティブを正しく囲み、不要な重複やサンプル用ドメインの参照を取り除けば、apache2サービスは正常に起動するようになります。エラーメッセージの行番号を頼りに、一つずつ丁寧に修正していきましょう。

  1. Xfce4のパフォーマンスを復元!古いセッションをクリーンアップしてLinuxデスクトップを高速化する方法

    Xfce4は非常に人気のあるLinuxデスクトップ環境ですが、長期間使用していると奇妙な動作を示すことがあります。以前ほどキビキビと動作しなくなったり、マシンの起動時に立ち上がりが極端に遅くなったり、パソコンを起動するたびにウィンドウが勝手に表示されたりすることもあるでしょう。これらの問題の原因は、特定の作業を行った後に残されてしまういくつかのファイルです。ほんの数個の簡単なコマンドを実行するだけで、これらを取り除き、新品同様の快適な状態に戻すことができます。なお、XubuntuやDebian-Xfce4のユーザーも、ディストリビューション向けにカスタマイズされたXfce4を使用していても、以

  2. PuTTY X11プロキシ「サポートされていない認証プロトコル」エラーを修正する5つの方法

    PuTTY X11は、リモートアプリケーションやサーバーの表示・操作をローカルマシンに転送することで、遠隔アクセスを実現する仕組みです。これにより、ユーザーは自分のPCからリモートマシンのGUIやSSHを直接操作できるようになり、快適なリモート作業が可能になります。しかし、サーバーやアプリケーションに接続しようとした際に、「PuTTY X11 proxy: Unsupported authorization protocol(サポートされていない認証プロトコル)」というエラーが発生することがあります。このエラーの主な原因は以下の通りです。Xauthorityファイルの所有権が誤っている(ファイ