照例,先亮底html
centos:7.2
cpu:1核 2G內存 1M帶寬python
輔助工具:xshell xftplinux
.net core 的運行環境我單獨寫了一篇,請看個人這篇文章[linux(centos)搭建.net core 運行環境]git
我這裏新建一個空的.net core web程序用以演示,實際部署時是你的項目github
建立web項目(我本身使用vs2017 ,如使用vscode的須要本身安裝windows的SDK和使用dotnet命令)web
首先確保你的項目能在windows上運行docker
ok,接下來發布shell
我發佈到默認的 bin\Release\netcoreapp2.1\publish 下面,大家能夠自定義目錄vim
發佈完成後可看到以下文件結構windows
ok,web程序已經準備好。
我這裏使用xftp工具上傳,上傳目錄是 /home/website/WebApplication3
去程序所在目錄
cd /home/website/WebApplication3
啓動站點
dotnet WebApplication3.dll
顯示上示信息表明啓動成功。如今打開 http://你的服務器ip:5000
看到運行正常的web頁面(5000端口打不開請檢查你的服務器防火牆,網絡配置等);
從上面的運行結果來看,.net core 程序是以服務的方式前臺運行(相似windows控制檯),那麼若是:
一、服務器忽然死機重啓了;
二、異常致使站點服務掛掉了;
三、運行的shell被運維人員或什麼人不知道,關掉了;
等等緣由,無論什麼緣由,服務異常關閉在生產環境都是不可接受的,那麼我能不能有什麼辦法保證,個人服務時刻要處於運行狀態,一旦掛掉,我馬上重啓它呢?
有,這就是Supervisor乾的事;
(其實還有其餘的進程守護工具的,有機會咱們再單獨聊聊)
一、安裝Supervisor
yum install python-setuptools easy_install supervisor
二、配置Supervisor
mkdir /etc/supervisor echo_supervisord_conf > /etc/supervisor/supervisord.conf
將supervisord.conf文件的最底下的,改爲這樣
[include] files = conf.d/*.conf
若是須要啓用UI管理的話也是修改這個文件
改這幾句
;[inet_http_server] ; inet (TCP) server disabled by default ;port=127.0.0.1:9001 ; (ip_address:port specifier, *:port for all iface) #監聽 ;username=user ; (default is no username (open server)) #用戶名 ;password=123 #密碼
*ps:若是服務已啓動,修改配置文件可用「supervisorctl reload」命令來使其生效*
三、添加對WebApplication3.dll的守護
建立一個 WebApplication3.conf文件,內容以下:
;後面的中文是註釋,爲避免亂碼等問題致使supervisor啓動失敗,能夠先刪掉註釋再放到服務器
[program:WebApplication3] command=dotnet WebApplication3.dll ; 運行程序的命令 directory=/home/wwwroot/WebApplication3/ ; 命令執行的目錄 autorestart=true ; 程序意外退出是否自動重啓 stderr_logfile=/var/log/WebApplication3.err.log ; 錯誤日誌文件 stdout_logfile=/var/log/WebApplication3.out.log ; 輸出日誌文件 environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量 user=root ; 進程執行的用戶身份 stopsignal=INT
將文件拷貝至:「/etc/supervisor/conf.d/WebApplication3.conf」下
運行supervisord,查看是否生效
supervisord -c /etc/supervisor/supervisord.conf ps -ef | grep WebApplication3
能夠看到,WebApplication3正在運行,那麼對WebApplication3站點的進程守護配置完成,下面測試一下;
四、Supervisor配置開機啓動
不言而喻,這個很重要了,守護進程是須要開機啓動的;
cd /usr/lib/systemd/system/ vim 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對.net core 站點的守護
使用:reboot
命令重啓後便可,再次訪問站點,你會驚喜的發現站點依舊在運行
http://www.cnblogs.com/ants/p/5732337.html
至此,.net core 程序普通部署方式完畢,若使用docker方式部署,請看個人 Asp.Net Core 程序部署到Linux(centos)生產環境(二):docker部署(已發佈)