CentOS 上で ASP.NET Core 2.2 な WebApplication を実行する
CentOS 7.2 に ASP.NET Core 2.2 をインストールし、サンプルアプリケーションを起動する手順をメモしておきます。 今回は Apache や Nginx は使わず、Kestrel だけでアプリケーションをホストします。
SDK をインストールする
ASP.NET Core 環境を構築する為に Runtime だけでは無く、SDK を入れてしまいます。
| rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
yum -y install dotnet-sdk-2.2
|
リポジトリは /etc/yum.repos.d/microsoft-prod.repo
が下記の内容で定義されていました。
| [packages-microsoft-com-prod]
name=packages-microsoft-com-prod
baseurl=https://packages.microsoft.com/rhel/7/prod/
enabled=1
gpgcheck=1
gpgkey=https://packages.microsoft.com/keys/microsoft.asc
|
Kestrel が外部アクセスを受け付けられるようにする
デフォルトの状態では Kestrel が http://localhost:5000
と https://localhost:5001
しか Listen しない為、他の PC からアクセスすることが出来ません。 localhost では無い外部 PC から Kestrel にアクセス出来るようにする方法は幾つかありますが、今回は手っ取り早く Program.cs
にハードコードしてしまいます。
Program.cs
変更前
Program.cs
は初期状態だと下記のようになっていました。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 | using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
namespace WebApplication1
{
public class Program
{
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.UseStartup<Startup>();
}
}
|
変更後
Main メソッドを下記のように書き換えます。 必要であればポート番号も書き換えます。
| public static void Main(string[] args)
{
CreateWebHostBuilder(args)
.UseUrls("http://*:5000;https://*:5001")
.Build().Run();
}
|
Publish する
WebApplication を実行出来るよう、publish します。dotnet publish
に .csproj
ファイルを指定します。
| # dotnet publish --configuration Release WebApplication1/WebApplication1/WebApplication1.csproj
Microsoft (R) Build Engine version 16.1.76+g14b0a930a7 for .NET Core
Copyright (C) Microsoft Corporation. All rights reserved.
Restore completed in 973.31 ms for /root/WebApplication1/WebApplication1/WebApplication1.csproj.
WebApplication1 -> /root/WebApplication1/WebApplication1/bin/Release/netcoreapp2.2/WebApplication1.dll
WebApplication1 -> /root/WebApplication1/WebApplication1/bin/Release/netcoreapp2.2/WebApplication1.Views.dll
WebApplication1 -> /root/WebApplication1/WebApplication1/bin/Release/netcoreapp2.2/publish/
|
実行する
Publish が完了したら dotnet
コマンドで WebApplication を実行します。 起動ログから Listen しているアドレス&ポートが意図したものになっていることを確認しておきます。
| # dotnet WebApplication1/WebApplication1/bin/Release/netcoreapp2.2/publish/WebApplication1.dll
info: Microsoft.AspNetCore.DataProtection.KeyManagement.XmlKeyManager[0]
User profile is available. Using '/root/.aspnet/DataProtection-Keys' as key repository; keys will not be encrypted at rest.
Hosting environment: Production
Content root path: /root
Now listening on: http://[::]:5000
Now listening on: https://[::]:5001
Application started. Press Ctrl+C to shut down.
|
起動したら別の PC から http://ADDRESS:5000
へアクセスし、WebApplication の画面が表示されることを確認します。