2017-04-09 77 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