1. 程式人生 > >ASP.NET Core 發布 centos7 配置守護進程

ASP.NET Core 發布 centos7 配置守護進程

進入 最新 執行命令 signal inf rep putty http err

ASP.NET Core應用程序發布linux在putty中運行是正常的。可一但putty關閉網站也就關閉了,所以要配置守護進程, 用的是Supervisor,本文主要記錄配置的過程和過程遇到的問題

安裝 Supervisor 及配置 Supervisor

1.yum install python-setuptools
2.easy_install supervisor  #安裝Supervisor
3.mkdir /etc/supervisor
4.echo_supervisord_conf > /etc/supervisor/supervisord.conf  #配置 Supervisor

4.配置

cd /etc/supervisor
ls

技術分享圖片

supervisord.conf文件

5. 文件的最後

;[include]
;files = relative/directory/*.ini

改成(【註意】去掉;且不能有空格)

[include]
files = conf.d/*.conf

6.進入目錄 /etc/supervisor/ 新建 conf.d文件夾,conf.d文件夾下新建 netcoreDemo.conf文件
內容(【註意】看 第二行 第三行的 註釋,根據實際名字填入)

mkdir /etc/supervisor/conf.d    --創建conf.d文件夾
ls
cd conf.d
vi netcore.conf    
--創建netcore文件並且向裏面添加內容

技術分享圖片

[program:netcore]
command=dotnet mhqtalks.dll ; (註意)運行程序的命令
directory= /home/netCore/ ; (註意 註意)對應的你的項目的存放目錄,這個地方好多初學者搞錯!!!
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/WebApplication1.err.log ; 錯誤日誌文件
stdout_logfile=/var/log/WebApplication1.out.log ; 輸出日誌文件
environment
=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT

運行supervisord並查看

7  supervisord -c /etc/supervisor/supervisord.conf 
8  ps -ef | grep netcore  # 這行命令是查看有關netcore的所有進程 ,【註意】netcore是上面 program:netcore 的命名 ,如果你看到如下圖 ,說明運行成功,如果沒有成功可以看上面配置的那個錯誤日誌文件

技術分享圖片

9  supervisorctl reload  #最後重新載入配置

配置Supervisor開機啟動

打開目錄 /usr/lib/systemd/system/ 新建文件 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=42s

[Install]
WantedBy=multi-user.target

執行命令:

systemctl enable supervisord  
systemctl is-enabled supervisord #來驗證是否為開機啟動

到此,完工。現在重新電腦什麽都不用管,直接可以訪問部署好的網站。

下面整理一些關於 Supervisor 的命令 ,參考鏈接https://segmentfault.com

命令說明
supervisord 初始啟動Supervisord,啟動、管理配置中設置的進程
supervisorctl stop myproject 停止某一個進程(programxxx),programxxx為[program:chatdemon]裏配置的值,這個示例就是chatdemon
supervisorctl start myproject 啟動某個進程
supervisorctl restart myproject 重啟某個進程
supervisorctl stop groupworker 重啟所有屬於名為groupworker這個分組的進程(start,restart同理)
supervisorctl stop all 停止全部進程,註:start、restart、stop都不會載入最新的配置文件
supervisorctl reload 載入最新的配置文件,停止原有進程並按新的配置啟動、管理所有進程
supervisorctl update 根據最新的配置文件,啟動新配置或有改動的進程,配置沒有改動的進程不會受影響而重啟。註意:顯示用stop停止掉的進程,用reload或者update都不會自動重啟

溫馨提示:如果要結束某個守護進程,我們可以 ps -ef | grep supervisord 查出所有守護進程相關的進程

然後再用 kill -9 pid 結束進程

ASP.NET Core 發布 centos7 配置守護進程