web-dev-qa-db-ja.com

起動時にLinuxでASP.NET Coreアプリを実行する

私のASP.NET CoreソリューションをLinuxで実行したいのですが、起動時に実行されます。

Microsoft docs からは、ApacheNginxの2つの方法があります。

どちらのアプローチにもproxy passが含まれます。

Apache:

<VirtualHost *:80>
    ProxyPreserveHost On
    ProxyPass / http://127.0.0.1:5000/
    ProxyPassReverse / http://127.0.0.1:5000/
    ....

Nginx:

server {
    listen        80;
    server_name   example.com *.example.com;
    location / {
        proxy_pass         http://localhost:5000;
        ...

ApacheまたはNginxはプロキシとしてのみ機能するので、正しいことはわかりますかdotnetアプリを手動で起動する必要があります

何かがトリガーされる可能性があるドキュメントのビットを見ることができませんdotnet run私のWebApiプロジェクトに対するコマンド。

明らかに、ApacheまたはNginxはdotnetアプリのトリガーを処理しません-私が何かを見逃していない限り。

OSの起動時にアプリを自動的に起動する方法はありますか

10
Alex Herman

このセクション ドキュメントでは、Asp.Net Coreアプリを自動的に起動するサービスファイルを作成する方法について説明しています。

サービス定義ファイルを作成します。

Sudo nano /etc/systemd/system/kestrel-hellomvc.service

以下は、アプリのサンプルサービスファイルです。

[Unit]
Description=Example .NET Web API App running on Ubuntu

[Service]
WorkingDirectory=/var/aspnetcore/hellomvc
ExecStart=/usr/bin/dotnet /var/aspnetcore/hellomvc/hellomvc.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
SyslogIdentifier=dotnet-example
User=www-data
Environment=ASPNETCORE_ENVIRONMENT=Development

[Install]
WantedBy=multi-user.target

ファイルを保存してサービスを有効にします。

systemctl enable kestrel-hellomvc.service

サービスを開始し、実行されていることを確認します。

systemctl start kestrel-hellomvc.service
systemctl status kestrel-hellomvc.service

WorkingDirectory-アプリを含むフォルダーへのパスとExecStart-アプリdllへのパスを設定する必要があります。デフォルトではこれで十分です。

今後、アプリはOSの起動時に自動的に起動し、クラッシュ後に再起動しようとします

11
Groxan