如何将 运行 ASP.NET Core Web API dll 文件作为 Nginx 服务器中的服务?

How to run a ASP.NET Core Web API dll file as a service in Nginx server?

我在 Ubuntu 16.04 服务器上有一个 AWS EC2 实例 运行ning。在这种情况下,我运行宁 ASP.NET Core Web API 服务器。

我已按照此 link 使用 Nginx 在 Linux 上托管 ASP.NET Core。我一直遵循教程直到 Monitoring the app 部分。现在,我有 运行 web api dll 文件使用下面的命令,它正在监听 http://localhost:5000

dotnet MyWebAPI.dll

通过使用 PuTTY 连接 EC2 实例,我有 运行 上述命令。因为我已经设置了反向代理服务器,所以我可以使用邮递员很好地访问我的端点。

但是,当我关闭 PuTTY 会话时,dll 文件不再 运行ning。结果,我没能到达终点。

那么,我应该怎么做才能将 dll 文件 运行ning 作为服务保留在本地主机上,以便在我关闭 PuTTY 会话时它不会停止?

我可以 运行 我的应用程序作为 Nginx 服务器内的服务。现在,如果我关闭 PuTTY session,服务仍然是 运行ning。我已经使用 systemd 创建了一个服务文件来启动和监控底层网络应用程序。

systemd is an init system that provides many powerful features for starting, stopping, and managing processes.

首先,我为我的网络应用程序创建了一个服务文件

sudo nano /etc/systemd/system/my-web-api.service

然后,在 my-web-api.service 文件中,我包含了以下配置:

[Unit] 
Description=My first .NET Core application on Ubuntu 

[Service] 
WorkingDirectory=/home/ubuntu/MyWebAPI 
ExecStart=/usr/bin/dotnet /home/ubuntu/MyWebAPI/MyWebAPI.dll 
Restart=always 
RestartSec=10 # Restart service after 10 seconds if dotnet service crashes 
SyslogIdentifier=offershare-web-app
Environment=ASPNETCORE_ENVIRONMENT=Production 

[Install] 
WantedBy=multi-user.target

然后,我需要启用该服务并运行它。

sudo systemctl enable my-web-api.service
sudo systemctl start my-web-api.service
sudo systemctl status my-web-api.service

现在,如果配置正确,状态命令应将服务显示为 运行ning。现在,我的 Web 应用程序是 运行ning,kestrel 默认侦听端口 5000,所以我的应用程序可以在 http://localhost:5000[=34 上使用=].

现在,如果我关闭 PuTTY 会话,我的网络 api 仍然是 运行ning。

代表 @Brudex 发帖(这已被编辑到问题中,而不是作为答案发布 - 如果原作者发布此 him/her-self,我们很乐意删除此副本正确答案)


您必须使用像 supervisor 这样的进程管理器来保存 asp.net 文件 运行。使用 nginx 作为反向代理将请求转发到您的 asp.net 核心应用程序。

按照安装和设置主管来管理您的 asp.net 应用程序

  1. sudo apt-get install supervisor
  2. 像下面这样创建主管配置

    [program:hellomvc]
    command=/usr/bin/dotnet /var/aspnetcore/HelloMVC/HelloMVC.dll
    directory=/var/aspnetcore/HelloMVC/
    autostart=true
    autorestart=true
    stderr_logfile=/var/log/hellomvc.err.log
    stdout_logfile=/var/log/hellomvc.out.log
    environment=HOME=/var/www/,ASPNETCORE_ENVIRONMENT=Production
    user=www-data
    stopsignal=INT
    stopasgroup=true
    killasgroup=true
    
  3. 启动主管

    sudo service supervisor start
    

您可以从以下位置找到更多信息:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx