Apacheで採用しているモジュールを確認する方法|httpd -Mとmpm・mod_rewriteの有効確認

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Apache, Linuxtips, Webサーバー管理, サーバー管理 > Apacheで採用しているモジュールを確認する方法|httpd -Mとmpm・mod_rewriteの有効確認
「Apacheにどのモジュールが組み込まれているか確認したい」
\n「mod_rewriteが有効かどうか調べる方法がわからない」
\n
\nApacheのモジュールはサーバーの機能を決定します。認証・URL書き換え・圧縮・SSL対応など、各機能はモジュールで提供されているため、モジュール一覧の確認はトラブルシュートや設定変更の基本操作です。
\n
\nこの記事では、httpd -Mapachectl -M コマンドを使ってApacheのモジュール一覧を確認する方法を解説します。静的モジュールと動的モジュールの違い、特定モジュールの有効確認方法まで実践的に解説します。
\n
\n
【この記事でわかること】
\n\n・httpd -M または apachectl -M でロード済みモジュール一覧を表示できる
\n・(static) は起動時に固定で組み込まれた静的モジュール
\n・(shared) は実行時に動的にロードされるモジュール
\n・httpd -l で静的モジュール(コンパイル組み込み)のみを表示できる
\n・grepと組み合わせて特定モジュールの有効確認ができる
\n

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

httpd -M でモジュール一覧を確認する

httpd -M オプション(または apachectl -M)で、現在ロードされているすべてのモジュールを一覧表示できます。

1. 基本的な実行方法

# ロード済みモジュール一覧を表示する(root権限推奨) [root@server ~]# httpd -M Loaded Modules: core_module (static) mpm_prefork_module (static) http_module (static) so_module (static) authn_file_module (shared) authn_default_module (shared) authz_host_module (shared) authz_groupfile_module (shared) authz_user_module (shared) alias_module (shared) rewrite_module (shared) ssl_module (shared) Syntax OK # apachectl でも同じ結果が得られる [root@server ~]# apachectl -M

末尾に「Syntax OK」と表示されれば、設定ファイルの構文も正常です。

2. staticとsharedの違い

モジュール名の後ろに表示される (static)(shared) は、モジュールの組み込み方を示します。

(static):Apacheのコンパイル時に固定で組み込まれた静的モジュール。httpd.confの設定に関係なく常にロードされる
(shared):実行時に動的にロードされる共有モジュール。httpd.confの LoadModule ディレクティブで制御する

現場では、動的モジュール(shared)の方が設定変更の柔軟性が高く、mod_rewriteやmod_sslなど多くの機能モジュールがこの形式で提供されています。

静的モジュールのみ表示する(httpd -l)

httpd -l オプションを使うと、コンパイル時に組み込まれた静的モジュール(built-in)だけを表示できます。

# 静的モジュール(コンパイル組み込み)のみ表示する [root@server ~]# httpd -l Compiled in modules: core.c prefork.c http_core.c mod_so.c # apachectl でも同じ結果が得られる [root@server ~]# apachectl -l

-M-l の違いは、-M が動的モジュール(shared)も含む全モジュールを表示するのに対し、-l はコンパイル組み込みのものだけを表示する点です。

grepで特定モジュールの有効確認

1. mod_rewriteが有効か確認する

# mod_rewriteが有効か確認する [root@server ~]# httpd -M | grep rewrite rewrite_module (shared) # 出力されれば有効、出力なしなら無効

2. mod_sslが有効か確認する

# mod_sslが有効か確認する [root@server ~]# httpd -M | grep ssl ssl_module (shared)

3. MPMモジュールを確認する

Apacheの処理方式(MPM)はprefork・worker・eventの3種類があります。現在どのMPMが使われているか確認できます。

# 現在のMPMを確認する [root@server ~]# httpd -M | grep mpm mpm_prefork_module (static) # preforkの場合は1リクエスト1プロセスで処理する

MPMとは何か(実務知識)

MPM(Multi-Processing Module)は、Apacheがクライアントからのリクエストを並行処理する方式を決定するモジュールです。

mpm_prefork:1リクエスト1プロセス方式。各リクエストを独立したプロセスで処理する。PHP(非スレッドセーフ版)との組み合わせに多い
mpm_worker:スレッド方式。複数スレッドで並行処理するため、メモリ効率がよい
mpm_event:worker方式の改良版。Keep-Alive接続を効率的に処理できる。Apache 2.4以降の推奨MPM

MPMの変更はコンパイルオプションまたはhttpd.confの設定で行います。

まとめ

やりたいこと コマンド
ロード済みモジュールを全表示する httpd -M
静的モジュールのみ表示する httpd -l
特定モジュールの有効確認 httpd -M | grep モジュール名
MPMの種類を確認する httpd -M | grep mpm

Apacheのモジュール管理だけでなく、Linuxサーバーを体系的に理解したいですか?

モジュールの仕組みを理解することは、Apacheのトラブルシュートや機能拡張の基礎になります。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。