【Windows】ASP.NET + mono 【Unix】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/02/12(日) 17:39:42ID:OJZi0WbYmonoを使って運用する人たちのスレ。
本スレでやると邪魔になりそうなので立ててみました。
あまり、実運用している人はいなさそうですが、
実際どこまで使えるものなのか、細々と情報交換して
いきませんか
0002nobodyさん
2006/02/12(日) 17:51:11ID:Z3GkMZ4D0003nobodyさん
2006/02/12(日) 20:11:25ID:???3get
0004nobodyさん
2006/02/15(水) 09:10:51ID:dv8dzDUhASP.NETも他の名前空間と同じくらい安定してるならASP.NETに変えようかなと思ってるんだけど
どうですか?
0005nobodyさん
2006/02/15(水) 10:24:12ID:jYrQrxr0厳密はCGIでsystem.web名前空間のパッケージとかが利用できるのかって事です。
日本語のドキュメントが見当たらないので断念してました。
0006nobodyさん
2006/02/15(水) 10:55:29ID:CpsTFvCLCGIってのは基本的には標準入出力と環境変数の読み取りできるならどんなプログラム形態でも可能。
C#で環境変数を列挙するCGI。
Console.WriteLine("Content-Type: text/html");
Console.WriteLine();
Console.WriteLine("<html><head></head><body><table>")
IDctionary dic = Environment.GetEnvironmentVariables();
foreach(DictionaryEntry env in dic){
Console.WriteLine("<tr><td>{0}</td><td>{1}</td></tr>", env.Key, env.Value);
}
Console.WriteLine("</table></body></html>");
Widowsで.NET Frameworkを使う場合はexeをそのまま動かせばいいし
monoの場合は
#! /usr/bin/mono nantoka.exe
って1行書いたテキストファイルを実行権限つけておけばいい
0007nobodyさん
2006/02/16(木) 00:46:48ID:Kp4NJC5o詳しい説明ありがとう。
エンティティヘッダを出力すれば後は標準入出力で処理できるのは分かるんだけど、
System.Webパッケージが使えないとC#を使うメリットが減るじゃない?
Pageクラスを継承して処理できないかなぁ。
0008nobodyさん
2006/02/17(金) 13:52:21ID:???http://www.monomagazine.com/monoonline/
0009nobodyさん
NGNGトラブッたのでなんかの参考になるかもしれないので書いておきます。
FedoraCore4使ってます。
monoとxspはyumでインストールしたんでRPM管理下なんですけどすけど
Apacheは2.2.0を自分でソースからインストールしてるんで、管理外です。
mod_monoを使いたくなったので、tarボールをダウンロードしてコンパイルに挑戦。
./configure --prefix=/usr --with-apxs=/usr/local/apache2/bin/apxs
とやってみたが、APRが1.22なのがわからない?ようで、さらにオプションで
--with-apr-config=/usr/local/apache2/bin/apr-1-config
が必要でした。
さてconfigureは通ったものの、Apache 1.3 とconfigureに認識されてしまいました。
ソースファイルを見ると、 APACHE13 ってシンボルと APACHE2 ってシンボルに分けられてました。
Makefileとsrc/Makefileを開いて手動で -DAPACHE13を -DAPACHE2 に置き換え。
さて make すると、エラーが発生します。
mod_mono.c:1167: error: too few arguments to function 'apr_socket_create'
APRのマニュアル( http://apr.apache.org/docs/apr/group__apr__network__io.html#ga6 ) を見てみると、確かに足りないです。
その下のApache1系用のソースを参考に、
rv = apr_socket_create (sock, family, SOCK_STREAM, 0, pool);
に書き換え。無事make通りました。
これから設定してApache再起動です・・・動くのか不安
00109
NGNGそんな関数はないとエラーが出てしまった。
エラーを元に調べた。途中は長くなるので省略しますが
src/mod_mono.c の335行目
apr_sockaddr_port_get (&port, c->remote_addr);
を
port = c->remote_addr->port;
348行目
apr_sockaddr_port_get (&port, r->connection->local_addr);
を
port = r->connection->local_addr->port;
に修正。
CFLAGS='-DHAVE_APR_SOCKET_CONNECT'
を付けて configure し直した。
makeでerrorもwarningもなし。インストールして httpd -t で Syntax OK。
Apacheの再起動はちょっと今やりたくないんで、なにかあったらまた書きます。
0011nobodyさん
2006/03/29(水) 13:18:34ID:???0012nobodyさん
2006/06/13(火) 22:36:57ID:wI6ysnNv以下の環境:
Gentoo Linux (x86):
Linux 2.6.16 (binfmt_misc で .NET のプログラムを直接実行できるようにした)
Apache/2.0.55 (mpm_worker)
Mono JIT compiler version 1.1.13.2
で、.NET のプログラムを CGI として動作させようとしています。
CGI のソース:
public sealed class MyClass
: System.Object
{
public static void Main()
{
System.Console.WriteLine("Content-Type: text/html");
System.Console.WriteLine();
System.Console.WriteLine("Hello, World!");
}
}
(ここまで)
これをコンパイルした実行ファイルにブラウザからアクセスしようとすると、Internal Server Error が発生してしまいます。
どのようにすれば正しく動作するのでしょうか。どなたかご教授願います。
001312
2006/06/13(火) 22:38:47ID:wI6ysnNv<Directory /xxx/cgi-bin>
AllowOverride All
Options ExecCGI
Order Allow,Deny
Allow From All
AddHandler cgi-script .cgi .exe
</Directory>
(ここまで)
Apache の ScriptLog:
%% 500 /xxx/hello.exe
%request
Host: xxxx.xxxxxxxx.org
User-Agent: xxxxxxxx
Accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: ja,en-us;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
%response
(ここまで)
Apache の ErrorLog:
[Tue Jun 13 22:26:26 2006] [error] [client 192.168.0.2] Premature end of script headers: hello.exe
(ここまで)
* シェル上では正しく実行できました。
0014nobodyさん
2006/06/14(水) 01:24:52ID:???>[Wed Jun 14 01:06:14 2006] [error] [client 192.168.0.10] mono: mono-codeman.c:257: new_codechunk: Assertion `!err' failed.
上ののエラーもあったら、SELinuxの設定を確認汁。
参考: ttp://www.gotmono.com/cgi-bin/yabb/YaBB.pl?board=ASPX;action=display;num=1120966236
それでも、
>[Wed Jun 14 01:13:22 2006] [error] [client 192.168.0.10] ** (/var/www/cgi-bin/test.cgi:4502): CRITICAL **: _wapi_shm_file_open: shared file [/var/www/.wapi/shared_data-oreore.localdomain-Linux-i686-308-10-0] open error: No such file or directory
とかエラーがでるなら、 /var/www/.wapiを作ってオーナーをapacheのユーザーにしてみれ。
これで動いたが、なんか違う気がする(^^;
0015nobodyさん
2006/11/03(金) 00:57:34ID:pVbGUuQXCGIで動かしているperlスクリプトで`mono /xxx/yyy.exe`を実行すると
** (/xxx/yyy.exe:4504): CRITICAL **: _wapi_shm_file_open: shared file [/.wapi/shared_data-
reserve-Linux-i686-308-10-0] open error: そのようなファイルやディレクトリはありません
とエラーが出ます。
ところが同じperlスクリプトをシェルから実行すると正常に動きます。
何か環境変数等を設定する必要があるのでしょうか?
001615
2006/11/03(金) 07:41:30ID:???14の後半で書かれている内容と同じ方法で解決しました。
/.wapiを作ってapacheのユーザに書き込み可能なパーミッションを与えたらOKでした。
スレ汚しすいませんでした。
0017nobodyさん
2007/10/29(月) 21:41:28ID:GfMM9Nbjhttp://itpro.nikkeibp.co.jp/article/NEWS/20071029/285682/
0018nobodyさん
2007/11/26(月) 02:28:42ID:ybhmwN9thttp://www.mono-project.com/
消しゴムじゃないMONOを使ってみるスレ 2個目(プログラム板)
http://pc11.2ch.net/test/read.cgi/tech/1100616350/l50
■ このスレッドは過去ログ倉庫に格納されています