カテゴリー
Linux

Apache モジュール一覧と不要なものを見極めたいですの♪

進め方!モジュールをオフにする設定と、ログから悪影響が出ていないか確認する方法

まずは編集前のバックアップですの♪

cp -a /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.131208

モジュールをオフにするには設定ファイルの該当箇所をコメントにいたします。

vim /etc/httpd/conf/httpd.conf

具体的には、次のように行の先頭に # を入れます。

#LoadModule actions_module modules/mod_actions.so

その後、Apache を再起動しても問題が無いかどうか、文法チェックをいたします。「Syntax OK」と表示されましたら合格ですの♪

apachectl configtest

OKでしたら、再起動♪

/etc/init.d/httpd restart

モジュールを無効にし、問題が無いかどうかを確かめますのに実際にウェブページへのアクセス、ブログの更新等の他に、ログからも確かめます♪

tail -f /var/log/httpd/error_log

参考ページ一覧

次のページを参考に、Apache モジュールで有効にするものを調査、決定いたしました。

参考サイト1、2、はページ内の記述の実体験を重視して選びました。最後は多くのサイトで参考にされているページですわね。わたくしも以前参考にさせていただきました。

その1。どの参考ページでもオフにされているモジュールを無効にしますわ!

参考ページに共通してオフにされておりました次の Apache モジュールを無効にいたします。

  • mod_actions
  • mod_auth_basic
  • mod_auth_digest
  • mod_authn_alias
  • mod_authn_anon
  • mod_authn_dbm
  • mod_authn_default
  • mod_authn_file
  • mod_authnz_ldap
  • mod_authz_dbm
  • mod_authz_groupfile
  • mod_authz_owner
  • mod_authz_user
  • mod_cache
  • mod_cgi
  • mod_dav
  • mod_dav_fs
  • mod_disk_cache
  • mod_env
  • mod_expires
  • mod_ext_filter
  • mod_file_cache
  • mod_info
  • mod_ldap
  • mod_mem_cache
  • mod_mime_magic
  • mod_proxy
  • mod_proxy_balancer
  • mod_proxy_connect
  • mod_proxy_ftp
  • mod_proxy_http
  • mod_speling
  • mod_suexec
  • mod_userdir
  • mod_usertrack
  • mod_version
  • mod_vhost_alias

その1-1。mod_proxy 系を無効にした時のエラーへの対処

mod_proxy、mod_proxy_balancer、mod_proxy_connect、mod_proxy_ftp、mod_proxy_http を一度に無効にしてから文法チェックをいたしました。次のようなエラーが出ました。

httpd: Syntax error on line 210 of /etc/httpd/conf/httpd.conf: Syntax error on line 2 of /etc/httpd/conf.d/proxy_ajp.conf: Cannot load /etc/httpd/modules/mod_proxy_ajp.so into server: /etc/httpd/modules/mod_proxy_ajp.so: undefined symbol: proxy_module

/etc/httpd/conf.d/proxy_ajp.conf 内に記述されている、「LoadModule proxy_ajp_module modules/mod_proxy_ajp.so」が読込ないようです。ですので参考ページでも行っていたように、次のようにしました。

mv /etc/httpd/conf.d/proxy_ajp.conf /etc/httpd/conf.d/proxy_ajp.conf.131208

これで文法チェックいたしましたら、問題ありませんでした。mod_proxy 系を無事に無効に出来ました。

その2。次のモジュールはオンのほうがよいのか、無効にして大丈夫かどうか確認してから決めますの♪

  • mod_authz_default
    → BASIC認証などを使わない場合はこれをオンにしてすべて拒否したほうがよいように思う。気にし過ぎだろうか?まず、オンのままとする!
  • mod_autoindex
    → 無効にするなら IndexOptionsから始まる関連項目を全てコメントアウトするか、<IfModule>で括る必要あり。面倒なのでオンにしておこうか?

    Syntax error on line 592 of /etc/httpd/conf/httpd.conf:
    Invalid command 'IndexOptions', perhaps misspelled or defined by a module not included in the server configuration

    とエラーとなったため、やはりオンのままとする!

  • mod_cern_meta
    → 参考ページには登場しなかった新しいモジュール。デフォルトでオフなので、オフのままとする!
  • mod_cgi
    → PHP 動かすのに mod_cgi が必須と思い込んでいたが、実は不要なのか?
    → 設定によっては不要みたい。小粋空間: PHP における「モジュール版」と「CGI 版」の比較 + WordPress の適用例
    → /etc/httpd/conf.d/php.conf  を確認したところ、PHP は mod_cgi を使用していないと予想。オフにして、、、問題ないことを確認した。

    <IfModule prefork.c>
      LoadModule php5_module modules/libphp5.so
    </IfModule>
    <IfModule !prefork.c>
      LoadModule php5_module modules/libphp5-zts.so
    </IfModule>
  • mod_expires
    → 今は無効にするが、ゆくゆくはパフォーマンス改善のためにオンにしたい
  • mod_include
    → オフにしても問題なさそう。。。WordPress では PHP のみを使用していると仮定し、オフにする!と思ったが、/etc/httpd/conf/httpd.conf に次の記述があるため、念のためオンのままとする!

    <IfModule mod_include.c>
        <Directory "/var/www/error">
            AllowOverride None
            Options IncludesNoExec
            AddOutputFilter Includes html
            AddHandler type-map var
            Order allow,deny
            Allow from all
            LanguagePriority en es de fr
            ForceLanguagePriority Prefer Fallback
        </Directory>
    
    #    ErrorDocument 400 /error/HTTP_BAD_REQUEST.html.var
    #    ErrorDocument 401 /error/HTTP_UNAUTHORIZED.html.var
    #    ErrorDocument 403 /error/HTTP_FORBIDDEN.html.var
    #    ErrorDocument 404 /error/HTTP_NOT_FOUND.html.var
    #    ErrorDocument 405 /error/HTTP_METHOD_NOT_ALLOWED.html.var
    #    ErrorDocument 408 /error/HTTP_REQUEST_TIME_OUT.html.var
    #    ErrorDocument 410 /error/HTTP_GONE.html.var
    #    ErrorDocument 411 /error/HTTP_LENGTH_REQUIRED.html.var
    #    ErrorDocument 412 /error/HTTP_PRECONDITION_FAILED.html.var
    #    ErrorDocument 413 /error/HTTP_REQUEST_ENTITY_TOO_LARGE.html.var
    #    ErrorDocument 414 /error/HTTP_REQUEST_URI_TOO_LARGE.html.var
    #    ErrorDocument 415 /error/HTTP_UNSUPPORTED_MEDIA_TYPE.html.var
    #    ErrorDocument 500 /error/HTTP_INTERNAL_SERVER_ERROR.html.var
    #    ErrorDocument 501 /error/HTTP_NOT_IMPLEMENTED.html.var
    #    ErrorDocument 502 /error/HTTP_BAD_GATEWAY.html.var
    #    ErrorDocument 503 /error/HTTP_SERVICE_UNAVAILABLE.html.var
    #    ErrorDocument 506 /error/HTTP_VARIANT_ALSO_VARIES.html.var
    
    </IfModule>
  • mod_logio
    → これがないと logwatch に転送量が出なくなると予想。まずはオンのままとする!
  • mod_status
    → これがないと logwatch に転送量が出なくなると予想。これもオンのままとする!

まとめ。各 Apache モジュールの説明と、参考ページと今回施した設定一覧

調べました結果をまとめておきます。また、各ページとわたくしたちの設定も同時に記述いたします。

No 名前 説明 参考1 参考2 参考3 設定 コメント
1 mod_actions メディアタイプやリクエストメソッドに応じて CGI スクリプトを実行する機能を提供 無効 無効 無効 無効
2 mod_alias ホストファイルシステム上のいろいろな違う場所を ドキュメントツリーにマップする機能と、 URL のリダイレクトを行なう機能を提供する オン オン オン オン
3 mod_auth_basic 基本認証 無効 無効 必要に応じて 無効
4 mod_auth_digest MD5 ダイジェスト認証を使用したユーザ認証 無効 無効 無効 無効
5 mod_authn_alias 実際のプロバイダに基づく拡張された認証プロバイダを作成する機能を提供 無効 無効 無効 無効
6 mod_authn_anon 認証が必要な領域への “anonymous” ユーザのアクセスを許可する 無効 無効 無効 無効
7 mod_authn_dbm DBM ファイルを用いたユーザ認証 無効 無効 無効 無効
8 mod_authn_default 認証フォールバックモジュール 無効 無効 無効 無効
9 mod_authn_file テキストファイルを用いたユーザ認証 無効 無効 無効 無効
10 mod_authnz_ldap LDAPを用いたBasic認証 無効 無効 無効 無効
11 mod_authz_dbm DBM ファイルを用いたグループ認証 無効 無効 無効 無効
12 mod_authz_default 認証フォールバックモジュール 無効 無効 無効 オン BASIC認証などを使わない場合はこれをオンにしてすべて拒否したほうがよいように思う。
13 mod_authz_groupfile プレーンテキストファイルを用いたグループ承認 無効 無効 無効 無効
14 mod_authz_host ホスト (名前もしくは IP アドレス) に基づいたグループ承認 オン オン オン オン
15 mod_authz_owner ファイルの所有者に基づいた承認 無効 無効 無効 無効
16 mod_authz_user ユーザ承認 オン 無効 必要に応じて 無効
17 mod_autoindex Unix の ls コマンドや Win32 の dir シェルコマンドに似た ディレクトリインデックスを生成する オン 無効 必要に応じて オン 無効にするなら IndexOptionsから始まる関連項目を全てコメントアウトするか、で括る必要あり
18 mod_cache URI をキーにしたコンテンツのキャッシュ オン 無効 無効 無効
19 mod_cern_meta CERN httpd メタファイルsemanticsを供給 無効
20 mod_cgi CGI スクリプトの実行 オン 無効 必要に応じて 無効 “PHP 動かすのに mod_cgi が必須と思い込んでいたが、実は不要なのか?
21 mod_dav 分散オーサリングとバージョン管理 (WebDAV) 機能 無効 無効 無効 無効
22 mod_dav_fs mod_dav のためのファイルシステムプロバイダ 無効 無効 無効 無効
23 mod_deflate クライアントへ送られる前にコンテンツを圧縮する 無効 無効 無効 オン パフォーマンス改善のために有効にした。
24 mod_dir 「最後のスラッシュ」のリダイレクトと、ディレクトリの インデックスファイルを扱う機能を提供する オン オン オン オン
25 mod_disk_cache URI をキーにしたコンテンツキャッシュストレージ管理 無効 無効 無効 無効
26 mod_env CGI スクリプト及び SSI ページに渡される環境変数を変更する機能を提供する オン 無効 必要に応じて 無効
27 mod_expires ユーザの指定した基準に基づいた Expires と Cache-Control HTTP ヘッダの生成 無効 オン 無効 無効 パフォーマンス改善のために有効にする予定。
28 mod_ext_filter レスポンスのボディをクライアントに送る前に外部プログラムで処理する オン 無効 無効 無効
29 mod_file_cache メモリ内にファイルの静的リストをキャッシュ 無効 無効 無効 無効
30 mod_headers HTTP リクエストのヘッダと応答のヘッダのカスタマイズ オン オン 必要に応じて オン
31 mod_include サーバがパースする html ドキュメント (Server Side Includes) オン 無効 必要に応じて オン
32 mod_info サーバの設定の包括的な概観を提供する オン 無効 必要に応じて 無効
33 mod_ldap 他のLDAPモジュールから利用されるLDAPのコネクションプーリングと結果のキャッシュサービス 無効 無効 無効 無効
34 mod_log_config サーバへのリクエストのロギング オン オン オン オン
35 mod_logio リクエスト毎に入力バイト数と出力バイト数とをロギング オン 無効 無効 オン これがないと logwatch に転送量が出なくなると予想。
36 mod_mem_cache URI をキーにしたコンテンツのキャッシュ 無効 無効 無効 無効
37 mod_mime リクエストされたファイルの拡張子とファイルの振る舞い (ハンドラとフィルタ)、内容 (MIME タイプ、言語、文字セット、エンコーディング) とを関連付ける オン オン オン オン
38 mod_mime_magic コンテンツの 2、3 バイトを見ることによって、ファイルの MIME タイプを決定 無効 無効 無効 無効
39 mod_negotiation コンテントネゴシエーション 機能を提供する オン オン オン オン
40 mod_proxy HTTP/1.1 プロキシ/ゲートウェイサーバ 無効 無効 必要に応じて 無効 無効にするなら拡張設定ファイルも無効化する必要あり
41 mod_proxy_balancer 負荷分散のための mod_proxy 拡張 無効 無効 必要に応じて 無効
42 mod_proxy_connect CONNECT リクエストを扱う mod_proxy 用の拡張 無効 無効 無効 無効
43 mod_proxy_ftp mod_proxy のための FTP サポートモジュール 無効 無効 無効 無効
44 mod_proxy_http mod_proxy のための HTTP サポートモジュール 無効 無効 必要に応じて 無効
45 mod_rewrite 要求された URL をリアルタイムで書き換えるための、 ルールベースの書き換えエンジンを提供 オン オン 必要に応じて オン
46 mod_setenvif リクエストの特徴に基づいた環境変数の設定を可能にする オン オン オン オン
47 mod_speling ユーザが入力したであろう間違った URL を、 大文字小文字の区別を無視することと一つ以下の綴り間違いを許容することで 修正を試みる 無効 無効 無効 無効
48 mod_status サーバの活動状況と性能に関する情報を提供する オン オン オン オン これがないと logwatch に転送量が出なくなると予想。
49 mod_suexec 指定されたユーザとグループで CGI スクリプトを実行する 無効 無効 必要に応じて 無効
50 mod_userdir ユーザ専用のディレクトリを提供 無効 無効 必要に応じて 無効
51 mod_usertrack サイトにおけるユーザ状況の’clickstream’ ログを 生成 無効 無効 無効 無効
52 mod_version バージョン依存の設定 無効 無効 必要に応じて 無効
53 mod_vhost_alias 動的に複数の構成済みバーチャルホストを提供 オン 無効 無効 無効

おまけ。モジュールオン・オフ前後でメモリ使用量がどう変わったでしょうか?

あまり厳密に調べるつもりはありませんので、次のコマンドで Apache を再起動した直後のタイミングに調べましたの。

free -mt

オフにする前ですわ。

             total       used       free     shared    buffers     cached
Mem:          2048        248       1799          0          0          0
-/+ buffers/cache:        248       1799
Swap:            0          0          0
Total:        2048        248       1799

オフにした後ですの♪

             total       used       free     shared    buffers     cached
Mem:          2048        247       1800          0          0          0
-/+ buffers/cache:        247       1800
Swap:            0          0          0
Total:        2048        247       1800

パフォーマンスはちっとも改善しませんでしたの!これは意味が無いというよりも、無効にしたモジュールはもともと動いていなかっただけだったと予想していますわ♪

でも使っていないものは明確にできてスッキリしましたの♪

おわりに

今回の投稿、非常に時間がかかりましたの。表を書くのに。。。もう少し、腕を磨かねばなりませんね?

そんなことはどうでもよく、パフォーマンスは改善しませんでしたけれども、不要なモジュールを見極める良い経験となったと思います。大変でしたわ♪

以上です。

コメントを残す