部署ASP.NET Core程序到Linux系統
http://www.rzrgm.cn/ants/p/5732337.html
https://www.jb51.net/article/241514.htm
http://www.rzrgm.cn/wyy1234/p/10542815.html
一、前言
這篇文章我們將講解如何將asp.net core 程序部署到linux。這里我們使用的是虛擬機里面安裝的centos7。這里的asp.net core程序,以上篇文章中發布的框架依賴文件為例進行講解。
二、安裝運行時環境
1、在線安裝
我們只是在linux上面部署應用程序,所以只需要安裝asp.net core runtime即可。在安裝.net之前,我們需要先注冊microsoft密鑰和源,在終端里面執行下面的命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm

更新可供安裝的產品:
sudo yum update
如下圖所示:

最后安裝asp.net core 運行時
sudo yum install aspnetcore-runtime-3.1
如下圖所示:

這時就比較考驗網速了,如果網速比較快,安裝就很快。安裝完成以后查看當前環境:

參考微軟官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7
三、上傳文件
環境安裝完成以后,我們將發布好的文件上傳到服務器。
在終端里面新創建一個文件夾,用來存放我們上傳的文件:
sudo mkdir /NetCoreDemo
如下圖所示:

創建完成以后我們在xftp里面查看新創建的文件夾:

可以看到文件夾已經創建成功了。接著我們使用xftp將文件上傳到剛才創建的文件夾下面:

接下來我們就可以部署了。
四、部署
1、使用kestrel啟動
我們進入文件夾里面,然后直接使用命令行啟動:

可以看到服務以及啟動了。我們在網頁中瀏覽:

網頁沒有任何的輸入,這是為什么呢?因為localhost是內網地址,這里要加上--urls參數,
dotnet AspNetCoreDeployDemo.dll --urls http://*:5000
如下圖所示:

這時我們在訪問網頁:

發現還是不能訪問,這又是什么原因呢?原來在linux中防火墻默認是開啟的,所以要想外網訪問,還需要關閉防火墻或者是把5000端口添加到防火墻中,查看防火墻狀態命令:
service firewalld status
如下圖所示:

可以看到,現在防火墻是開啟的,我們把5000端口添加到防火墻中:
firewall-cmd --zone=public --add-port=5000/tcp --permanent
如下圖所示:

permanent:這個參數表示永久存在,否則重啟防火墻配置就丟失了。
添加了端口以后需要重啟防火墻:
firewall-cmd --reload
如下圖所示:

可以看到這時就可以訪問了。

我們也可以關閉防火墻:
service firewalld stop
如下圖所示:

在生產環境中,不建議關閉防火墻,建議是開啟防火墻,然后把相應的端口號添加到防火墻里面。
2、使用nginx作為反向代理
上面我們是使用的控制臺的方式啟動的,這種方式不能處理反向代理,負載均衡等,所以我們建議在linux上面使用nginx作為反向代理服務器。我們安裝nginx。
因為默認情況下,nginx不在centos的資源庫中,首先要執行下面的命令將nginx添加到資源庫中:
rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
如下圖所示:

然后就可以安裝nginx了:
yum install nginx
如下圖所示:

安裝完以后啟動nginx:
systemctl start nginx
如下圖所示:

將nginx設置為開機啟動:
systemctl enable nginx

nginx默認開啟80端口,我們要把80端口添加到防火墻中,添加完以后重啟防火墻:
firewall-cmd --zone=public --add-port=80/tcp --permanent
如下圖所示:

這時我們在外網訪問nginx:

我們看到這時可以訪問nginx了。接下來我們配置nginx的反向代理。
首先進入nginx的安裝目錄,然后查看所有文件:

如上圖所示,nginx.conf是主配置文件,使用vim編輯器打開該文件:

在上圖中可以發現:下面有一句include /etc/nginx/conf.d/*.conf,這說明還有一些配置在conf.d目錄里面,而我們配置反向代理,主要就是在conf.d文件里面,使用下面的命令進入conf.d命令:
cd conf.d
然后查看所有文件:

發現里面有一個default.conf的文件,使用vim編輯器打開該文件,然后修改如下:

listen表示監聽的端口,這里是80端口。proxy_pass用來設置代理的地址。注意這里不要忘記最后的“;”。
保存以后使用下面的命令檢查修改是否正確:

這說明修改的文件沒有錯誤。配置成功以后,我們需要重啟nginx服務:
nginx -s reload
如下圖所示:

重啟之后我們訪問:

這說明有錯誤,提示信息告訴我們查看nginx日志,我們在nginx.conf里面查看日志路徑:

然后我們進入該路徑,查看下面的所有文件:

發現這下面有兩個日志,我們先查看error.log:

使用下面的命令解決:
setsebool -p httpd_can_network_connect 1
我們重新訪問:

這就可以訪問了。我們在linux上面部署就成功了。
到此這篇關于部署asp.net core程序到linux系統的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持。
后臺運行 nohup dotnet xxx.dll &
浙公網安備 33010602011771號