2011年 5月 15日
Apacheの場合、さまざまな機能を「モジュール」という形で用意しています。
モジュールを増やせばたくさんの機能を利用できますが、その反面メモリを大きく消費してしまうという問題があります。
CentOSのデフォルト状態では、ほぼ全てのモジュールが有効になっているため、必要以外のモジュールを除外する必要があります。
例えば、一切モジュールを消さないデフォルトの状態だと、1プロセスあたり5MB程度のメモリを消費していることが分かります。
# ps aux|grep -v Ss|grep ‘[h]ttpd’|head -1
apache 22523 0.0 0.4 257548 5036 ? S 12:27 0:00 /usr/sbin/httpd
これを適切に設定しなおすと、4MB程度まで減らせます。
1プロセスあたり1MB省略できれば、200プロセスで200MB削減できることになりますし、実際にリクエストを受け付けているプロセスの場合はさらに消費メモリの差が出ることになります。
# ps aux|grep -v Ss|grep ‘[h]ttpd’|head -1
apache 24715 0.0 0.4 161716 4228 ? S 19:46 0:00 /usr/sbin/httpd
とはいえ、どのモジュールが必要なのかが分かりにくいので、モジュールの一覧と、私の勝手な重要度をまとめました。
重要度は、◎、○、△、+、の4種類で分類しており、一覧にある重要度のタイトルをクリックすると、フィルターすることも可能です。
◎=必須
○=あったほうが良い
△=必要ならあればよい
+=必要性なし
| モジュール名 | | コメント |
|---|
| mod_auth_basic | △ | ベーシック認証 |
|---|
| mod_auth_digest | + | ダイジェスト認証 |
|---|
| mod_authn_file | △ | 認証にテキストファイルを利用する いわゆる.htpasswdを使う場合は必要 |
|---|
| mod_authn_alias | + |
|
|---|
| mod_authn_anon | + | 匿名ユーザを認証する |
|---|
| mod_authn_dbm | + | 認証にDBMファイルを利用する |
|---|
| mod_authn_default | + |
|
|---|
| mod_authz_host | ◎ | ホスト/IPアドレスでのアクセス制限 Orderや、Allow from ?? を使う場合は必須 |
|---|
| mod_authz_user | △ | ユーザ名でのアクセス制限 |
|---|
| mod_authz_owner | + | ファイル所有者でのアクセス制限 |
|---|
| mod_authz_groupfile | + | グループでのアクセス制限を行う(テキストファイル) |
|---|
| mod_authz_dbm | + | グループでのアクセス制限を行う(DBMファイル) |
|---|
| mod_authz_default | + |
|
|---|
| mod_ldap | + | LDAP用の基本モジュール |
|---|
| mod_authnz_ldap | + | LDAPでのアクセス制限 |
|---|
| mod_include | △ | SSIを提供 SSIを利用する場合は有効にする |
|---|
| mod_log_config | ◎ | ログ保存 アクセスログをとるためには必須 |
|---|
| mod_logio | + | 送受信バイト数のログ保存(このモジュールがなければ保存できない) |
|---|
| mod_env | △ | CGIやSSIでの環境変数を設定する 必要なければ無効でかまわない |
|---|
| mod_ext_filter | + | データ返送時に外部プログラムを経由させる |
|---|
| mod_mime_magic | + | ファイルの内容をベースにMIMEタイプ決定 |
|---|
| mod_expires | + | Expireヘッダをセットする |
|---|
| mod_deflate | + | データ返送時に圧縮する |
|---|
| mod_headers | △ | リクエスト、レスポンスヘッダを制御する 必要なければ無効でかまわない |
|---|
| mod_usertrack | + | クッキーでユーザ追跡を行う |
|---|
| mod_setenvif | ◎ | 環境変数の制御を行う 無効でもかまわないが、標準の設定ファイルで利用されており、有効にするのが無難 |
|---|
| mod_mime | ◎ | 拡張子をベースにMIMEタイプを決定 |
|---|
| mod_dav | + | WebDAVを提供 |
|---|
| mod_status | ○ | /server-statusにてサーバ状態を表示する(URLは変更可能) |
|---|
| mod_autoindex | △ | ディレクトリへのアクセス時にファイル一覧を作成する |
|---|
| mod_info | △ | /server-infoにてサーバ設定を表示する(URLは変更可能) |
|---|
| mod_dav_fs | + | WebDAVを提供 |
|---|
| mod_vhost_alias | + | バーチャルホストを簡単に生成 |
|---|
| mod_negotiation | ◎ | クライアントに適したファイルを自動判別する(.jaなど) |
|---|
| mod_dir | ◎ | ディレクトリの取り扱いを行う(index.htmlの取り扱いなど) |
|---|
| mod_actions | + | 特定の拡張子へのリクエストに応じてCGIを実行する |
|---|
| mod_speling | + | 大文字小文字を同じように扱えるようにする |
|---|
| mod_userdir | △ | ユーザのホームディレクトにアクセスできるようにする(チルダ形式など) |
|---|
| mod_alias | ◎ | AliasやRedirectを利用できるようにする |
|---|
| mod_rewrite | △ | Rewrite機能を提供する |
|---|
| mod_proxy | △ | Proxyを提供する |
|---|
| mod_proxy_balancer | △ | Proxy時に負荷分散機能を提供 |
|---|
| mod_proxy_ftp | + | Proxy時にFTP接続機能を提供 |
|---|
| mod_proxy_http | △ | Proxy時にHTTP接続機能を提供 |
|---|
| mod_proxy_connect | + | Proxy時にCONNECT機能を提供 |
|---|
| mod_cache | + | キャッシュを提供 |
|---|
| mod_suexec | △ | suexecを提供 |
|---|
| mod_disk_cache | + | cache_moduleにおいて、ディスクキャッシュを提供 |
|---|
| mod_file_cache | + | 静的ファイルをメモリにキャッシュさせる |
|---|
| mod_mem_cache | + | cache_moduleにおいて、メモリキャッシュを提供 |
|---|
| mod_cgi | △ | CGIを提供 |
|---|
| mod_version | ○ | クライアントへのレスポンスにApacheバージョンを挿入する |
|---|
※注意点
以下のモジュールを無効にすると、標準の設定ファイル(/etc/httpd/conf/httpd.conf)のまま起動するとエラーとなります。
- mod_authz_hostを無効にした場合には、OrderやAllowなどの項目(例えば332行目など)をコメントアウトする必要があります
- mod_proxyを無効にした場合には、以下ようにコマンドを実行し拡張設定ファイルを無効化する必要があります
# mv /etc/httpd/conf.d/proxy_ajp.conf /etc/httpd/conf.d/proxy_ajp.conf.stop
- mod_autoindexを無効にした場合には、IndexOptionsから始まる関連項目(例えば592行目?657行目)を全てコメントアウトする必要があります
もしくは以下のとおり、<IfModule>で括ってしまう方法もあります
vi /etc/httpd/conf/httpd.conf
<IfModule mod_autoindex.c>
IndexOptions FancyIndexing VersionSort NameWidth=* HTMLTable
・・略・・
IndexIgnore .??* *~ *# HEADER* README* RCS CVS *,v *,t
</IfModule>
ちなみに、私はいつも以下のモジュールを有効にしています。
なお、mod_autoindex と mod_proxy を無効化していますので、前述のとおり設定を変更しなければエラーとなって起動しません。
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule status_module modules/mod_status.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule alias_module modules/mod_alias.so
ウェブ開発者のための、1時間でできるLAMP環境構築術(CentOS編) - さくらインターネット創業日記
9ヶ月前 |
固定リンク | 2011年 5月 15日 |
