部署现有.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
似乎有些不安全。如果我在一个盒子上托管两个小网站,它会如何运作?
答案 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
它有一个巨大的优势,它可以尝试重新启动过程,如果它失败,或者系统重新启动......无论出于何种原因。