2017-04-09 78 views
4

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

这里是我想写些什么
的一个实例(伪部署脚本):

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

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

回答

5

我决定使用主管来监视和管理这个过程。 Here is an excellent article on getting it set up

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

supervisorctl stop MyWebsiteName 
supervisorctl start MyWebsiteName 

而且它有,它可以尝试,如果它倒了,或者当系统重新启动重新启动过程中的一个巨大的优势......对于无论原因。

6

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

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

在进程树的情况下,您需要手动grep的所有子ID和调用kill每个。就像在 Microsoft.Extensions.Internal.ProcessExtensions.KillTree方法中完成的那样(正确的链接来自讨论)。

+0

已更新的问题链接[终止'dotnet run'不会终止子节点](https://github.com/dotnet/cli/issues/7426) – stormwild