前言
我們一般可以在Linux服務器上執行 dotnet <app_assembly.dll> 命令來運行我們的.net Core WebApi應用,但是這樣運行起來的應用很不穩定,關閉終端視窗之后,應用也會停止運行,為了讓其可以穩定運行,我們需要讓它變成系統的守護行程,成為一種服務一直在系統中運行,出現例外時也能重新啟動,
Linux系統有自己的守護行程管理工具 Systemd ,systemd 是內核啟動后的第一個用戶行程,PID 為1,是所有其它用戶行程的父行程,它直接與內核互動,性能出色,可以提供用于啟動、停止和管理行程的許多強大的功能,我們完全可以將程式交給 Systemd ,讓系統統一管理,成為真正意義上的系統服務,
systemctl 用于管理 systemd 的行為,替換之前的 sysvinit 和 upstart,
創建服務檔案
創建服務定義檔案:
vim /etc/systemd/system/qf-intecabinet.service
以下是應用的一個示例服務檔案:
[Unit]
Description=運行Qf.InteCabinet服務
[Service]
WorkingDirectory=/opt/InteCabinet # 依賴環境,可以指定多個
ExecStart=/usr/bin/dotnet /opt/InteCabinet/Qf.InteCabinet.WebApi.dll
Restart=always
# Restart service after 10 seconds if the dotnet service crashes:
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=qf-intecabinet
User=root # 管理服務的用戶,用戶必須存在并且擁有正確應用檔案的所有權
Environment=ASPNETCORE_ENVIRONMENT=Production # 環境變數
Environment=DOTNET_PRINT_TELEMETRY_MESSAGE=false
[Install]
WantedBy=multi-user.target # 該服務所在的Target
管理服務
保存該檔案并啟用該服務
systemctl enable qf-intecabinet.service
啟動該服務
systemctl start qf-intecabinet.service
查看服務狀態
systemctl status qf-intecabinet.service
查看日志
journalctl -fu qf-intecabinet.service
使用時間選項(如 --since today、--until 1 hour ago)或這些選項的組合可以減少回傳的條目數
journalctl -fu qf-intecabinet.service --since "2020-01-01" --until "2020-03-01 12:00"
關閉服務
systemctl stop qf-intecabinet.service
參考資料
微軟官方檔案
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/56742.html
標籤:.NET Core
上一篇:iNeuOS工業互聯平臺,開放設備驅動管理、服務驅動管理、云組態自定義畫布等,促進平臺開放、賦能和落地。發布:v2.3版本。
下一篇:如何自行實作一個多租戶系統
