CentOS7系統上部署.net core程序


 一、准備工作

首先安裝 xshell 和 xftp ,前者用於SSH連接Linux服務器,后者用於FTP上傳下載文件。

xshell和xftp個人使用是免費的,下載地址

之后分別輸入用戶名和密碼登錄主機

 

二、安裝.Net Core SDK

SDK安裝方法可以參考官方教程

安裝完畢之后輸入 dotnet --version ,正常顯示版本號,說明sdk安裝成功

三、部署應用

1、新建項目

使用vs2017新建一個ASP.NET Core Web應用程序

 

 新建項目之后首先在本地運行一下,確認項目能正常運行

 

 

2、發布項目

系統能夠正常運行,我們進行發布

3、上傳項目

發布完成之后我們打開xshell上傳文件

 

 在打開窗口之后,窗口分為左右兩邊,左邊為本地,在地址欄輸入剛才項目發布的地址,右邊為服務器,新建CentOsTest文件夾 ,將文件傳輸到服務器上

 

 我們再回到xshell的命令窗口,進入CentOSTest文件,使用 dotnet CentOSTest.dll 命令,啟動程序

至此我們的系統就正常運行了,但是我們並不能訪問,這時候我們需要部署一個web容器來進行轉發

安裝Nginx

分別輸入以下代碼:

curl -o  nginx.rpm http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
rpm -ivh nginx.rpm
yum install nginx

安裝成功!

輸入:systemctl start nginx 來啟動nginx。

輸入:systemctl enable nginx 來設置nginx的開機啟動(linux宕機、重啟會自動運行nginx不需要連上去輸入命令)。

配置防火牆

命令:firewall-cmd --zone=public --add-port=80/tcp --permanent(開放80端口)

命令:systemctl restart firewalld(重啟防火牆以使配置即時生效)

 測試nginx是否可以訪問。

配置nginx對ASP.NET Core應用的轉發

修改 /etc/nginx/conf.d/default.conf 文件。

將文件內容替換為

server {
    listen 80;
    location / {
        proxy_pass http://localhost:5000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection keep-alive;
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
    }
}

上傳至CentOS進行覆蓋。

執行:nginx -s reload 使其即時生效

使用命令 :dotnet CentOSTest.dll 運行ASP.NET Core應用程序

 

這時候再次嘗試訪問。

 

 

至此基本完成了部署。

四、配置守護服務(Supervisor)

目前存在三個問題

問題1:ASP.NET Core應用程序運行在shell之中,如果關閉shell則會發現ASP.NET Core應用被關閉,從而導致應用無法訪問,這種情況當然是我們不想遇到的,而且生產環境對這種情況是零容忍的。

問題2:如果ASP.NET Core進程意外終止那么需要人為連進shell進行再次啟動,往往這種操作都不夠及時。

問題3:如果服務器宕機或需要重啟我們則還是需要連入shell進行啟動。

為了解決這個問題,我們需要有一個程序來監聽ASP.NET Core 應用程序的狀況。在應用程序停止運行的時候立即重新啟動。這邊我們用到了Supervisor這個工具,Supervisor使用Python開發的。

安裝Supervisor

yum install supervisor

配置Supervisor

mkdir /etc/supervisor
echo_supervisord_conf > /etc/supervisor/supervisord.conf

修改supervisord.conf文件,將文件尾部的配置

修改為

配置對ASP.NET Core應用的守護

創建一個 CentOSTest.conf文件,內容大致如下

[program:CentOSTest]
command=dotnet CentOSTest.dll ; 運行程序的命令
directory=/root/CentOSTest/ ; 命令執行的目錄
autorestart=true ; 程序意外退出是否自動重啟
stderr_logfile=/var/log/CentOSTest.err.log ; 錯誤日志文件
stdout_logfile=/var/log/CentOSTest.out.log ; 輸出日志文件
environment=ASPNETCORE_ENVIRONMENT=Production ; 進程環境變量
user=root ; 進程執行的用戶身份
stopsignal=INT

 

將文件拷貝至:“/etc/supervisor/conf.d/WebApplication1.conf”下

運行supervisord,查看是否生效

supervisord -c /etc/supervisor/supervisord.conf
ps -ef | grep CentOSTest

如果存在dotnet CentISTest.dll 進程則代表運行成功,這時候在使用瀏覽器進行訪問,就能正常訪問網站

配置Supervisor開機啟動

新建一個“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

將文件拷貝至:“/usr/lib/systemd/system/supervisord.service”

執行命令:systemctl enable supervisord

執行命令:systemctl is-enabled supervisord #來驗證是否為開機啟動

 

至此,守護程序配置完畢。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM