Linux に .NET Core ワーカー サービスをデプロイする


では、ASP.NET Core アプリケーションを Linux に展開して構成する方法を学びました.この投稿では、Worker Service マシンに Linux を展開する方法について学習します.

ワーカーサービスとは?



本題について話す前に、 worker service が何であるかを知らない人のために、 worker service が何であるかを学びましょう.Worker Service は、バックグラウンド サービスを作成するための .NET Core の組み込み機能です. Worker Service を使用する 1 つの例は、毎朝クライアントに newsletter メールを送信するなど、定期的なスケジュールを実行することです. worker service の詳細については、この link を参照してください.
Worker Service を作成し、それを Linux マシンにデプロイしたいとします.まず、前回の記事で学んだように、新しいサービス ファイルを作成する必要があるため、次のコマンドを使用してサービス ファイルを作成します.

sudo nano /etc/systemd/system/appbackground.service


次の内容でその内容を編集します.

[Unit]
Description=Your description 

[Service]
Type=notify
WorkingDirectory=/home/centos/Desktop/services/

ExecStart=/usr/bin/dotnet /home/centos/Desktop/services/myapp.WorkerServic$


Environment=ASPNETCORE_ENVIRONMENT=Production
[Install]
WantedBy=multi-user.target



次に ctrl+x を押して内容を保存し、次のコマンドを実行します.

sudo systemctl daemon-reload
sudo systemctl start appbackground.service

sudo systemctl start appbackground.service の実行後にエラーが発生した場合は、worker service プロジェクトに小さな変更を加える必要があります.
Microsoft.Extensions.Hosting.Systemdnuget をインストールします.

dotnet add package Microsoft.Extensions.Hosting.Systemd


次に、以下のように CreateHostBuilderprogram.cs に変更します.

 public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSystemd() // this method must be added
                .ConfigureServices((hostContext, services) =>
                {
                    services.AddHostedService<appWorker>();
                });
    }


この変更を適用した後、プロジェクトの新しいパブリッシュを取得し、それを Linux のパスに配置してから、そのサービスを開始します.