進め方!モジュールをオフにする設定と、ログから悪影響が出ていないか確認する方法
まずは編集前のバックアップですの♪
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。
Apacheの不要モジュールを外してWordPress(ワードプレス)を高速化する | CONETA.JP - 参考サイト2。
SaaSes の VPS の Osukini サーバー + CentOS の初期設定からチューニングまとめ | ウェブル - 信頼性の高い参考サイト
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) – さくらインターネット創業日記
参考サイト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
パフォーマンスはちっとも改善しませんでしたの!これは意味が無いというよりも、無効にしたモジュールはもともと動いていなかっただけだったと予想していますわ♪
でも使っていないものは明確にできてスッキリしましたの♪
おわりに
今回の投稿、非常に時間がかかりましたの。表を書くのに。。。もう少し、腕を磨かねばなりませんね?
そんなことはどうでもよく、パフォーマンスは改善しませんでしたけれども、不要なモジュールを見極める良い経験となったと思います。大変でしたわ♪
以上です。