- 2009-08-15
- Apache
さて、今回からモジュールプログラミングをしていきます。
まずは何もしないモジュールを作って、開発の流れを掴みたいと思います。
雛型作成
Apache付属のapxsコマンドを使います。
cd /home/t/module /home/t/apache/bin/apxs -g -n hello
※ mod_soを有効にしていないとエラーになるので注意。
/home/t/apache/bin/apxs -g -n hello apxs:Error: Sorry, no DSO support for Apache available apxs:Error: under your platform. Make sure the Apache apxs:Error: module mod_so is compiled into your server apxs:Error: binary `/home/t/apache/bin/httpd'.
ちょっと弄る
雛型そのままでも動きますが、少しだけ変えてみます。
vi mod_hello.c
ap_rputs("Hello, Apache Module!<br />\n", r);
ap_rputs("The sample page from mod_hello.c\n", r);
これだけです。
コンパイル・インストール
make;make installすれば、
モジュールのコピーや設定ファイルへの追記まで勝手にやってくれます。
vi /home/t/.bash_profile PATH=$PATH:$HOME/bin:$HOME/apache/bin source /home/t/.bash_profile cd /home/t/module/hello make make install grep mod_hello /home/t/apache/conf/httpd.conf LoadModule hello_module libexec/mod_hello.so ls /home/t/apache/libexec/mod_hello.so /home/t/apache/libexec/mod_hello.so
※ apxsへのパスを通していないとエラーになります。
make apxs -c mod_hello.c make: apxs: コマンドが見つかりませんでした make: *** [mod_hello.so] エラー 127
動作確認
設定ファイルに以下を追記することで、
動作確認を行うことができます。
vi httpd.conf Include conf/module.conf vi module.conf <Location /hello> SetHandler hello </Location> firefox localhost:8080/hello &
※ Includeしないで、直接httpd.confに書いてもいいんですが、
今後いろいろと試してぐちゃぐちゃになりそうだったので、僕は分けておきました。
※ mod_soを無効のままインストールしちゃった場合は、
apacheディレクトリごと消して入れ直しましょう。
じゃないと(僕みたいに)以下のエラーに悩まされることになります。
tail -f error_log Syntax error on line 205 of /home/t/apache/conf/httpd.conf: Invalid command 'LoadModule', perhaps mis-spelled or defined by a module not included in the server configuration
さて、これでとりあえず、
「Hello, Apache Module!
The sample page from mod_hello.c」
という画面は表示できるようになりました。
(雛型をほぼそのまま動かしただけですが・・・)
次回からいよいよ中身(C言語)に入っていきたいと思います。
Comments:0
Trackback+Pingback:0
- TrackBack URL for this entry
- http://blog.bornneet.com/TrackBack/210/
- Listed below are links to weblogs that reference
- mod_hello: 初めてのApacheモジュール from Born Neet