「m_apache」の編集履歴(バックアップ)一覧はこちら
「m_apache」(2010/02/09 (火) 09:05:27) の最新版変更点
追加された行は緑色になります。
削除された行は赤色になります。
MGWSIで Apache から GT.M を使えるようにしたときの作業メモです。
MGWSI導入については → [[こちら>P.011]]
- GT.M / MUMPS向けの通信プロセス は準備済みとします。
-- 仲介用デーモンプロセスは使わない設定にします
-- 使うようにもできるけど、使わない方がパフォーマンスでるらしいので
* 最初の一歩
- ~/mgwsi/bin/m_apache22.so を /usr/lib/apache2/modules/ 配下へコピー
- /etc/apache2/mods-avalable/ 配下へ以下の2ファイルを作成
mgwsi.load
LoadModule m_apache_module /usr/lib/apache2/modules/m_apache22.so
mgwsi.conf
SetEnv MGWSI_PORT 7041
- ここで a2enmod で mgwsi を有効にするのが流儀のようですが…
-- めんどうなので、手作業で mods-enable 配下にシンボリックリンクをはりました
- Apache を再起動
- 以下のような HTMLファィルを作成し
<html>
<head>
<title>First Step</title>
</head>
<body>
<form method="POST" action="test.mgwsi?xxx=yyy1&xxx=yyy2">
<input type="text" name ="a" value="b" /> <br />
<br />
<input type="text" name ="c" value="d" /> <br />
<br />
<input type="submit" name="go" value="SUBMIT" />
</form>
</body>
</html>
- SUBMIT ボタンをクリックすると送信した情報がブラウザに表示されます
-- 拡張子 .mgwsi をもつページをリクエストした場合は、内容が GT.M に送り出されます
-- GT.M の受け側は(省略されているので)WEB^%ZMGWSIS ルーチンが想定されます
--- ZMGWSI.RO を登録した時に作成される以下の部分が相当します
CGI … サーバの情報
DATA … GET なり POST なりで送った情報
WEB(CGI,DATA)
N REQ,X,Y
S REQ=""
S REQ=REQ_"HTTP/1.1 200 OK"_$C(13,10)
S REQ=REQ_"Content-type: text/plain"_$C(13,10)
S REQ=REQ_"Connection: close"_$C(13,10)
S REQ=REQ_$C(13,10)
W REQ
W $G(CGI)
S X="" F S X=$O(CGI(X)) Q:X="" W X_"="_$G(CGI(X))_$C(13,10)
W $C(13,10)
S X="" F S X=$O(DATA(X)) Q:X="" S Y="" F S Y=$O(DATA(X,Y)) Q:Y="" W X_":"_Y_"="_$G(DATA(X,Y))_$C(13,10)
Q
* GT.M ルーチンを自作
- TESTDSP1.m を作成&コンパイル
※分かりやすいように、命令は省略せずに書きました。
TESTDSP1(CGI,DATA)
NEW REQ
SET REQ=""
SET REQ=REQ_"HTTP/1.1 200 OK"_$CHAR(13,10)
SET REQ=REQ_"Content-type: text/plain"_$CHAR(13,10)
SET REQ=REQ_"Connection: close"_$CHAR(13,10)
SET REQ=REQ_$CHAR(13,10)
WRITE REQ
WRITE ^animal($GET(DATA("key",1)))_$CHAR(13,10)
QUIT
- mgwsi.conf を変更&Apache を再起動
SetEnv MGWSI_PORT 7041
SetEnv MGWSI_M_FUNCTION ^TESTDSP1
- 以下のような HTMLファィルを作成し、ブラウザから SUBMIT をクリックするとブラウザに鳴き声が表示されます
<html>
<head>
<title>My Routine</title>
</head>
<body>
<form method="POST" action="test.mgwsi">
<select name="key">
<option value="dog">DOG
<option value="cat">CAT
</select><br />
<br />
<input type="submit" name="go" value="SUBMIT" />
</form>
</body>
</html>
- 拡張子が .mgwsi の場合は無条件に(指定された)GT.M ルーチンに渡されます
- 厳密にいうと .ewd も同様の動きとなります。
- もし拡張子より前の部分になにか意味を持たせたい場合は、GT.M ルーチンの方で実装することになります
* XMLHttpRequest を使う
- submit をかけずに、いわゆる Ajax っぽく使う場合の説明です。
- TESTDSP1.m を変更&コンパイル
※改行をつけなくしただけです
TESTDSP1(CGI,DATA)
NEW REQ
SET REQ=""
SET REQ=REQ_"HTTP/1.1 200 OK"_$CHAR(13,10)
SET REQ=REQ_"Content-type: text/plain"_$CHAR(13,10)
SET REQ=REQ_"Connection: close"_$CHAR(13,10)
SET REQ=REQ_$CHAR(13,10)
WRITE REQ
WRITE ^animal($GET(DATA("key",1)))
QUIT
- ~/mgwsi/java/m_client.js をWEBディレクトリへコピー
-- 自前で書ける人は自作でもいいのですが、せっかくあるんで使ってみました
- 以下のような HTMLファィルを作成し、ブラウザから GET VOICE をクリックするとテキストボックスに鳴き声が表示されます
<html>
<head>
<title>XMLHttpRequest</title>
<script type="text/javascript" src="m_client.js"></script>
<script type="text/javascript">
<!--
function get_val()
{
var k = document.myform.key;
var r = document.myform.res;
var d ='test.mgwsi?key=' + k.options[k.selectedIndex].value;
var res = server_proc(d);
r.value = res;
}
-->
</script>
</head>
<body>
<form name="myform">
<select name="key">
<option value="dog">DOG
<option value="cat">CAT
</select><br />
<br />
<input type="text" name ="res" value="" size=20 /> <br />
<br />
<input type="button" name="go" value="GET VOICE" onClick="get_val()" />
</form>
</body>
</html>
※うまくとれない時は、Apache の再起動をするといいかもしれません。
MGWSIで Apache から GT.M を使えるようにしたときの作業メモです。
MGWSI導入については → [[こちら>P.011]]
- GT.M / MUMPS向けの通信プロセス は準備済みとします。
-- 仲介用デーモンプロセスは使わない設定にします
-- 使うようにもできるけど、使わない方がパフォーマンスでるらしいので
* 最初の一歩
- ~/mgwsi/bin/m_apache22.so を /usr/lib/apache2/modules/ 配下へコピー
- /etc/apache2/mods-avalable/ 配下へ以下の2ファイルを作成
mgwsi.load
LoadModule m_apache_module /usr/lib/apache2/modules/m_apache22.so
mgwsi.conf
SetEnv MGWSI_PORT 7041
- ここで a2enmod で mgwsi を有効にするのが流儀のようですが…
-- めんどうなので、手作業で mods-enable 配下にシンボリックリンクをはりました
- Apache を再起動
- 以下のような HTMLファィルを作成し
<html>
<head>
<title>First Step</title>
</head>
<body>
<form method="POST" action="test.mgwsi?xxx=yyy1&xxx=yyy2">
<input type="text" name ="a" value="b" /> <br />
<br />
<input type="text" name ="c" value="d" /> <br />
<br />
<input type="submit" name="go" value="SUBMIT" />
</form>
</body>
</html>
- SUBMIT ボタンをクリックすると送信した情報がブラウザに表示されます
-- 拡張子 .mgwsi をもつページをリクエストした場合は、内容が GT.M に送り出されます
-- GT.M の受け側は(省略されているので)WEB^%ZMGWSIS ルーチンが想定されます
--- ZMGWSI.RO を登録した時に作成される以下の部分が相当します
CGI … サーバの情報
DATA … GET なり POST なりで送った情報
WEB(CGI,DATA)
N REQ,X,Y
S REQ=""
S REQ=REQ_"HTTP/1.1 200 OK"_$C(13,10)
S REQ=REQ_"Content-type: text/plain"_$C(13,10)
S REQ=REQ_"Connection: close"_$C(13,10)
S REQ=REQ_$C(13,10)
W REQ
W $G(CGI)
S X="" F S X=$O(CGI(X)) Q:X="" W X_"="_$G(CGI(X))_$C(13,10)
W $C(13,10)
S X="" F S X=$O(DATA(X)) Q:X="" S Y="" F S Y=$O(DATA(X,Y)) Q:Y="" W X_":"_Y_"="_$G(DATA(X,Y))_$C(13,10)
Q
* GT.M ルーチンを自作
- TESTDSP1.m を作成&コンパイル
※分かりやすいように、命令は省略せずに書きました。
TESTDSP1(CGI,DATA)
NEW REQ
SET REQ=""
SET REQ=REQ_"HTTP/1.1 200 OK"_$CHAR(13,10)
SET REQ=REQ_"Content-type: text/plain"_$CHAR(13,10)
SET REQ=REQ_"Connection: close"_$CHAR(13,10)
SET REQ=REQ_$CHAR(13,10)
WRITE REQ
WRITE ^animal($GET(DATA("key",1)))_$CHAR(13,10)
QUIT
- mgwsi.conf を変更&Apache を再起動
SetEnv MGWSI_PORT 7041
SetEnv MGWSI_M_FUNCTION ^TESTDSP1
- 以下のような HTMLファィルを作成し、ブラウザから SUBMIT をクリックするとブラウザに鳴き声が表示されます
<html>
<head>
<title>My Routine</title>
</head>
<body>
<form method="POST" action="test.mgwsi">
<select name="key">
<option value="dog">DOG
<option value="cat">CAT
</select><br />
<br />
<input type="submit" name="go" value="SUBMIT" />
</form>
</body>
</html>
- 拡張子が .mgwsi の場合は無条件に(指定された)GT.M ルーチンに渡されます
-- ちなみに .ewd も同様の動きとなります。
-- 別の拡張子に対応するよう指定することもできるようです。
- もし拡張子より前の部分になにか意味を持たせたい場合は、GT.M ルーチンの方で実装することになります
* XMLHttpRequest を使う
- submit をかけずに、いわゆる Ajax っぽく使う場合の説明です。
- TESTDSP1.m を変更&コンパイル
※改行をつけなくしただけです
TESTDSP1(CGI,DATA)
NEW REQ
SET REQ=""
SET REQ=REQ_"HTTP/1.1 200 OK"_$CHAR(13,10)
SET REQ=REQ_"Content-type: text/plain"_$CHAR(13,10)
SET REQ=REQ_"Connection: close"_$CHAR(13,10)
SET REQ=REQ_$CHAR(13,10)
WRITE REQ
WRITE ^animal($GET(DATA("key",1)))
QUIT
- ~/mgwsi/java/m_client.js をWEBディレクトリへコピー
-- 自前で書ける人は自作でもいいのですが、せっかくあるんで使ってみました
- 以下のような HTMLファィルを作成し、ブラウザから GET VOICE をクリックするとテキストボックスに鳴き声が表示されます
<html>
<head>
<title>XMLHttpRequest</title>
<script type="text/javascript" src="m_client.js"></script>
<script type="text/javascript">
<!--
function get_val()
{
var k = document.myform.key;
var r = document.myform.res;
var d ='test.mgwsi?key=' + k.options[k.selectedIndex].value;
var res = server_proc(d);
r.value = res;
}
-->
</script>
</head>
<body>
<form name="myform">
<select name="key">
<option value="dog">DOG
<option value="cat">CAT
</select><br />
<br />
<input type="text" name ="res" value="" size=20 /> <br />
<br />
<input type="button" name="go" value="GET VOICE" onClick="get_val()" />
</form>
</body>
</html>
※うまくとれない時は、Apache の再起動をするといいかもしれません。