2011年7月23日土曜日

ApacheモジュールをWindows環境で開発⑤

今回は「mod_hoge.so」というモジュールを作ります。
/hoge/にアクセスがあった場合、「The sample page from mod_hoge.c」というメッセージをだす
簡単なものです。

適当なフォルダ(C:\work\module のような感じ)で以下のコマンドを打ちます。
apxs -g -n hoge

作ったぞ!的なメッセージがでます。
Use of assignment to $[ is deprecated at C:\ApacheSoftware\Apache2.2\bin/apxs.bat line 120.
Creating [DIR]  hoge
Creating [FILE] hoge/Makefile
Creating [FILE] hoge/mod_hoge.c
Creating [FILE] hoge/.deps

ディレクトリが作成され、
3つのファイルが作成されました。

C:\work\module>tree /f hoge
フォルダ パスの一覧
ボリューム シリアル番号は XXXX-9035 です
C:\WORK\MODULE\HOGE
    .deps
    Makefile
    mod_hoge.c


次はコンパイルです。(ソースファイルもいじらず、このままいきます。)
自動で作成されたhogeディレクトリに移動してください。
詳しい人ならmakeでビルドできるようにMakefileを修正するでしょうが、
私にはできないので、gccコマンドで堅実にコンパイルしていきます。

gcc -mwindows -I C:\ApacheSoftware\Apache2.2\include -L C:\ApacheSoftware\Apache2.2\lib -c mod_hoge.c

※includeディレクトリとlibディレクトリはご自分の環境に合わせて変更してください。

エラーです....
----------------------------------------
C:\work\module\hoge>gcc -mwindows -I C:\ApacheSoftware\Apache2.2\include -L C:\A
pacheSoftware\Apache2.2\lib -c mod_hoge.c
In file included from C:/ApacheSoftware/Apache2.2/include/ap_config.h:25,
                 from C:/ApacheSoftware/Apache2.2/include/httpd.h:43,
                 from mod_hoge.c:40:
C:/ApacheSoftware/Apache2.2/include/apr.h:618:1: warning: "IN6_IS_ADDR_V4MAPPED"
 redefined
In file included from C:/ApacheSoftware/Apache2.2/include/apr.h:101,
                 from C:/ApacheSoftware/Apache2.2/include/ap_config.h:25,
                 from C:/ApacheSoftware/Apache2.2/include/httpd.h:43,
                 from mod_hoge.c:40:
C:/Perl/site/lib/auto/MinGW/bin/../lib/gcc/mingw32/3.4.5/../../../../include/ws2
tcpip.h:236:1: warning: this is the location of the previous definition
In file included from C:/ApacheSoftware/Apache2.2/include/httpd.h:43,
                 from mod_hoge.c:40:
C:/ApacheSoftware/Apache2.2/include/ap_config.h:234:28: ap_config_auto.h: No suc
h file or directory
C:/ApacheSoftware/Apache2.2/include/ap_config.h:235:30: ap_config_layout.h: No s
uch file or directory
----------------------------------------

ワーニング2つはあえて無視(笑)したとして、
ヘッダファイルが2つ(ap_config_auto.hとap_config_layout.h)ありませんと出ています。
そんなファイル確かにないし、、、
いろいろ調べたり、試したりしましたが、結論としてこの2つはインクルードしないことにしました。
(いいのかどうかは不明です。たぶんダメだと思います。情報お待ちしております。)
ap_config.hの中で上記2ファイルをインクルードしようとしている箇所をコメントアウトし、
再度コンパイルします。

成功するとmod_hoge.oができます。

続いて、.soファイルをつくります。以下のようなgccを実行してください。
gcc -mwindows -I C:\ApacheSoftware\Apache2.2\include -L C:\ApacheSoftware\Apache2.2\lib -shared -o mod_hoge.so mod_hoge.o -llibhttpd

成功するとmod_hoge.soができます。

あとはapacheの設定です。
①できたmod_hoge.soファイルをモジュールのフォルダに移動してください。(私の場合、C:\ApacheSoftware\Apache2.2\modules)
②httpd.confに以下の行を追加(LoadModule が並んでいるところの最後尾)
LoadModule hoge_module modules/mod_hoge.so
③もう1つhttpd.conf の下のほうに
<Location /hoge>
SetHandler hoge
</Location>

Apacheを起動してhttp://localhost/hogeと、入力してください。

The sample page from mod_hoge.c とブラウザに表示されれば成功です。

2011年7月10日日曜日

ApacheモジュールをWindows環境で開発④

④apxsをインストール

http://www.apachelounge.com/download/から、apxs_win32.zipをダウンロードします。

解凍して、任意のフォルダに保存してください。

私の場合は、Apacheのディレクトリに入れました。(C:\ApacheSoftware\Apache2.2\apxs)

⑤Apache再インストール

私の場合、Apacheの再インストールが必要でした。
なぜなら、Apacheをインストールするときに標準(Typical)インストールに
した場合、ビルドヘッダー(includeフォルダ等)やライブラリのインストールは割愛されてしまうからです。

apxsを利用して、モジュールを作成するには、これらが必要になります。
したがって、再インストールが必要でした。
インストールする際のポイントだけ、紹介します。


カスタムインストールを選択してください。





Build Headers and Librariesがデフォルトでは
インストール対象から外れているので、
インストール対象に含めてください。



















 続く

2011年7月8日金曜日

ApacheモジュールをWindows環境で開発③

②dmakeをインストール

PerlPackageManagerを利用してdmakeをインストールします。
MinGWのインストールと同様なのですごく簡単に説明します。

まず、検索ボックスに「dmake」と入力してリターン。
検索結果に表示されている「dmake」を右クリック。
「Install dmake ・・・・」を選択。


「dmake」の箇所に緑色の+マークが出たら、
下の赤枠の矢印をクリック。

確認のダイアログが出てくるので「OK」と言いつつ
ボタンを押します。

コンソールにずらずらメッセージが出てきてインストール完了です。

最後に動作確認をします。
コマンドプロンプトで「dmake -V」(※注意 Vは大文字です)と入力し、
バージョン情報が表示されたらOKです。

では続く・・・

2011年7月4日月曜日

ApacheモジュールをWindows環境で開発②

②MinGWをインストール

gcc(C言語のコンパイラ)を利用するにはMinGWなるものをインストールする必要があります。
前の記事の記事でインストールしたActivePerlの機能を使用します。

PerlPackageManagerを利用する方法です。
(使い方の詳細は知りませんのでとりあえずMinGWをインストールする方法を説明します。)


起動したら、赤枠のボタンを選択




















検索BOXにMinGWと入力&リターン
 




















表示されたものを右クリックすると「install MinGW なんたらかんたら」と
メニューが出るのでそれを選択。すると緑の+マークがでます。
 



















そしたら下の赤枠の箇所のボタンをクリック。




















インストールしますか?と聞いてくる。



コンソールにいろいろと出てきて、インストールが完了します。


コマンドプロンプトを立ち上げて「gcc -dumpversion」と打ってみてください。
(パスは通ってるるはずです。)
バージョン情報が表示されたらインストールOK

では次回はdmakeのインストール方法へ。。。

そういえばこのシリーズの最終目標はWindowsでApacheのモジュールを開発するでしたねw。
長い道のりになりそうです。

2011年7月3日日曜日

ApacheモジュールをWindows環境で開発①

ApacheモジュールをWindows(XP Home Edition SP3)環境で開発してみたくなった。

参考にしたサイト:

http://bookend.take-uchi.net/apxs/
http://d.hatena.ne.jp/hhelibex/20110310/1299766831


Windows環境で開発するにはいろいろなソフトをまず準備しなくてはならなかった。。。
①ActivePerl (Perlは多少いじったことがある)
②MinGW(gccが欲しいだけ。ActivePerlのPerl Package Manegerを利用してインストールした。)
③dmake (ビルドツール。ActivePerlのPerl Package Manegerを利用してインストールした。)
④apxs(apacheの拡張モジュール。モジュールを作る際に便利な機能を提供してくれる。)
⑤Apache (インストールしなおした、理由は後述)

とりあえず復習しながら、上の5つのインストールおよび注意点をメモしていきたいと思います。


①ActivePerlインストール
1.1 http://www.activestate.com/activeperlから、安定版の最も新しいやつをインストールしましょう。

 Freeのやつで(矢印の箇所をクリック)





















(私の場合は、)32bitのやつで





















ダウンロードスタート!
最初は間違えて、会員登録用の住所や電話番号を
記入してしまった。注意してください。w























1.2 落としたファイルを実行。
(私の場合、ActivePerl-5.12.4.1205-MSWin32-x86-294981.msi。)

1.3 設定はそんなに難しくなかったのです。

最初の画面

お決まりのやつ

デフォルトのままネクスト。


拡張子.plを関連付けたくないので2番目のチェックは外した。
(お好みでどうぞ)

インストールボタンをポチ。

しばし待て。

完了


1.4 動作確認

その1.コマンドプロンプトを起動し、「perl -v」と打つとバージョンが表示されること。
















その2.Perl Package Managerが起動すること

スタートメニュー → ActivePerl 5.12.4 → Perl Package Manager






















ここで罠が仕掛けられています。

Perl Package Managerが起動しない人いませんか?

Windowsのログインユーザー名に漢字や全角文字が含まれている場合、
これが起動しません。また、ActivePerlのほかのツール(コマンドppm等)も正常に
動作しません。

ユーザー名が半角のユーザーをWindowsに追加し、ログインしなおして、もう一度起動してみてください。


では、続く・・・