第11号(2024年04月08日)

Linux環境での.NET環境構築

はじめに

Linux環境に.NETをインストールし、Linux上でASP.NET Core Webアプリを実行しました。
そのときの環境構築手順、Webアプリの制作・実行方法についてまとめました。

環境について

Linux:Red Hat Enterprise Linux release 8.9
.NETのバージョン:8.0.203
VMWare Workstation 17 Player
Visual Studio 2022
WinSCP

.NETの環境構築

今回は、VMWare上にLinux環境を構築し、.NETのセットアップをしました。
①dotnet-install.shファイルのダウンロード
ダウンロードサイトより、Linux用のdotnet-install.shファイルをダウンロードします。
サイト内にある「Bash (Linux、macOS): https://dot.net/v1/dotnet-install.sh」をクリックでダウンロード可能です。
Linuxでターミナルを開き以下のコマンドを順に実行して、「/usr/local/src/」にファイルをコピーします。
        cd ダウンロード
sudo cp dotnet-install.sh /usr/local/src/dotnet-install.sh
    
以下のコマンドを実行して、dotnet-install.shに実行権限を与えます。
        cd /usr/local/src
sudo chmod +x dotnet-install.sh
    
②dotnetのインストール
以下のコマンドを実行して、dotnetをインストールします。
        /usr/local/src/dotnet-install.sh --channel LTS
    
③PATHの設定
以下のコマンドを実行して、~/.bash_profileに追加するPATHを追記します。
追記内容:export PATH=$PATH:$HOME/.dotnet
        sudo vim ~/.bash_profile
    

Webサーバーについて

今回は、ASP.NET Coreに付属しているKestrelサーバーを使用します。
Kestrelサーバーは、Windows、Linux、macOSで実行されるクロスプラットフォームWebサーバーです。
ASP.NET Coreアプリを実行するための基本的な機能を持っています。
基本的な機能しか持たないため、高機能Webサーバーのようなアクセス制御など対応していない機能もあるので、
そのときは別のWebサーバーとKestrelサーバーを連携させるなどの設定が必要になります。

Windows環境でASP.NET Core Webアプリを制作

Visual Studio 2022を起動します。
「新しいプロジェクトの作成」で「ASP.NET Core Webアプリ(Model-View-Controller)」を選択し、「次へ」をクリックします。

「新しいプロジェクトを構成します」、「追加情報」を以下のように設定し、「作成」をクリックすると、サンプルプログラムが作成されます。


ASP.NET Core Webアプリをデプロイ

①フォルダーにWebアプリを発行する
「ソリューションエクスプローラー」で「WebApplication1」を右クリックし、「発行」をクリックします。

「フォルダー」選択し、「次へ」をクリックします。

「フォルダーの場所を指定し、「完了」をクリックします。

次に、「すべての設定を表示」をクリックします。

「保存」をクリックします。

「発行」をクリックします。
「公開が成功しました。」と表示されていれば 、発行完了です。
②発行したフォルダーをLinux上に配置・実行する
Linux上で、任意の場所にフォルダーを作成します。(今回は、Releaseフォルダーとします。)
WinSCPでLinux環境に接続し、発行したフォルダー配下のすべてのフォルダー、ファイルをReleaseフォルダーに転送します。
Linux上で、ターミナルを開き以下のコマンドを順に実行し、転送されたフォルダーを確認します。
        cd 任意の場所/Release
ls -l
    
dotnetコマンドでReleaseフォルダー内の実行ファイル(今回は、「WebApplication1.dll」)を指定し、実行します。
        dotnet WebApplication1.dll
    
コマンド実行後のターミナルの状態です。Now listening on に接続先が表示されています。(今回は、localhost:5000)
終了するときは、Ctrl+C で終了することができます。

③ブラウザで確認する
Linux上で「localhost:5000」にアクセスすると以下の画面が表示されているのが確認できます。

外部PCからIPアドレス指定でASP.NET Core Webアプリにアクセスする

上記の方法でWebアプリの制作~デプロイまでを行うと、実行環境からのアクセスのみ対応しています。
外部PCから接続先のIPアドレス指定し、Webアプリにアクセスしたいときの方法についてまとめます。
Visual Studio 2022を起動します。
「Windows環境でASP.NET Core Webアプリを制作」で制作したソリューションを開きます。
Program.csファイルを開きます。
「//追記」と記載されている箇所を追記します。(今回は、ポート番号を5000とします。)

外部PCからLinux環境にアクセスするためにLinux上でファイアーウォールの設定でポートを解放する必要があります。
Linux上でターミナルを開き、以下のコマンドを実行し、ポートの開放を行います。(今回は5000としています。)
        firewall-cmd --add-port 5000/tcp
    
このとき、永続的にポートの開放をする場合は以下のコマンドを実行します。
        firewall-cmd --add-port 5000/tcp -permanent
    
再度、「ASP.NET Core Webアプリをデプロイ」を行います。
①フォルダーにWebアプリを発行する
公開設定はすでにしてあるので、「発行」をクリックすると、フォルダーに発行されます。
②発行したフォルダーをLinux上に配置・実行する
上記と同様のことを行います。
③ブラウザで確認する
外部PCから「接続先のIPアドレス:5000」にアクセスすると以下の画面が表示されているのが確認できます。
Linux上でのアクセスもできます。

macOSでの検証について

macOSでも同様.NETの環境構築をしてみました。
.NETの環境構築からASP.NET Core Webアプリの実行まで行うことができました。
そして、macOSの場合インストーラーがあります。インストーラーを使用して、.NETのセットアップを行うと自動でインストール、
PATHの設定がされ、dotnet-installスクリプトを使うより簡単に感じました。(インストーラーはこちらからダウンロードできます。)

まとめ

Linuxで.NET Coreのセットアップをし、ASP.NET Core Webアプリを動作させることができました。
セットアップ時にPATHの設定しなければならないことに気づかず、dotnetコマンドが使えない状態でした。
PATHを通して実行ファイルを探してもらう必要があるようです。
一覧へ戻る