Skip to content

DNET_DotNetCoreInstallDeploy

nishi_74322014 edited this page Sep 11, 2026 · 1 revision

.NET Coreのインストールとデプロイ

概要

  • .NET CoreをLinux上にインストールして、
  • .NET Coreアプリをビルド、デプロイ、実行する。

全容

仕組

  • *.dllファイルを動かしているように見えるのでWineなどを
    使用しているようにみえるが、

  • .NETの*.dllファイルは、ネイティブではなく中間言語なので、コレを使用して、
    Linuxネイティブの実行イメージを再生させる仕組みで動作している模様。

    • Is Core.NET dependent on WINE? - Full Framework - .NET Foundation Forums
      http://forums.dotnetfoundation.org/t/is-core-net-dependent-on-wine/1673

      • Comparing WINE and .NET Core is pretty much apples-and-oranges.
      • WINE is an alternate implementation of a lot of the Windows DLLs,
        so that Windows programs can (attempt) to run on Linux.
      • .NET Core allows code to be compiled and run natively on Linux.

サンプル

下記は、Visual Studioプロジェクトのサンプル(NuGetを使用した)。

using System;
using Newtonsoft.Json;

namespace ConsoleApp1
{
     class Program
     {
         static void Main(string[] args)
         {
             string[] str_ary = new string[] { "aaa", "bbb", "ccc" }; Console.WriteLine(JsonConvert.SerializeObject(str_ary));
             Console.WriteLine(Console.ReadKey().KeyChar);
         }
     }
}

CentOS

.NET Coreのインストール(CentOS)

SCDの場合を除き、
.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。

  • Linux における .NET Core の前提条件 >
    CentOS 7.1 (64 bit) および Oracle Linux 7.1 (64 bit) 用の .NET Core をインストールする
    https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#install-net-core-for-centos-71-64-bit--oracle-linux-71-64-bit

    • 信頼済みとして Microsoft プロダクト キーを登録。

      sudo rpm --import https://packages.microsoft.com/keys/microsoft.asc
      
    • 必要なバージョンのホスト パッケージ フィードを設定。

      sudo sh -c 'echo -e "[packages-microsoft-com-prod]\nname=packages-microsoft-com-prod \nbaseurl=https://packages.microsoft.com/yumrepos/microsoft-rhel7.3-prod\nenabled=1\ngpgcheck=1\ngpgkey=https://packages.microsoft.com/keys/microsoft.asc" > /etc/yum.repos.d/dotnetdev.repo'
      
    • .NET Core をインストール。

      sudo yum update
      sudo yum install libunwind libicu <--- 何気に、SCDでも必要な前提ライブラリをインストールしている。
      sudo yum install dotnet-sdk-2.0.0
      
    • パスに dotnet を追加します。

      export PATH=$PATH:$HOME/dotnet
      
    • dotnet --version コマンドを実行して、インストールが成功したことを確認。

      dotnet --version
      

CentOS上でビルドして動かす(FDD & SCD)

dotnet publishコマンドのオプションで、
FDDSCDを選択可能であるもよう。

dotnet new consoleで生成したものをビルド・実行(CentOS)

  • コンソールアプリケーションテンプレートからソースを作成
    https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet-new?tabs=netcore2x

    $ dotnet new console
    
  • ビルド
    https://docs.microsoft.com/ja-jp/dotnet/core/tools/dotnet-publish?tabs=netcore2x

    • プロジェクト・ファイルのあるフォルダでオプションから
      FDDSCDを選択してビルドを実行する。

      • FDD

        $ dotnet publish -f netcoreapp2.0
        
      • SCD

        $ dotnet publish -c Release -r centos.7-x64
        
    • Visual Studioで作成したプロジェクト・ソリューションもビルド可能。

  • 実行
    dotnet new consoleで、name を省略したとき、
    プロジェクト名はローカル・フォルダ名になる。
    ここでは、dotフォルダでdotnet new consoleしたのでdll名もdotになる。

    $ dotnet dot.dll
    Hello World!
    

Visual Studioで生成したものをビルド・実行(CentOS)

Visual Studioで生成したものを、
上記と同じ手順で、ビルド・実行可能。

Windows上でビルドしたものを動かす(CentOS)

  • ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
  • Windows上でVisual Studioを使用して、FDDSCDの其々のビルドを行う。

FDD(CentOS)

Visual Studioで生成したものをビルド・実行

  • 生成
    Visual Studioのプロジェクト・テンプレートを使用して、.NET Coreアプリケーションを生成する。

  • ビルド
    Visual Studioを使用してビルドする。

  • 実行
    Visual Studioを使用してビルドされたアセンブリを直接指定。

    $ dotnet ./ConsoleApp1.dll
    ["aaa","bbb","ccc"]
    

SCD(CentOS)

Visual Studioで生成したものをビルド・実行

$ sudo yum list installed libunwind lttng-ust libcurl openssl-libs libuuid krb5-libs libicu zlib
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Installed Packages
krb5-libs.x86_64                    1.15.1-8.el7                       @anaconda
libcurl.x86_64                      7.29.0-42.el7_4.1                  @updates
libicu.x86_64                       50.1.2-15.el7                      @base
libunwind.x86_64                    2:1.2-2.el7                        @base
libuuid.x86_64                      2.23.2-43.el7_4.2                  @updates
openssl-libs.x86_64                 1:1.0.2k-8.el7                     @anaconda
zlib.x86_64                         1.2.7-17.el7                       @anaconda
  • 以下のように、プロジェクト・ファイル中の
    PropertyGroup - RuntimeIdentifiersセクションに、ランタイム識別子 (RID) を足す。
<RuntimeIdentifiers>win10-x64;osx.10.11-x64</RuntimeIdentifiers>
<RuntimeIdentifiers>win10-x64;centos.7-x64;ubuntu.16.04-x64</RuntimeIdentifiers>
- .NET Core のランタイム識別子 (RID) のカタログ\
  https://docs.microsoft.com/ja-jp/dotnet/core/rid-catalog
  • RuntimeIdentifiers毎に発行するが、エラーになるので、その前に、
    「obj\Release\netcoreapp2.0\発行先フォルダ\」に、Project出力の*.dllを
    コピーしておく(現在必要な手順だが将来的に解消する可能性はある)。

  • 実行

    $ ./ConsoleApp1
    ["aaa","bbb","ccc"]
    
  • 参考

Ubuntu

.NET Coreのインストール(Ubuntu)

SCDの場合を除き、
.NET Core ネイティブ インストーラーにより、.NET Core をインストールする。

  • Linux における .NET Core の前提条件 >
    .NET Core for Ubuntu 14.04、Ubuntu 16.04、Ubuntu 16.10 および Linux Mint 17、Linux Mint 18 (64 ビット)
    https://docs.microsoft.com/ja-jp/dotnet/core/linux-prerequisites?tabs=netcore2x#install-net-core-for-ubuntu-1404-ubuntu-1604-ubuntu-1610--linux-mint-17-linux-mint-18-64-bit

    • 信頼済みとして Microsoft プロダクト キーを登録。

      curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
      sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/microsoft.gpg
      
    • 必要なバージョンのホスト パッケージ フィードを設定。

      sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/microsoft-ubuntu-xenial-prod xenial main" > /etc/apt/sources.list.d/dotnetdev.list'
      sudo apt-get update
      
    • .NET Core をインストール。

      sudo apt-get install dotnet-sdk-2.0.0
      
    • dotnet --version コマンドを実行して、インストールが成功したことを確認。

      dotnet --version
      

Ubuntu上でビルドして動かす(FDD & SCD)

dotnet publishコマンドのオプションで、
FDDSCDを選択可能であるもよう。

dotnet new consoleで生成したものをビルド・実行(Ubuntu)

dotnet new consoleで生成したものを、
CentOS と同じ手順で、ビルド・実行可能。

ランタイム識別子 (RID)だけ異なる。

$ dotnet publish -c Release -r ubuntu.16.04-x64

Visual Studioで生成したものをビルド・実行(Ubuntu)

Visual Studioで生成したものを、
上記と同じ手順で、ビルド・実行可能。

Windows上でビルドしたものを動かす(Ubuntu)

  • ここでは、Visual Studioでビルドする手順のみ説明する(dotnetでもビルドできるが)。
  • Windows上でVisual Studioを使用して、FDDSCDの其々のビルドを行う。

FDD(Ubuntu)

プラットフォームに依存しないので、CentOSの手順と同じになる。

SCD(Ubuntu)

Visual Studioで生成したものをビルド・実行

参考

Microsoft Docs

osscons.jp

ASP.NET Coreのインストールとデプロイ

ASP.NET Coreのインストールとデプロイ

Red Hat Customer Portal > Chapter 1.

OpenShiftセカンド・ステップの該当節を参照。

マイクロソフト系技術情報 Wiki

移行メモ

  • SCD(CentOS)の「将来的に解消得する可能性はある」は「解消する可能性はある」に正した。
  • マイクロソフト系技術情報 Wiki(techinfoofmicrosofttech.osscons.jp)への リンクは、移行済みの MS_DotNetCoreDeployment / MS_ASPNETCoreDeployment に張り替えた。

Tags: 移行, .NET Core, Linux, CentOS, Ubuntu, デプロイ, FDD, SCD

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally