Tweet
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Home > > mod_hello: 初めてのApacheモジュール
Home > > mod_hello: 初めてのApacheモジュール
Home > Apache > mod_hello: 初めてのApacheモジュール
Tweet
さて、今回からモジュールプログラミングをしていきます。
まずは何もしないモジュールを作って、開発の流れを掴みたいと思います。
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言語)に入っていきたいと思います。