Linux部署.NetCore站點 使用Supervisor進行託管部署

前言

以前終於在Linux上部署好了.NetCore站點,可是這個站點很是「脆弱」。當個人ssh鏈接關閉或者我想在當前鏈接執行其餘命令時候就必須關閉dotnet站點的執行程序。這顯然不是我想要達到的效果,還好知道有所謂的守護進程這個東西,大多數人都是推薦採起Supervisor來進行Linux上的應用進程管理,這裏就開始使用它來對咱們的.NetCore應用進程進行託管吧。json

Linux的守護進程vim

我對於Linux的守護進程的理解是在Linux操做系統上經過守護進程的配置對須要進行守護的應用進行有效管理,如開機自啓動、進程崩潰後自動重啓等等。總之把它當成一個應用管家,在這個管家裏咱們要作好配置,以及能夠手動對進程進行啓動、中止等等操做。瀏覽器

這裏假設已經將.NetCore應用部署到了Linux,存放的目錄爲 /root/netcore 應用名稱爲LinuxWebAppSample1
在站點存放的目錄輸入pwd能夠獲取到當前目錄:mvc

5e7c7a3ce62839b1f23934326f7dfbaf.png

至於安裝sdk、運行時什麼的就不說了,部署站點那篇博客已經將詳細的順序和命令都寫出來。如今就是萬事俱備,只差咱們的守護進程管理軟件 Supervisorapp

安裝Supervisor

輸入下面命令安裝Supervisorssh

yum install supervisor

輸入下面命令查看是否安裝成功網站

supervisord --version
  • 這裏須要注意的是安裝完Supervisor後咱們的命令是Supervisord 由於Linux上安裝成功後Supervisor的服務名稱就是
    supervisord.service 詳情可經過如下命令查看
cat /usr/lib/systemd/system/supervisord.service

設置supervisor開機啓動

sudo systemctl enable supervisord
sudo systemctl start supervisord

進入 supervisor 控制檯執行命令

sudo supervisorctl

可以進入 supervisor 控制檯,表示服務安裝成功,並已成功啓動。如需退出supervisor控制檯可輸入下面命令ui

quit

配置supervisor相關文件

經過上面一些列操做咱們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服務來管理指定應用則必須在/etc/supervisord.d/目錄下建立相應的ini配置文件~

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

上面的日誌路徑能夠修改成自定義的路徑,記得路徑必須真實存在。

重啓 supervisor 服務,並進入 supervisorctl

sudo systemctl restart supervisord 
sudo supervisorctl

再次進入到supervisor控制檯則表示服務正常。
輸入 quit命令後退出來,在Linux控制檯輸入下面命令查看站點是否已啓動

ps -ef | grep dotnet

OK~如今守護進程已經啓用了,哪怕關閉當前SSH連接咱們的網站也不會受到影響啦~
如今看下咱們的網站
5906106e9700b15aefb31feb9e937933.png

supervisor管理界面

supervisor不得不說很是貼心,它還提供了一個網站可讓咱們在客戶端瀏覽器上對咱們的守護進程進行管理。
首先輸入下面命令,重啓下supervisor

systemctl enable supervisord.service
systemctl start supervisord.service
systemctl status supervisord.service

修改下supervisord.conf配置文件,這一步很是重要。

vim /etc/supervisord.conf

經過vim的查找命令

:/[inet_http_]

找到下圖的節點
26fd02ea4addda05b2b2309481f88697.png

輸入i鍵切換成寫入模式,將inet_http_server節點的註釋去掉,port更改成 port=*:9001

修改爲功後輸入下面命令從新加載配置文件

supervisorctl reload

而後就能夠在客戶端經過ip地址加端口號訪問supervisor的管理界面了。效果以下圖

f4e95ecf90813881942b8889db0bf97d.png

相關文章
相關標籤/搜索