如何将 运行 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 应用程序
- sudo
apt-get install supervisor
像下面这样创建主管配置
[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
启动主管
sudo service supervisor start
您可以从以下位置找到更多信息:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx
我在 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 应用程序
- sudo
apt-get install supervisor
像下面这样创建主管配置
[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
启动主管
sudo service supervisor start
您可以从以下位置找到更多信息:
https://docs.microsoft.com/en-us/aspnet/core/host-and-deploy/linux-nginx