Asp.Net Core 程序部署到Linux(centos)生產環境(一):普通部署

Image result for linux .net core

運行環境

照例,先亮底html

centos:7.2
cpu:1核 2G內存 1M帶寬python

輔助工具:xshell xftplinux

搭建.net core運行環境

.net core 的運行環境我單獨寫了一篇,請看個人這篇文章[linux(centos)搭建.net core 運行環境]git

準備你的.net core web 程序

我這裏新建一個空的.net core web程序用以演示,實際部署時是你的項目github

建立web項目(我本身使用vs2017 ,如使用vscode的須要本身安裝windows的SDK和使用dotnet命令)web

1539874500349

首先確保你的項目能在windows上運行docker

1539874615825

ok,接下來發布shell

我發佈到默認的 bin\Release\netcoreapp2.1\publish 下面,大家能夠自定義目錄vim

1539874647886

發佈完成後可看到以下文件結構windows

1539874735884

ok,web程序已經準備好。

上傳應用程序到linux

我這裏使用xftp工具上傳,上傳目錄是 /home/website/WebApplication3

1539875022573

啓動web站點

去程序所在目錄

cd /home/website/WebApplication3

啓動站點

dotnet WebApplication3.dll

1539876880136

顯示上示信息表明啓動成功。如今打開 http://你的服務器ip:5000

看到運行正常的web頁面(5000端口打不開請檢查你的服務器防火牆,網絡配置等);

配置守護進程(Supervisor)

從上面的運行結果來看,.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文件的最底下的,改爲這樣

1539917139050

[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站點的進程守護配置完成,下面測試一下;

1539917767557

四、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部署(已發佈)

相關文章
相關標籤/搜索