Help us understand the problem. What is going on with this article?

【2015年版】CentOS7 + Nginx に ASP.NET 4.0 環境を構築する

More than 3 years have passed since last update.

そろそろサーバOSを Windows から Linux へ移行したいが、.Net のコードを PHP に書き換えるのは嫌だ!そんな諸兄に贈ります。

さらに、PHP と ASP.NET を同居させてしまおうという企画です。

ASP.NETサーバのインストール手順(CentOS)

  1. リポジトリを追加します
    $ sudo rpm --import "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x3FA7E0328081BFF6A14DA29AA6A19B38D3D831EF"
    $ sudo yum-config-manager --add-repo http://download.mono-project.com/repo/centos/

  2. Mono をインストールします
    $ sudo yum install mono-complete

  3. ASP.NETサーバをインストールします
    $ sudo yum install xsp

たったのこれだけでインストールは終わり!簡単ですね。
きちんとインストールされているかは
$ fastcgi-mono-server4 --version
これでバージョンを確認できます。.NET 4.0 になっていますね。この fastcgi-mono-server4 が ASP.NET 4.0 サーバ(本番用)の本体なので、これを常時起動すればいいわけです。

ちなみに試験用サーバとして xsp4 もインストールされている筈です。
$ xsp4 --version
これで存在を確認できますね。

Nginx の設定

次に、Nginx から ASP.NETサーバ(Monoサーバ)をコールするように設定します。

前提として既に Nginx はインストール済みとします。FastCGIを経由させるので、設定ファイルを開き下記の location ブロックを追加します。

location ~ \.aspx$ {
    fastcgi_pass   127.0.0.1:9001;
    fastcgi_index  default.aspx;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    include        fastcgi_params;
}

はい、ここでのポイントは TCP 9001番ポートにしている部分です。大抵の場合 PHP の処理用に 9000番を使っていることでしょう。なのでそれを邪魔しないよう Monoサーバは 9001番を使うことにします。
これで aspx 拡張子のファイルはすべて Monoサーバで処理されるようになります。

さらにディレクトリインデックスの設定もやっておきましょう。

location / {
        index  index.html index.htm index.php default.aspx;
}

index を定義している location ブロックが既に存在する筈なので、その行に default.aspx を追記します。

Monoサーバのサービス化

いよいよ最後の仕上げです。Monoサーバを常駐させないといけません。これも簡単!ファイルをひとつ作成するのみです。

$ sudo vi /etc/systemd/system/mono-server.service

でファイルを新規作成します。内容は下記の通り。

[Unit]
Description=Mono Server
Before=nginx.service
After=nss-user-lookup.target

[Service]
EnvironmentFile=
Type=simple
ExecStart=/usr/bin/fastcgi-mono-server4 \
        --applications=www.kodama.com:/:/var/www/html/ \
        --socket=tcp:127.0.0.1:9001 \
        --verbose=true
User=nginx
Group=nginx

[Install]
WantedBy=multi-user.target

上記の変更箇所は

ドメイン名:www.kodama.com
ドキュメントディレクトリ:/var/www/html/
Nginxのユーザ:nginx
Nginxのグループ:nginx

となっているので、それぞれ自分の環境に合わせて変更してくださいね。
そしてこのファイルを保存したら、通常のサービスと同じように

$ sudo systemctl start mono-server

で起動しますし、enable にしておけば自動起動もします。

おしまい

これでもう CentOS 上で aspx ファイルが実行される筈です。しかも .php ファイルの場合は PHP として実行されます。
まとめてみると意外と簡単でしたね。私が見たところ英語サイトも含め簡潔に説明されているサイトが無かったようなので、記事を執筆してみました。

ASP.NET を CentOS で使いたいと考えている皆さんのお役に立てれば何よりです! Enjoy:thumbsup:

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした