2022年8月、ホームページを全面リニューアルしました! 情報を分かりやすくお伝えできるサイト作りを目指してまいります。

動的共有オブジェクト (DSO)をコンパイルする!

Apacheの動的共有モジュールDSOを作る方法を示す。ここでは、mod_setenvif.soを作りたいとする。


1.DSOをコンパイルする

◆ ワークディレクトリを/tmpとした場合。

# cd /tmp

# cp /usr/local/src/apache_1.3.31/src/modules/standard/mod_setenvif.c .

# /usr/local/apache/bin/apxs -c ./mod_setenvif.c

コンパイルすると、mod_setenvif.soがカレントに作られるので、

# cp mod_setenvif.so /usr/local/apache/libexec/

として、シェアードライブラリとして登録すれば終わり。


2.DSOが組み込めないとき

コンパイルして、libexecディレクトリにバイナリをつっこんだけど起動時に以下のようなエラーが出て起動できないとき、

# /usr/local/apache/bin/apachectl start
Syntax error on line 30 of /usr/local/apache/conf/httpd.conf:
module setenvif_module is built-in and can’t be loaded

これは、既にmod_setenvifモジュールが組み込まれていると怒られている。試しに組み込まれているDSOを以下のコマンドで調べてみる。

# /usr/local/apache/bin/httpd -l
Compiled-in modules:
http_core.c
mod_env.c
mod_log_config.c
mod_mime.c
mod_negotiation.c
mod_status.c
mod_include.c
mod_autoindex.c
mod_dir.c
mod_cgi.c
mod_asis.c
mod_imap.c
mod_actions.c
mod_userdir.c
mod_alias.c
mod_access.c
mod_auth.c
mod_so.c
mod_setenvif.c

案の定一番最後に組み込まれている。したがって、httpd.confのLoad_moduleのセクションにmod_setenvif.soが定義されていたらコメントして、改めて起動すればうまくいくはずである。

以上

コメント