徒然なるままに、日ぐらしP/Cに向ひて――
メインメニュー
ブログカレンダー
2016年 11月
« 10月   1月 »
 12345
6789101112
13141516171819
20212223242526
27282930  
WordPress カテゴリ一覧
WordPress 検索


富士カメラ5

Kestrel とは、チョウゲンボウのことです。ハトくらいの小さな猛禽類、つまりワシの仲間で、ハヤブサに似ています。
チョウゲンボウにはホバリングという特技があります。よく農地の上空で空中に停止している姿が見られます。小さいけれどカッコイイ、そして最近は都会でも繁殖している頼もしいタカです。
このサイトのURLは、そんなチョウゲンボウから名前を借りました。

2016年11月1日(火曜日)

CentOS 6.5 or 7.2 + apache + mod_mono + mono + xsp で .NETアプリを動かす

カテゴリー: - flyman @ 13時19分01秒

flymanはVisualStudio 2015 Community(VS)を使ってのWEBアプリ開発を勉強中だ。いや、勉強を始めようと悪戦苦闘している。
VSには作ったアプリをテストランさせる機能が備わっている。が、それとは別にASP.NETアプリのトライアル環境が欲しい。
ふつうは、Windowsサーバー+IISで構築する。が、flymanはIISなど知らない。例えWindowsサーバーのライセンスが余っていようとも、ここはLinuxで何とかしたい。
ということで、CentOS+Apache環境で.NETアプリを動かせないか、やってみた。

ベースになるシステムは CentOS 6.5 (7.2でも動いた)、Apache (ディストリビューションのデフォルトバージョン)だ。
これに、次のソフトをインストールする。これらをソースからコンパイルする。

※ libgdiplus
  GDI+コンパチブルなAPIを提供する mono用ライブラリ

※ mono
  非Windows環境で.NETアプリを動かすためのプラットホーム

※ xsp
  mono用簡易Webサーバー(mod_monoとmonoの接続にも必要。アプリサーバーとして動く)

※ mod_mono
  apacheでmonoを使うためのモジュール

これらを入れて、最終的には ナンタラ.aspx が走るようにする。
なお、flymanは内輪のテストサーバー構築なので、以下のコマンドはすべてroot権限で実行している。
もし公開サーバーを建てるなら、それなりのユーザーで実行し、必要なときだけ sudo してほしい。

CentOSに開発環境が入っていないときは、以下のようにして先にそれを入れる。

# yum -y groupinstall ‘Development tools’

また、トラブルを避けるためSELinuxは無効化しておく。F/Wも無効化しておく。

では最初に libgdiplus を入れよう。

# cd /usr/local/src

前提となるパッケージを入れる。
# yum install -y cairo-devel libexif-devel freetype-devel fontconfig-devel glib2-devel libjpeg-devel libpng-devel libtiff-devel giflib-devel libX11-devel libXrender-devel

# wget http://download.mono-project.com/sources/libgdiplus/libgdiplus-4.2.tar.gz

# tar xzvf libgdiplus-4.2.tar.gz

# cd libgdiplus-4.2
# ./configure
# make
# make install

無事にインストールできたら、/etc/ld.so.conf ファイルの末尾に次の一行を追加する。
/usr/local/lib

これで libgdiplus のインストールは終わりだ。続いて mono を入れる。

# cd /usr/local/src

前提となるパッケージを入れる。
# yum -y install bison gettext glib2 freetype fontconfig libpng libpng-devel libX11 libX11-devel glib2-devel libexif glibc-devel urw-fonts java unzip gcc gcc-c++ automake autoconf libtool make bzip2 wget

# wget http://download.mono-project.com/sources/mono/mono-4.4.0.40.tar.bz2

# tar jxf mono-4.4.0.40.tar.bz2

# cd mono-4.4.0
# ./configure –prefix=/opt/mono
# make
# make install

# export PATH=$PATH:/opt/mono/bin
# export PKG_CONFIG_PATH=/opt/mono/lib/pkgconfig

exportの二行は、~/.bash_profile なり /etc/profile なりに追記しておくといいだろう。

続いて xsp を入れる。

# cd /usr/local/src

# wget http://download.mono-project.com/sources/xsp/xsp-4.2.tar.gz

# tar xzvf xsp-4.2.tar.gz

# cd xsp-4.2
# ./configure –prefix=/opt/mono
# make
# make install

ここまでできたら、.NETアプリの動作テストをしておく。
まず、hello.cs ファイルを以下のように作る。

class Test
{
    public static void Main()
    {
        System.Console.WriteLine("Hello World!");
    }
}

コンパイルと実行は次の通り。
# mcs hello.cs
# mono hello.exe

これで Hello World! と表示されれば、OKだ。次のテストに移ろう。

もし CentOS 7にインストールしているなら、ここで
# ln -s /usr/lib64/libMonoPosixHelper.so /usr/lib/libMonoPosixHelper.so
と、リンクを張っておく。

テストの続きだ。以下の要領で form.cs ファイルを作る。

class Test
{
    public static void Main()
    {
        System.Windows.Forms.MessageBox.Show("WinForms in Mono", "Hello World!");
    }
}

# mcs mb.cs -r:System.Windows.Forms
# mono mb.exe

で、フォームウィンドウが表示されれば成功だ。

では mod_mono のインストールにかかろう。

# cd /usr/local/src

# yum -y install httpd-devel

# wget http://download.mono-project.com/sources/mod_mono/mod_mono-3.12.tar.gz

# tar xzvf mod_mono-3.12.tar.gz

# cd mod_mono-3.12
# ./configure –prefix=/opt/mono –with-mono-prefix=/opt/mono
# make
# make install

このサイトでConfigファイルを生成する。
http://go-mono.com/config-mod-mono/
生成されたConfigファイルを /etc/httpd/conf.d/z01_mod_mono.conf として保存する。
保存したConfファイルを開いて、
MonoServerPath your.host.name "/usr/bin/mod-mono-server2"

MonoServerPath your.host.name "/opt/mono/bin/mod-mono-server4"
に変更する。

/etc/httpd/conf/mod_mono.conf ファイルが出来ているので、これを
/etc/httpd/conf.d/z00_mod_mono.conf とし、apache起動時に読まれるようにする。

/etc/httpd/conf/httpd.confを開いて、以下のように編集する。

Include conf.d/*.conf

User apache
Group apache
の後に移動させる。

以上でインストールは完了だ。Apacheを起動させる。
# chkconfig httpd on
# service httpd start

ではテストしてみよう。
設定ファイルで指定したASP.NETのドキュメントルートに hello.aspx を以下のように作成する。

<%@ Page Language="C#" %>
<html>
<body>
<p>
<%
  Response.Write("Hello, World!");
%>
</p>
</body>
</html>

ブラウザで表示されればOKだ。
さらに、
/opt/mono/lib/xsp/test 以下にテストコードがあるので、これらをすべてASP.NETドキュメントルート直下に入れて、index.aspx を表示させてみよう。
[Welcome to Mono XSP!] ページが表示されるはずだ。リンクも試してほしい。うまく動けば完了だ。

flymanは、ここまではうまくいったものの、VSで作った簡単なアプリをデプロイしてみたところ、まったく動かなかった。あらかじめmono用に作らないと難しいのかも。どうも簡単には行かないようだ。

……動作テストだけなら、Windows10 ProにIISをインストールするのが簡単だ、とあらためて思ったflymanであった……


TrackBacks

このコメントのRSS

TrackBack URL : http://www.kestrel.jp/modules/wordpress/wp-trackback.php/1149

この投稿には、まだコメントが付いていません

コメント

_CM_NOTICE

20 queries. 0.020 sec.
Powered by WordPress Module based on WordPress ME & WordPress

ヘッドライン
nikkansports
IT Pro
レスポンス
テーマ選択

(4 テーマ)