我想在Linux下运行ASP.NET Core解决方案,使其在启动时运行。
从Microsoft docs起,有两种方法: Apache 和 Nginx 。
这两种方法都涉及代理通过,例如
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应用?
我看不到文档中有什么地方可能触发针对我的WebApi项目的dotnet run
命令。
很明显,Apache或Nginx无法处理触发dotnet应用程序的操作-除非我错过了某些事情。
是否可以在操作系统启动时自动启动应用程序?
答案 0 :(得分:4)
This section在文档中描述了如何创建服务文件以自动启动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的路径。默认情况下就足够了。
从现在开始,您的应用将在操作系统启动时自动启动,并尝试崩溃后重新启动。