ASP.NET Core應用程序發布linux在shell中運行是正常的。可一但shell關閉網站也就關閉了,所以要配置守護進程, 用的是Supervisor,本文主要記錄配置的過程和過程遇到的問題
安裝Supervisor
1 yum install python-setuptools
2 easy_install supervisor
配置Supervisor
3 mkdir /etc/supervisor
4 echo_supervisord_conf > /etc/supervisor/supervisord.conf
5 上面語句執行完后就能在/etc/supervisor 文件夾下找到文件 supervisord.conf 如圖
下面我們要將文件的結尾部分替換掉以便后面能讀取到我們的配置文件
在文件的結尾找到以下
;[include];files = relative/directory/*.ini
將代碼替換為如下,注意前后不能帶 ;和空格符號
[include]files = conf.d/*.conf
6 進入目錄 /etc/supervisor/ 新建 conf.d文件夾,conf.d文件夾下新建 myproject.conf文件
具體內容如下,注意命令執行的目錄要寫你項目文件所在的目錄,兩個日志文件的名稱最好也統一改一下
[program:myproject] command=dotnet myproject.dll ; 運行程序的命令 directory=/root/mypro/ ; 命令執行的目錄 autorestart=true ; 程序意外退出是否自動重啟 stderr_logfile=/var/log/myproject.err.log ; 錯誤日志文件 stdout_logfile=/var/log/myproject.out.log ; 輸出日志文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT
運行supervisord並查看
7 supervisord -c /etc/supervisor/supervisord.conf
8 ps -ef | grep myproject # 這行命令是查看有關myproject的所有進程 ,【注意】myproject是上面 program:myproject 的命名 ,如果你看到如下圖 ,說明運行成功,如果沒有成功可以看上面配置的那個錯誤日志文件
9 supervisorctl reload #最后重新載入配置
下面整理一些關於 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都不會自動重啟 |
溫馨提示:如果要結束當前應用程序的進程必須先結束守護進程,不然應用程序是kill不掉的,因為它已經會自動重啟了,我們可以 先用命令
ps -ef | grep supervisord
查出所有守護進程相關的進程 ,然后找到對應的守護進程再用 命令
kill -9 pid # -9 為強制執行
結束進程,最后才能kill掉我的應用進程。
詳細參考: http://www.cnblogs.com/zhaopei/p/netcore.html
本文永久更新地址:http://siyouku.cn/article/6861.html
asp.net core 開發框架:https://github.com/2014fighting/CodeFrame.Web.git