【问题标题】:How to run a ASP.NET Core Web API dll file as a service in Nginx server?如何在 Nginx 服务器中将 ASP.NET Core Web API dll 文件作为服务运行?
【发布时间】:2018-12-30 19:52:00
【问题描述】:

我有一个在 Ubuntu 16.04 服务器上运行的 AWS EC2 实例。我在这个实例中运行 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 文件不再运行。结果,我无法到达终点。

那么,我应该怎么做才能让 dll 文件作为服务在 localhost 上运行,以便在我关闭 PuTTY 会话时它不会停止?

【问题讨论】:

    标签: .net ubuntu asp.net-core asp.net-core-webapi nginx-reverse-proxy


    【解决方案1】:

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

    systemd 是一个初始化系统,它提供了许多强大的功能 启动、停止和管理进程。

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

    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
    

    现在,如果配置正确,status 命令应该显示服务正在运行。现在,我的 Web 应用程序正在运行,kestrel 默认侦听端口 5000,因此我的应用程序在 http://localhost:5000 上可用。

    现在,如果我关闭 PuTTY 会话,我的 web api 仍在运行。

    【讨论】:

      【解决方案2】:

      代表@Brudex 发帖(这已被编辑到问题中,而不是作为答案发布 - 如果原作者正确地发布了这个他/她自己作为答案,很高兴删除此副本)


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

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

      1. 须藤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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2020-03-09
        • 2015-08-13
        • 1970-01-01
        • 2017-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多