<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
在上一篇文章中,我們講解了如何在Linux伺服器上面部署ASP.NET Core應用程式,並且使用Nginx作為反向代理。我們在Linux伺服器上面,是通過ASP.NET Core自宿主的方式執行應用程式。採用自宿主的方式啟動ASP.NET Core應用程式,目前主要有以下幾個問題:
為了解決上面的幾個問題,所以我們需要有一個程式來監聽ASP.NET Core應用程式的狀況,當應用程式停止執行的時候會立即重新啟動。
Supervisor就是這樣一個用來監聽ASP.NET Core應用程式執行狀況的工具,它是用Python開發的一個client/server服務,是linux/Unix系統下的一個程序管理工具,不支援Windows系統,它能將一個普通的命令列程序變為後臺deamon,並監控程序狀態。它可以很方便的監聽、啟動、停止、重啟一個或多個程序。用Supervisor管理的程序,當一個程序意外被殺死,Supervisor監聽到程序死後,會自動重啟程序,很方便的做到程序自動恢復的功能,不在需要自己寫shell指令碼來控制。下面我們就來看看如何在Linux上面安裝Supervisor。
使用下面的命令安裝Python包管理工具:
yum install python-setuptools
如下圖所示:
使用下面的命令安裝Supervisor:
easy_install supervisor
如下圖所示:
通過執行echo_supervisord_conf程式生成supervisor的初始化組態檔,命令如下:
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
如下圖所示:
然後我們編輯supervisord.conf檔案,在檔案的尾部新增如下設定:
;conf.d 為設定表目錄的資料夾,需要手動建立 [include] files = /etc/supervisor/conf.d/*.conf
如下圖所示:
然後我們手動建立一個conf.d資料夾:
mkdir /etc/supervisor/conf.d
如下圖所示:
建立完成後的目錄結構如下圖:
supervisord.conf是主組態檔,應用程式組態檔放在conf.d資料夾下面。然後為應用程式建立一個名為AspNetCoreDeployDemo.conf的檔案,並放到目錄"/etc/supervisor/conf.d/"下,檔案內容:
[program:AspNetCoreDeployDemo] ;程式名稱,終端控制時需要的標識 command=dotnet AspNetCoreDeployDemo.dll ; 執行程式的命令 directory=/root/NetCore/FDD/ ; 命令執行的目錄 autorestart=true ; 程式意外退出是否自動重啟 stderr_logfile=/var/log/AspNetCoreDeployDemo.err.log ; 錯誤紀錄檔檔案 stdout_logfile=/var/log/AspNetCoreDeployDemo.out.log ; 輸出紀錄檔檔案 environment=ASPNETCORE_ENVIRONMENT=Production ; 程序環境變數 user=root ; 程序執行的使用者身份 stopsignal=INT startsecs=10 ;自動重啟時間間隔
執行下面的命令執行supervisord,檢視是否生效:
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep AspNetCoreDeployDemo
成功後的效果:
這時我們在瀏覽器裡面存取:
這樣就可以存取了。可以看到,這時我們就不需要在啟動命令列了。而且關閉shell視窗也可以獲取資料。
如果服務已經啟動,修改組態檔可用“supervisorctl reload”命令來使其生效。
我們新建一個“supervisord.service”檔案,檔案內容如下:
# dservice for systemd (CentOS 7.0+) # by ET-CS (https://github.com/ET-CS) [Unit] Description=Supervisor daemon [Service] Type=forking ExecStart=/usr/bin/supervisord -c /etc/supervisor/supervisord.conf ExecStop=/usr/bin/supervisorctl shutdown ExecReload=/usr/bin/supervisorctl reload KillMode=process Restart=on-failure RestartSec=15s [Install] WantedBy=multi-user.target
將檔案上傳至"/usr/lib/systemd/system/"目錄下,然後執行下面的命令:
systemctl enable supervisord
如下圖所示:
執行下面的命令來驗證是否為開機啟動:
systemctl is-enabled supervisord
如下圖所示:
到此為止,設定就完成了。我們可以重啟虛擬機器器來驗證一下是否開機就會啟動應用程式。這裡已經測試過了,重啟虛擬機器器,然後用root使用者登入就可以直接存取應用程式。
我們還可以使用Web管理介面來管理supervisor,在web管理介面,可以進行程序的重啟,紀錄檔檢視等操作。
web介面操作需要在supervisor的組態檔裡新增[inet_http_server]選項組,我們使用記事本檔案開啟supervisord.conf檔案,去掉[inet_http_server]選項組前面的";":
修改之後重新載入服務:
supervisorctl reload
如下圖所示:
由於使用了9001埠,所以我們需要把9001埠新增到防火牆中:
firewall-cmd --zone=public --add-port=9001/tcp --permanent
如下圖所示
修改完防火牆之後需要重啟防火牆設定:
firewall-cmd --reload
然後在瀏覽器裡面存取url:http://192.168.254.128:9001/,如果設定正常,則會要去輸入使用者名稱和密碼,輸入組態檔裡面的使用者名稱和密碼即可登入,登入成功以後介面如下所示:
在這裡就可以看到正在執行的程序,而且還可以重啟、停止等操作。
Supervisor常用的相關命令如下:
supervisorctl restart <application name> ;重啟指定應用 supervisorctl stop <application name> ;停止指定應用 supervisorctl start <application name> ;啟動指定應用 supervisorctl restart all ;重啟所有應用 supervisorctl stop all ;停止所有應用 supervisorctl start all ;啟動所有應用
如果在執行命令的過程中,報下面的錯誤:
Error: .ini file does not include supervisorctl section
For help, use /usr/local/bin/supervisorctl -h
如截圖這樣:
需要切換到/etc/supervisor目錄在執行上面的命令。
到此這篇關於使用Supervisor守護ASP.NET Core應用程式程序的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45