天天看點

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

環境

  • 本地 win7
  • 伺服器:hype-v 上的Centos
  • ssh工具: Xshell或者(mstsc遠端桌面也可以)
  • 檔案傳輸: xftp

1.在本地建立asp.net core應用釋出

1.1 使用Vs2019 建立一個asp.netcore項目

步驟略(一路next),當然你也可以用指令行建立。

1.2 釋出項目

在項目路徑下執行指令

dotnet publish –c release
           

先本地運作是否有問題,減少因為本地程式造成釋出不成功的幾率。程式就簡單介紹一下,下面部署是管件。

2.安裝netcore SDK

2.1 環境準備

我這裡是在VirtualBox上安裝的Centos.

  1. 需要首先記錄一點,就是虛拟機最小化安裝CentOS 7 預設沒有啟動網絡配置,是以是不能上網的。

接下來就通過vi指令編輯網卡配置檔案ifcfg-enp0s3(其他版本名稱可能略有不同,但路徑一緻)。具體指令如下

vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
           

将ONBOOT=no改為ONBOOT=yes,設定随系統開機運作。然後:wq強制儲存并退出編輯檔案即可。

最後,需要重新開機一下網絡服務。指令如下:

service network restart
           

然後ping www.baidu.com 檢查是否可以正常上網了。

這時就可以用xshell連接配接伺服器。

  1. 最小化安裝同樣沒有ifconfig等網絡指令,這裡為了友善可以安裝net-tools工具包
yum update
yum install net-tools
           

2.2 安裝.NET Core SDK

2.2.1 安裝libicu依賴

yum install libunwind libicu
           

2.2.2 注冊dotnet 的repository

您需要注冊Microsoft簽名密鑰并添加Microsoft産品提要

sudo rpm -Uvh https://packages.microsoft.com/config/rhel/7/packages-microsoft-prod.rpm
           

2.2.3 安裝

sudo yum update
sudo yum install dotnet-sdk-2.2
           

2.2.4 安裝完成

dotnet --info
           

微軟官方參考

參考1

2.2.5 釋出程式測試

  1. 這裡先将剛開始釋出的程式通過xftp傳輸到centos伺服器上,進入程式檔案夾。運作程式
dotnet MyApp.dll
           

但是報錯了,如下圖

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

這裡說明一下:因為本地使用的sdk2.1,是以我沒選最高版本,而是yum search dotnet-sdk,選的是顯示的2.1的最高版本,也就是dotnet-skd-2.1.4。

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

以為是服務端的sdk版本太,但是通過dotnet --info檢視本地版本,如下圖:

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

服務端如下:

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

顯然是伺服器端安裝的版本太低了。是以重新安裝了2.2版本,

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

然後再運作

顯示運作成功。這裡耽誤了好一會時間。

2. 測試

curl http://locahost:5000/api/values
           

可以正常擷取資訊了

但是遠端浏覽器通路,無法通路。這就怪了,為啥呢?

伺服器上用ip位址通路:

curl http://10.100.15.17:5000/api/values
           
Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

也是不通,最後才發現,原來預設是無法通過ip通路。(有大神知道原因可以知道一下)

然後關閉重新啟動,加上url參數

dotnet MyApp.dll --server.urls="http://*:5000"

           
Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(一)環境

此時再通過IP通路,OK通過。

本地浏覽器通路,OK也通過。

好了這裡就可以正常使用,當然測試沒問題了,生産絕對不能這樣搞。下邊還要使用nginx,以及守護程式之類的。

Asp.NetCore程式釋出到CentOs(含安裝部署netcore)--最佳實踐(二)

繼續閱讀