溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

發(fā)布時間:2022-03-21 09:08:32 來源:億速云 閱讀:258 作者:iii 欄目:開發(fā)技術

這篇文章主要講解了“怎么部署ASP.NET Core程序到Linux系統(tǒng)”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“怎么部署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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

更新可供安裝的產品:

sudo yum update

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

最后安裝ASP.NET Core 運行時

sudo yum install aspnetcore-runtime-3.1

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

參考微軟官方文檔:https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-package-manager-centos7

2、離線包安裝

如果Linux虛擬機可以連接外網,建議使用上面的方式直接進行安裝,如果是在生產環(huán)境下該如何安裝Runtime呢?下面我們使用微軟提供的離線安裝包進行安裝。首先下載tar.gz的離線包,下載網址:

https://dotnet.microsoft.com/download/dotnet-core/3.1

這里選擇Linux對應的架構的離線包下載:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

我們首先在Linux上創(chuàng)建一個目錄:

mkdir -p /var/lib/dotnet

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

創(chuàng)建完成以后,我們使用Xftp把上面下載的tar.gz離線包上傳到剛才創(chuàng)建的目錄中:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

進入剛才創(chuàng)建的目錄,然后把tar.gz文件解壓到目錄中:

tar zxf aspnetcore-runtime-3.1.1-linux-x64.tar.gz -C /var/lib/dotnet

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

然后執(zhí)行下面的命令設置環(huán)境變量:

export DOTNET_ROOT=/var/lib/dotnet
export PATH=$PATH:/var/lib/dotnet

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

然后檢查環(huán)境:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

可以看到Runtime已經安裝成功了。

注意:這種設置環(huán)境變量的方式只對當前會話窗口起作用,在另外的會話窗口就不起作用了,如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

為了解決這個問題,我們需要創(chuàng)建軟鏈接方式來設置環(huán)境變量。

ln -s /var/lib/dotnet/dotnet /usr/local/bin

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

創(chuàng)建完軟鏈接以后,就可以在所有會話窗口訪問了:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

如果是使用在線rpm的方式進行安裝,不會出現(xiàn)這種問題,所有的會話窗口都可以訪問。

三、上傳文件

環(huán)境安裝完成以后,我們將發(fā)布好的文件上傳到服務器。

在終端里面新創(chuàng)建一個文件夾,用來存放我們上傳的文件:

sudo mkdir /NetCoreDemo

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

創(chuàng)建完成以后我們在XFtp里面查看新創(chuàng)建的文件夾:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

接下來我們就可以部署了。

四、部署

1、使用Kestrel啟動

我們進入文件夾里面,然后直接使用命令行啟動:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

網頁沒有任何的輸入,這是為什么呢?因為localhost是內網地址,這里要加上--urls參數,

dotnet AspNetCoreDeployDemo.dll --urls http://*:5000

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

這時我們在訪問網頁:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

發(fā)現(xiàn)還是不能訪問,這又是什么原因呢?原來在Linux中防火墻默認是開啟的,所以要想外網訪問,還需要關閉防火墻或者是把5000端口添加到防火墻中,查看防火墻狀態(tài)命令:

service firewalld status

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

可以看到,現(xiàn)在防火墻是開啟的,我們把5000端口添加到防火墻中:

firewall-cmd --zone=public --add-port=5000/tcp --permanent

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

permanent:這個參數表示永久存在,否則重啟防火墻配置就丟失了。

添加了端口以后需要重啟防火墻:

firewall-cmd --reload

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

我們也可以關閉防火墻:

service firewalld stop

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

在生產環(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

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

然后就可以安裝Nginx了:

yum install nginx

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

安裝完以后啟動Nginx:

systemctl start nginx

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

將Nginx設置為開機啟動:

systemctl enable nginx

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

Nginx默認開啟80端口,我們要把80端口添加到防火墻中,添加完以后重啟防火墻:

firewall-cmd --zone=public --add-port=80/tcp --permanent

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

這時我們在外網訪問Nginx:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

我們看到這時可以訪問Nginx了。接下來我們配置Nginx的反向代理。

首先進入Nginx的安裝目錄,然后查看所有文件:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

cd conf.d

然后查看所有文件:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

發(fā)現(xiàn)里面有一個default.conf的文件,使用Vim編輯器打開該文件,然后修改如下:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

listen表示監(jiān)聽的端口,這里是80端口。proxy_pass用來設置代理的地址。注意這里不要忘記最后的“;”。

保存以后使用下面的命令檢查修改是否正確:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

這說明修改的文件沒有錯誤。配置成功以后,我們需要重啟Nginx服務:

nginx -s reload

如下圖所示:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

重啟之后我們訪問:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

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

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

發(fā)現(xiàn)這下面有兩個日志,我們先查看error.log:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

使用下面的命令解決:

setsebool -P httpd_can_network_connect 1

我們重新訪問:

怎么部署ASP.NET?Core程序到Linux系統(tǒng)

這就可以訪問了。我們在Linux上面部署就成功了。

感謝各位的閱讀,以上就是“怎么部署ASP.NET Core程序到Linux系統(tǒng)”的內容了,經過本文的學習后,相信大家對怎么部署ASP.NET Core程序到Linux系統(tǒng)這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI