以前終於在Linux上部署好了.NetCore站點,可是這個站點很是「脆弱」。當個人ssh鏈接關閉或者我想在當前鏈接執行其餘命令時候就必須關閉dotnet站點的執行程序。這顯然不是我想要達到的效果,還好知道有所謂的守護進程這個東西,大多數人都是推薦採起Supervisor來進行Linux上的應用進程管理,這裏就開始使用它來對咱們的.NetCore應用進程進行託管吧。json
Linux的守護進程vim
我對於Linux的守護進程的理解是在Linux操做系統上經過守護進程的配置對須要進行守護的應用進行有效管理,如開機自啓動、進程崩潰後自動重啓等等。總之把它當成一個應用管家,在這個管家裏咱們要作好配置,以及能夠手動對進程進行啓動、中止等等操做。瀏覽器
這裏假設已經將.NetCore應用部署到了Linux,存放的目錄爲 /root/netcore 應用名稱爲LinuxWebAppSample1
在站點存放的目錄輸入pwd能夠獲取到當前目錄:mvc
至於安裝sdk、運行時什麼的就不說了,部署站點那篇博客已經將詳細的順序和命令都寫出來。如今就是萬事俱備,只差咱們的守護進程管理軟件 Supervisorapp
輸入下面命令安裝Supervisorssh
yum install supervisor
輸入下面命令查看是否安裝成功網站
supervisord --version
cat /usr/lib/systemd/system/supervisord.service
sudo systemctl enable supervisord sudo systemctl start supervisord
sudo supervisorctl
可以進入 supervisor 控制檯,表示服務安裝成功,並已成功啓動。如需退出supervisor控制檯可輸入下面命令ui
quit
經過上面一些列操做咱們Linux上已經安裝好了supervisor這個守護進程服務,但若是須要讓它對咱們發佈的應用程序作守護進程則須要進行下面一些列操做了。這裏以咱們以前部署在/root/netcore 下的LinuxWebAppSample1應用爲例。操作系統
supervisord.conf.net
supervisord.conf是supervisor服務的配置文件,經過命令 cat /etc/supervisord.conf 能夠查看相關信息
其中有個下面的節點表示supervisor 引入需守護的進程配置文件目錄。
[include] files = supervisord.d/*.ini
我是這麼理解的,supervisor服務會讀取 /etc/supervisord.conf 這個配置文件的include節點,經過該節點獲取到須要管理的應用進程
supervisord.d的完整目錄是在/etc/supervisord.d/
supervisor的配置文件詳細信息可經過官網查閱 http://supervisord.org
建立站點的守護進程配置文件 LinuxWebAppSample1.ini
vim /etc/supervisord.d/LinuxWebAppSample1.ini
輸入i鍵,切換爲vim的寫入模式,將下面內容複製進去,而後按esc切換爲命令模式 鍵入":wq"保存退出
#冒號後面爲應用名稱 [program:LinuxWebAppSample1] #應用啓動命令,須要dotnet的完整路徑 command=/usr/bin/dotnet /root/netcore/LinuxWebAppSample1.dll #啓動的目錄,不然應用會報找不到appsetting.json錯誤 directory=/root/netcore #服務啓動時自動啓動,崩潰自動重啓 autostart=true autorestart=true # .net core mvc應用啓動參數,代表是生產環境 environment=ASPNETCORE_ENVIRONMENT=Production user=root # 日誌輸出路徑 stdout_logfile=/var/log/supervisor/LinuxWebAppSample1.log stderr_logfile=/var/log/supervisor/LinuxWebAppSample1.err.log
上面的日誌路徑能夠修改成自定義的路徑,記得路徑必須真實存在。
sudo systemctl restart supervisord sudo supervisorctl
再次進入到supervisor控制檯則表示服務正常。
輸入 quit命令後退出來,在Linux控制檯輸入下面命令查看站點是否已啓動
ps -ef | grep dotnet
OK~如今守護進程已經啓用了,哪怕關閉當前SSH連接咱們的網站也不會受到影響啦~
如今看下咱們的網站
supervisor不得不說很是貼心,它還提供了一個網站可讓咱們在客戶端瀏覽器上對咱們的守護進程進行管理。
首先輸入下面命令,重啓下supervisor
systemctl enable supervisord.service systemctl start supervisord.service systemctl status supervisord.service
修改下supervisord.conf配置文件,這一步很是重要。
vim /etc/supervisord.conf
經過vim的查找命令
:/[inet_http_]
找到下圖的節點
輸入i鍵切換成寫入模式,將inet_http_server節點的註釋去掉,port更改成 port=*:9001
修改爲功後輸入下面命令從新加載配置文件
supervisorctl reload
而後就能夠在客戶端經過ip地址加端口號訪問supervisor的管理界面了。效果以下圖