今回は「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月23日土曜日
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を利用して、モジュールを作成するには、これらが必要になります。
したがって、再インストールが必要でした。
インストールする際のポイントだけ、紹介します。
http://www.apachelounge.com/download/から、apxs_win32.zipをダウンロードします。
解凍して、任意のフォルダに保存してください。
私の場合は、Apacheのディレクトリに入れました。(C:\ApacheSoftware\Apache2.2\apxs)
⑤Apache再インストール
私の場合、Apacheの再インストールが必要でした。
なぜなら、Apacheをインストールするときに標準(Typical)インストールに
した場合、ビルドヘッダー(includeフォルダ等)やライブラリのインストールは割愛されてしまうからです。
apxsを利用して、モジュールを作成するには、これらが必要になります。
したがって、再インストールが必要でした。
インストールする際のポイントだけ、紹介します。
カスタムインストールを選択してください。
|
続く
続く
2011年7月8日金曜日
ApacheモジュールをWindows環境で開発③
②dmakeをインストール
PerlPackageManagerを利用してdmakeをインストールします。
MinGWのインストールと同様なのですごく簡単に説明します。
まず、検索ボックスに「dmake」と入力してリターン。
検索結果に表示されている「dmake」を右クリック。
「Install 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と入力&リターン
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に追加し、ログインしなおして、もう一度起動してみてください。
では、続く・・・
参考にしたサイト:
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に追加し、ログインしなおして、もう一度起動してみてください。
では、続く・・・
2011年5月15日日曜日
Apche HTTP Server と Tomcatの連携
バージョンは以下の通りです。
Apache Http Server:2.2
Tomcat:6.0
%APACHE_HOME%はApache Http Server のインストールディレクトリを意味します。
1.%APACHE_HOME%\conf\httpd.confに設定の追加
Apache Http Serveに対してTomcatに処理をさせたいリクエストが来た場合、
Tomcatに処理がわたるように設定します。
ここでは次のリクエストがApache Http Serverに対して届いた場合、
Tomcatのページを表示する設定を行います。
http://localhost/hey_tom
この3行をhttpd.confの最後に追加します。
<Location /hey-tom/>
ProxyPass ajp://localhost:8009/
</Location>
また、モジュールmod_proxy_ajpおよびmod_proxy.soを利用するので、
httpd.confの上のほうで、
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
となっている、箇所のコメントを次のように解除します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
これはApache Http ServerでTomcatと連携するためのモジュール(わたしは、プラグインみたいなものと理解している)。
2.動作確認
Tomcat、Apache Http Server の順に起動し、ブラウザからURLを入力すると、、
成功
Apache Http Server:2.2
Tomcat:6.0
%APACHE_HOME%はApache Http Server のインストールディレクトリを意味します。
1.%APACHE_HOME%\conf\httpd.confに設定の追加
Apache Http Serveに対してTomcatに処理をさせたいリクエストが来た場合、
Tomcatに処理がわたるように設定します。
ここでは次のリクエストがApache Http Serverに対して届いた場合、
Tomcatのページを表示する設定を行います。
http://localhost/hey_tom
この3行をhttpd.confの最後に追加します。
<Location /hey-tom/>
ProxyPass ajp://localhost:8009/
</Location>
また、モジュールmod_proxy_ajpおよびmod_proxy.soを利用するので、
httpd.confの上のほうで、
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
となっている、箇所のコメントを次のように解除します。
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
これはApache Http ServerでTomcatと連携するためのモジュール(わたしは、プラグインみたいなものと理解している)。
2.動作確認
Tomcat、Apache Http Server の順に起動し、ブラウザからURLを入力すると、、
成功
2011年5月14日土曜日
Apache HTTP Serverのインストール
2011年5月14日現在最新バージョンである2.2.18をインストールします。
1.ダウンロード
(1)http://httpd.apache.org/に接続します。
Apache HTTP Server 2.2.18 Released のDownloadリンクをクリック
(2)表示されたページのStable Releases:(安定バージョンの意味)の2.2.18リンクをクリック
(3)Apache HTTP Server (httpd) 2.2.18 is the best available versionの箇所に移動するので、
「Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.18-win32-x86-no_ssl-r2.msi」をクリック
httpd-2.2.18-win32-x86-no_ssl-r2.msiファイルがダウンロードされます。
(4)ダウンロードファイルを実行するとインストーラーが起動される
この画面の上3つの設定では、適当にダミー用の値を設定した。
ここでの設定が、httpd.confファイルに反映される。あとから変更も可能。
インストールディレクトリは好みによってかえてください。
そのほかはデフォルトでよし。
2.動作確認
私の場合、インストールしたら、自動で起動されたので、ブラウザを立ち上げ、
http://localhost/ にアクセスした。
これでインストールOK
今後、Apache HTTP Server 設定ファイルの学習と Tomcatとの連携を、
やろうと思います。
1.ダウンロード
(1)http://httpd.apache.org/に接続します。
Apache HTTP Server 2.2.18 Released のDownloadリンクをクリック
(2)表示されたページのStable Releases:(安定バージョンの意味)の2.2.18リンクをクリック
(3)Apache HTTP Server (httpd) 2.2.18 is the best available versionの箇所に移動するので、
「Win32 Binary without crypto (no mod_ssl) (MSI Installer): httpd-2.2.18-win32-x86-no_ssl-r2.msi」をクリック
httpd-2.2.18-win32-x86-no_ssl-r2.msiファイルがダウンロードされます。
(4)ダウンロードファイルを実行するとインストーラーが起動される
この画面の上3つの設定では、適当にダミー用の値を設定した。
ここでの設定が、httpd.confファイルに反映される。あとから変更も可能。
typicalを選択。(標準という意味)
インストールディレクトリは好みによってかえてください。
そのほかはデフォルトでよし。
2.動作確認
私の場合、インストールしたら、自動で起動されたので、ブラウザを立ち上げ、
http://localhost/ にアクセスした。
これでインストールOK
今後、Apache HTTP Server 設定ファイルの学習と Tomcatとの連携を、
やろうと思います。
tomcat6設定
tomcatバージョン6.0.32を使用しています。
1.コンテキストの設定方法
tomcat5から設定方法が変わった。
$CATALINA_HOME\conf\[engine name]\[host name]ディレクトリ配下にコンテキスト名.xmlと言う
XMLを作成して行います。[engine name]、[host name]はserver.xmlに設定されているengine名、host名です。デフォルトの設定は[engine name]が[Catalina]、[host name]が[localhost]です。今回はコンテキスト名をsample1にするため、設定ファイルは$CATALINA_HOME\conf\Catalina\localhostディレクトリ配下の、sample1.xmlファイルとなります。
設定ファイルのサンプル($CATALINA_HOME\conf\Catalina\localhost\sample1.xml)
<Context path="/smaple1" docBase="C:\MyWorks\smaple1\00rootdir" reloadable="true"/>
上記設定の場合のURL:http://localhost:8080/sample1/
このpath="/smaple1"を変えてもアクセスする時のURLは変わらなかった。アクセスするときのURLを変更したいときは、ファイル名自体をを変える必要がある。じゃあpath属性の意味って無いじゃんw(server.xmlにContextを記載していた時の名残かな?)。ためしにpath属性を削除しても、何の支障もなくサンプルが動いた。
ちなみに上記例の、対象となるコンテキストのweb.xmlの設定は以下のようにしている。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>jp.study.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
1.コンテキストの設定方法
tomcat5から設定方法が変わった。
$CATALINA_HOME\conf\[engine name]\[host name]ディレクトリ配下にコンテキスト名.xmlと言う
XMLを作成して行います。[engine name]、[host name]はserver.xmlに設定されているengine名、host名です。デフォルトの設定は[engine name]が[Catalina]、[host name]が[localhost]です。今回はコンテキスト名をsample1にするため、設定ファイルは$CATALINA_HOME\conf\Catalina\localhostディレクトリ配下の、sample1.xmlファイルとなります。
設定ファイルのサンプル($CATALINA_HOME\conf\Catalina\localhost\sample1.xml)
<Context path="/smaple1" docBase="C:\MyWorks\smaple1\00rootdir" reloadable="true"/>
上記設定の場合のURL:http://localhost:8080/sample1/
このpath="/smaple1"を変えてもアクセスする時のURLは変わらなかった。アクセスするときのURLを変更したいときは、ファイル名自体をを変える必要がある。じゃあpath属性の意味って無いじゃんw(server.xmlにContextを記載していた時の名残かな?)。ためしにpath属性を削除しても、何の支障もなくサンプルが動いた。
ちなみに上記例の、対象となるコンテキストのweb.xmlの設定は以下のようにしている。
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4">
<servlet>
<servlet-name>Hello</servlet-name>
<servlet-class>jp.study.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Hello</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
登録:
投稿 (Atom)