<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
這篇文章我們將講解如何將ASP.NET Core 程式部署到Linux。這裡我們使用的是虛擬機器器裡面安裝的Centos7。這裡的ASP.NET Core程式,以上篇文章中釋出的框架依賴檔案為例進行講解。
我們只是在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
如果Linux虛擬機器器可以連線外網,建議使用上面的方式直接進行安裝,如果是在生產環境下該如何安裝Runtime呢?下面我們使用微軟提供的離線安裝包進行安裝。首先下載tar.gz的離線包,下載網址:
https://dotnet.microsoft.com/download/dotnet-core/3.1
這裡選擇Linux對應的架構的離線包下載:
我們首先在Linux上建立一個目錄:
mkdir -p /var/lib/dotnet
如下圖所示:
建立完成以後,我們使用Xftp把上面下載的tar.gz離線包上傳到剛才建立的目錄中:
進入剛才建立的目錄,然後把tar.gz檔案解壓到目錄中:
tar zxf aspnetcore-runtime-3.1.1-linux-x64.tar.gz -C /var/lib/dotnet
如下圖所示:
然後執行下面的命令設定環境變數:
export DOTNET_ROOT=/var/lib/dotnet export PATH=$PATH:/var/lib/dotnet
如下圖所示:
然後檢查環境:
可以看到Runtime已經安裝成功了。
注意:這種設定環境變數的方式只對當前對談視窗起作用,在另外的對談視窗就不起作用了,如下圖所示:
為了解決這個問題,我們需要建立軟連結方式來設定環境變數。
ln -s /var/lib/dotnet/dotnet /usr/local/bin
如下圖所示:
建立完軟連結以後,就可以在所有對談視窗存取了:
如果是使用線上rpm的方式進行安裝,不會出現這種問題,所有的對談視窗都可以存取。
環境安裝完成以後,我們將釋出好的檔案上傳到伺服器。
在終端裡面新建立一個資料夾,用來存放我們上傳的檔案:
sudo mkdir /NetCoreDemo
如下圖所示:
建立完成以後我們在XFtp裡面檢視新建立的資料夾:
可以看到資料夾已經建立成功了。接著我們使用Xftp將檔案上傳到剛才建立的資料夾下面:
接下來我們就可以部署了。
我們進入資料夾裡面,然後直接使用命令列啟動:
可以看到服務以及啟動了。我們在網頁中瀏覽:
網頁沒有任何的輸入,這是為什麼呢?因為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
如下圖所示:
在生產環境中,不建議關閉防火牆,建議是開啟防火牆,然後把相應的埠號新增到防火牆裡面。
上面我們是使用的控制檯的方式啟動的,這種方式不能處理反向代理,負載均衡等,所以我們建議在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系統的文章就介紹到這了。希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45