Amazon

2020年10月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

最近のトラックバック

無料ブログはココログ

« 中国製 Bluetoothマウスを購入しました(型番不明) | トップページ | Roland RH-300を購入しました »

2020年9月 5日 (土)

VisualStudio2019で作成したASP.NETCoreのアプリをLinuxで動かしてみる

今回はVisualStudio2019で作成したASP.NET CoreのアプリをLinux環境で動かしてみます。
環境は下記のリンク先で作成した環境を使用します。今回もLinuxはDebian 10を使用しています。

  .Net Core ASP.NET MVCをLinux(Debian + Docker)で動かしてみる : 準備編





VisualStudioCodeは非常に便利で日々利用しています。このブログもVisualStudioCodeで書いているのですが、 .NETで開発を行うのであればやっぱり、VisualStudioの方が何かと効率が良いのも事実です。しかし、作成したアプリの 実行環境としてはLinuxを利用したいと言う事もあるかと思います。
と、いう訳で今回はVisualStudio+Windows10で作成したアプリケーションをLinuxの環境にデプロイして みたいと思います。

わざわざまとめておいてなんですが、基本的には単純にLinuxにファイルをコピーしてdotenetコマンドで実行するだけで 動作します。しかし、細かい所で気を遣う必要がありますのでそのあたりのまとめです。

基本的には下記の流れとなります。

  1. VisualStudioでASP.NET Coreのアプリを作る
  2. VisualStudioで発行する
  3. 発行されたディレクトの中身を全てLinuxにコピーする
  4. Linuxで実行する



・アプリケーション構築

基本的にはVisualstudio2019で自由に構築して構いません。気を付けなければいけないのは以下の点です。

  ・.NET Coreを使用する事
    当然ですが、.NET Frameworkを使用した場合はWindows専用になります
  ・動作確認時にIISではなくKestrelを使用する事
    下記の様にIISではなくプロジェクト名の方を選択して動作を確認して下さい

20200814vslinuxdotnetcore08

基本的には以上さう守っていれば大丈夫です。


・(おまけ)Blazor WebAssemblyの設定

BlazorのWebAssembly版をLinuxで動作させる為には、以下の設定を実施するのが簡単です。
プロジェクトを作成する際に以下の様に設定します。

1. 新しいプロジェクトの作成から Blazorアプリ を選択します
20200814vslinuxdotnetcore09

2. 新しいプロジェクトを作成します
20200814vslinuxdotnetcore10

3. ASP.NET Core hostedのチェックを入れます
20200814vslinuxdotnetcore11

上記の様にプロジェクトを作成するとClient/Server/Sharedの三つのプロジェクトに分かれたソリューションが自動的に生成されます。 この構成から作り始めれば、どこに何を実装するかが明確になっています。

このソリューションで作成したアプリケーションを"発行"する場合はServerのプロジェクトで発行を実施して下さい。 ("発行"については後述します)


・(おまけ)アプリケーションの設定

状況にもよりますが、ListenするアプリケーションのIPアドレスを設定する必要があります。特に問題がなければ、 どのIPアドレスであっても処理を受け付ける様に設定した方が楽です。

appsettings.jsonと言う名前のファイルがあるはずなので下記の様に編集します。これで、ローカルホスト以外 からアクセスもListenする様になります。

:width

VisualStudioで単純に作成した場合は、localhostのみをListenする設定になっています。これはこれで、nginx等の リバースプロキシを使用する場合は便利でセキュアな設定となります。しかし、複数のアプリケーションを起動したい場合は ポートをずらす必要がありますので、実際に使用する場合ははなにがしかの設定をする事が多いでしょう。


・アプリケーションの発行(ビルド)の設定

アプリケーションはLinuxに配置する為に発行(Publish)する事になります。発行時にビルドも併せて行われますので、 発行の設定をするとビルドの設定もした事になります。

発行の設定はソリューションエクスプローラーでソリューションを右クリックして"発行"をクリックします。

20200814vslinuxdotnetcore05

発行の方法は色々ありますが、"ファイルシステム"を選択します。ターゲットの場所は適当な所で良いでしょう。

20200814vslinuxdotnetcore06

その次の画面では、構成は"Release"で、ターゲットフレームワークは利用したいバージョンを選択。配置モードは"フレームワーク依存"を選択します。ターゲットの場所は適当な所で良いでしょう。
また、ターゲットランタイムは"移植可能"を選択しておけばWindowsでもLinuxでも動く状態となります。 ファイル公開オプションは"公開前に既存のファイルを全て削除する"にチェックを入れておくと綺麗になると思います。

以上で、Linuxでも動作する型式で発行ができました。


・Linuxへのデプロイ

ホストとなるLinuxサーバに発行されたフォルダのファイルを全てコピーするだけです。お手軽に手作業でやる場合は、 WinSCPみたいなツールでコピーすると良いでしょう。実際に運用を回すためには、gitlab等に一度コミットしてから、cloneするのも良いでしょう。

今回は、適当にプロジェクト名と同じ名前のフォルダを以下の様に作成し、そこに発行された全ファイルをコピーしました。
  /data/www/ASPdotNETCoreTest01
  /data/www/BlazorTest02



・アプリケーションの実行

これで実行の準備が整いました。早速実行してみましょう。実行は簡単です以下の通りdotnetコマンドで実行するだけです。



他のパソコンからブラウザでアクセスすると確認できます。ASP.NET CoreもBlazor WebAssemblyもどちらも同じ様に実行できます。 Blazor WebAssemblyの場合も特に設定する事もなく実行する事が可能です。

20200814vslinuxdotnetcore01
20200814vslinuxdotnetcore02
20200814vslinuxdotnetcore03


下記の様なエラーが出た場合は、既にそのIPアドレス・ポートが使用されています。



例えば下記のリンク先の様にサービス化などを既にやっている場合はIPアドレス・ポートを使用しているサービスを停止してからで無いとアプリケーションを起動できません。 systemctl stopコマンドを実行して、サービスを停止してから実行してください。

  .Net Core ASP.NET MVCをLinux(Debian + Docker)で動かしてみる : Nginx編




以上です。簡単に実行できました。この流れさえ確立しておけば、開発効率の高いVisualStudioでアプリケーションを開発して、 実行する基盤としては、ライセンス面・性能面等で優位性の高いLinuxでアプリケーションを動作させる事が可能です。 さらに、Dockerを組み合わせたりすると、より利便性が向上すると思います。




如何でしょうか。Microsoft純正の.NETがLinuxで動作する。しかも、Blazor WebAssemblyの様な新しい技術が当たり前の様に動作するというのは ありがたいですね。Linuxの場合は、GUIを使用しない事による軽量なサーバを構成したり、Dockerと組み合わせた運用等においてWindowsと比較した場合に 大きな利点がありますので、この環境で.NET(C#)が利用できると言うのはありがたいことです。.NET Frameworkに慣れ親しんだ開発者の方は今後の事も考えると、 そろそろ、.NET Frameworkから.NET Coreへ移行していく事も考えても良いのではないでしょうか。どうせ殆ど同じですから。





この手の作業をするならLinuxはCentOSかUbuntuが多いかもしれませんが…。なんとなくDebianが好きなのでDebianでやっていたりします。 DebianもMicrosoftの公式サイトにちゃんとやり方が載っていますし、割と長い期間使えるイメージもありますし、使い勝手は良いと思います。 そう言えば、初めて触ったLinuxはVineLinuxという当時日本語環境に強いと言われていたLinuxでした。

  Vine → Suse → Debian → Ubuntu

と、変遷してきましたが、今でもサーバを作る際にはDebianを選ぶことが多いです。やっぱり使い易さですかね。 UbuntuServerも使いますがDebianの方がよりシンプルで良いと思っています。










« 中国製 Bluetoothマウスを購入しました(型番不明) | トップページ | Roland RH-300を購入しました »

C#」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« 中国製 Bluetoothマウスを購入しました(型番不明) | トップページ | Roland RH-300を購入しました »