Ubuntu上でASP.NET Coreアプリをデプロイするまでの手順を確認したので整理します。
| 項目 | バージョン |
|---|---|
| OS(ビルド環境) | Windows 11 Pro |
| ビルドツール | Visual Studio 2022 Community |
| OS(実行環境) | Ubuntu 20.04 |
| .NET | 8.0.100 |
■アプリの構築
今回はWindows+Visual Studio 2022上でアプリを開発し、実行をUbuntu上で行う、という想定で確認してみました。今回はデプロイの確認が目的なのでアプリの内容はプロジェクトテンプレートのままとしています。
「ASP.NET Core Webアプリ」テンプレートを選択します。

プロジェクト名はここでは「HelloWorld」とします。

フレームワークに「.NET 8.0」を選択し、今回は「HTTPS用の構成」を外します。

作成を実行すると下記のようにプロジェクトテンプレートが展開されます。ここではそのまま「ビルド」>「デバッグ」を実行します。


■配置(デプロイ)の準備
次に作成したアプリケーションを実行環境に配置する準備をします。Visual Studioの「ビルド」>「HelloWorldの発行」をクリックします。

公開場所として「フォルダー」を選択します。

配布用モジュール等が出力される場所を指定します。今回はビルド環境のローカルフォルダに出力し、後に別途ファイルコピーで配置先に展開します。

前画面で完了ボタン押下で、以下のように発行プロファイルが作成されます。

プロファイルが作成されたら、実際の発行を行います。発行ボタンをクリックすると指定した出力先に配布用モジュール一式が出力されます。発行の前に「すべての設定を表示」を見てみると、構成、ターゲットフレームワーク、配置モードなどを確認・変更できます。

赤枠の「配置モード」は今回選択する「フレームワーク依存」とは別に「自己完結」をいう選択肢があります。自己完結では、アプリに加えて.NET Coreフレームワーク自体もpublishフォルダに配信し、配置先に一緒に展開する方法となります。一方今回の「フレームワーク依存」(デフォルト)は、配置先の.NET Core フレームワークを使用する方法となります。


以下のように出力されます。アプリ名.exeとアプリ名.dllはセットでの出力のようです。

■実行先の準備
実行環境側に.NET Coreフレームワークの準備をします。まずMicrosoftパッケージリポジトリを追加して取得先を準備します。
wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
rm packages-microsoft-prod.deb
次に.NETフレームワークをインストールします。ランタイムでもよいですが、ここではSDKをインストールしています。
sudo apt-get update && \
sudo apt-get install -y dotnet-sdk-8.0
インストール出来たらバージョンを確認します。今回は「8.0.100」と出力されることを確認しておきます。
dotnet --version
次にUbuntu上へビルドしたアプリをコピーしてきます。今回は「/var/apps/helloapp」ディレクトリに配置することにします。
sudo mkdir /var/apps
sudo cp -r ~/デスクトップ/publish /var/apps/helloapp
■実行確認
実行確認をします。以下のような表示になるのでリッスンしているポート等確認し、Ubuntu側のブラウザからアクセスします。結果は開発環境でデバッグ実行したときと同じ画面が表示されることを確認します。実行元のUbuntu以外からアクセス確認する場合はUbuntu側のファイアウォール等の設定が必要なケースがありますので注意します。
cd /var/apps/helloapp
dotnet HelloWorld.dll

(参考)
https://learn.microsoft.com/ja-jp/dotnet/core/install/linux-ubuntu-2004
コメントを残す