停止在kestrel上运行的运行dotnet核心网站

时间:2017-04-09 11:48:15

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

部署现有.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似乎有些不安全。如果我在一个盒子上托管两个小网站,它会如何运作?

2 个答案:

答案 0 :(得分:9)

根据this discussion,现在没有安全的方法可以阻止红隼。您需要按照dll的名称和kill it找到PID:

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

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

答案 1 :(得分:8)

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

它允许简单控制特定的dotnet应用程序,如下所示:

supervisorctl stop MyWebsiteName
supervisorctl start MyWebsiteName

它有一个巨大的优势,它可以尝试重新启动过程,如果它失败,或者系统重新启动......无论出于何种原因。