启动时在Linux下运行ASP.NET Core应用

时间:2018-07-16 05:02:33

标签: linux apache ubuntu nginx asp.net-core

我想在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应用程序的操作-除非我错过了某些事情。

是否可以在操作系统启动时自动启动应用程序

1 个答案:

答案 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的路径。默认情况下就足够了。

从现在开始,您的应用将在操作系统启动时自动启动,并尝试崩溃后重新启动