【问题标题】:Stop a running dotnet core website running on kestrel停止在 kestrel 上运行的 dotnet core 网站
【发布时间】:2017-09-04 12:05:01
【问题描述】:

在部署现有 .net 核心网站的新版本时。如何首先安全地停止运行中的旧红隼应用?

这是我想写的一个例子(伪部署脚本):

dotnet stop mysite/mysite.dll <---- this line here
mv mysite/ mysite.bak/
cp newly-published-mysite/ mysite/
dotnet run mysite/mysite.dll

killall dotnet 似乎有点不安全。如果我在一个盒子上托管两个小网站,它会如何工作?

【问题讨论】:

    标签: linux asp.net-core .net-core kestrel-http-server


    【解决方案1】:

    this discussion 称,现在没有安全的方法来阻止 Kestrel。您需要通过您的 dll 名称和 kill it 找到一个 PID:

    kill $(ps aux | grep 'MySite.dll' | awk '{print $2}')
    

    如果是进程树,您需要手动 grep 所有子 ID 并为每个子 ID 调用 kill。就像它是在 Microsoft.Extensions.Internal.ProcessExtensions.KillTree 方法(讨论中的正确链接)。

    【讨论】:

    【解决方案2】:

    我决定使用主管来监控和管理流程。 Here is an excellent article on getting it set up.

    它允许像这样简单地控制特定的 dotnet 应用程序:

    supervisorctl stop MyWebsiteName
    supervisorctl start MyWebsiteName
    

    而且它有一个巨大的优势,它可以尝试在它崩溃时重新启动进程,或者当系统重新启动时......无论出于何种原因。

    【讨论】:

      猜你喜欢
      • 2020-06-15
      • 2020-05-20
      • 2019-08-10
      • 1970-01-01
      • 2019-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-24
      相关资源
      最近更新 更多