LoginSignup
22
24

More than 5 years have passed since last update.

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

Last updated at Posted at 2015-11-03

そろそろサーバ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:

22
24
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
22
24