部署ASP.NET?Core程序到Linux系統(tǒng)
一、前言
這篇文章我們將講解如何將ASP.NET Core 程序部署到Linux。這里我們使用的是虛擬機里面安裝的Centos7。這里的ASP.NET Core程序,以上篇文章中發(fā)布的框架依賴文件為例進行講解。
二、安裝運行時環(huán)境
1、在線安裝
我們只是在Linux系統(tǒng)上面部署應用程序,所以只需要安裝ASP.NET Core Runtime即可。在安裝.NET之前,我們需要先注冊Microsoft密鑰和源,在終端里面執(zhí)行下面的命令:
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
更新可供安裝的產(chǎn)品:
sudo yum update
如下圖所示:
最后安裝ASP.NET Core 運行時
sudo yum install aspnetcore-runtime-3.1
如下圖所示:
這時就比較考驗網(wǎng)速了,如果網(wǎng)速比較快,安裝就很快。安裝完成以后查看當前環(huán)境:
參考微軟官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7
2、離線包安裝
如果Linux虛擬機可以連接外網(wǎng),建議使用上面的方式直接進行安裝,如果是在生產(chǎn)環(huán)境下該如何安裝Runtime呢?下面我們使用微軟提供的離線安裝包進行安裝。首先下載tar.gz的離線包,下載網(wǎng)址:
https://dotnet.microsoft.com/download/dotnet-core/3.1
這里選擇Linux對應的架構(gòu)的離線包下載:
我們首先在Linux上創(chuàng)建一個目錄:
mkdir -p /var/lib/dotnet
如下圖所示:
創(chuàng)建完成以后,我們使用Xftp把上面下載的tar.gz離線包上傳到剛才創(chuàng)建的目錄中:
進入剛才創(chuàng)建的目錄,然后把tar.gz文件解壓到目錄中:
tar zxf aspnetcore-runtime-3.1.1-linux-x64.tar.gz -C /var/lib/dotnet
如下圖所示:
然后執(zhí)行下面的命令設置環(huán)境變量:
export DOTNET_ROOT=/var/lib/dotnet export PATH=$PATH:/var/lib/dotnet
如下圖所示:
然后檢查環(huán)境:
可以看到Runtime已經(jīng)安裝成功了。
注意:這種設置環(huán)境變量的方式只對當前會話窗口起作用,在另外的會話窗口就不起作用了,如下圖所示:
為了解決這個問題,我們需要創(chuàng)建軟鏈接方式來設置環(huán)境變量。
ln -s /var/lib/dotnet/dotnet /usr/local/bin
如下圖所示:
創(chuàng)建完軟鏈接以后,就可以在所有會話窗口訪問了:
如果是使用在線rpm的方式進行安裝,不會出現(xiàn)這種問題,所有的會話窗口都可以訪問。
三、上傳文件
環(huán)境安裝完成以后,我們將發(fā)布好的文件上傳到服務器。
在終端里面新創(chuàng)建一個文件夾,用來存放我們上傳的文件:
sudo mkdir /NetCoreDemo
如下圖所示:
創(chuàng)建完成以后我們在XFtp里面查看新創(chuàng)建的文件夾:
可以看到文件夾已經(jīng)創(chuàng)建成功了。接著我們使用Xftp將文件上傳到剛才創(chuàng)建的文件夾下面:
接下來我們就可以部署了。
四、部署
1、使用Kestrel啟動
我們進入文件夾里面,然后直接使用命令行啟動:
可以看到服務以及啟動了。我們在網(wǎng)頁中瀏覽:
網(wǎng)頁沒有任何的輸入,這是為什么呢?因為localhost是內(nèi)網(wǎng)地址,這里要加上--urls參數(shù),
dotnet AspNetCoreDeployDemo.dll --urls http://*:5000
如下圖所示:
這時我們在訪問網(wǎng)頁:
發(fā)現(xiàn)還是不能訪問,這又是什么原因呢?原來在Linux中防火墻默認是開啟的,所以要想外網(wǎng)訪問,還需要關閉防火墻或者是把5000端口添加到防火墻中,查看防火墻狀態(tài)命令:
service firewalld status
如下圖所示:
可以看到,現(xiàn)在防火墻是開啟的,我們把5000端口添加到防火墻中:
firewall-cmd --zone=public --add-port=5000/tcp --permanent
如下圖所示:
permanent:這個參數(shù)表示永久存在,否則重啟防火墻配置就丟失了。
添加了端口以后需要重啟防火墻:
firewall-cmd --reload
如下圖所示:
可以看到這時就可以訪問了。
我們也可以關閉防火墻:
service firewalld stop
如下圖所示:
在生產(chǎn)環(huán)境中,不建議關閉防火墻,建議是開啟防火墻,然后把相應的端口號添加到防火墻里面。
2、使用Nginx作為反向代理
上面我們是使用的控制臺的方式啟動的,這種方式不能處理反向代理,負載均衡等,所以我們建議在Linux上面使用Nginx作為反向代理服務器。我們安裝Nginx。
因為默認情況下,Nginx不在CentOS的資源庫中,首先要執(zhí)行下面的命令將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
如下圖所示:
這時我們在外網(wǎng)訪問Nginx:
我們看到這時可以訪問Nginx了。接下來我們配置Nginx的反向代理。
首先進入Nginx的安裝目錄,然后查看所有文件:
如上圖所示,nginx.conf是主配置文件,使用vim編輯器打開該文件:
在上圖中可以發(fā)現(xiàn):下面有一句include /etc/nginx/conf.d/*.conf,這說明還有一些配置在conf.d目錄里面,而我們配置反向代理,主要就是在conf.d文件里面,使用下面的命令進入conf.d命令:
cd conf.d
然后查看所有文件:
發(fā)現(xiàn)里面有一個default.conf的文件,使用Vim編輯器打開該文件,然后修改如下:
listen表示監(jiān)聽的端口,這里是80端口。proxy_pass用來設置代理的地址。注意這里不要忘記最后的“;”。
保存以后使用下面的命令檢查修改是否正確:
這說明修改的文件沒有錯誤。配置成功以后,我們需要重啟Nginx服務:
nginx -s reload
如下圖所示:
重啟之后我們訪問:
這說明有錯誤,提示信息告訴我們查看Nginx日志,我們在nginx.conf里面查看日志路徑:
然后我們進入該路徑,查看下面的所有文件:
發(fā)現(xiàn)這下面有兩個日志,我們先查看error.log:
使用下面的命令解決:
setsebool -P httpd_can_network_connect 1
我們重新訪問:
這就可以訪問了。我們在Linux上面部署就成功了。
到此這篇關于部署ASP.NET Core程序到Linux系統(tǒng)的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
詳解ABP框架中的數(shù)據(jù)過濾器與數(shù)據(jù)傳輸對象的使用
ABP框架是一個基于ASP.NET的Web開發(fā)框架,這里我們來詳解ABP框架中的數(shù)據(jù)過濾器與數(shù)據(jù)傳輸對象的使用,需要的朋友可以參考下2016-06-06.Net Core使用SignalR實現(xiàn)斗地主游戲
本文詳細講解了.Net Core使用SignalR實現(xiàn)斗地主游戲的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01