1. 程式人生 > >Asp.NetCore程序發布到CentOs(含安裝部署netcore)--最佳實踐

Asp.NetCore程序發布到CentOs(含安裝部署netcore)--最佳實踐

dot 重新 ifconf 介紹 可能 api repos 程序 archive

原文:Asp.NetCore程序發布到CentOs(含安裝部署netcore)--最佳實踐

環境

  • 本地 win7
  • 服務器:Virtual Box 上的Centos
  • ssh工具: Xshell
  • 文件傳輸: xftp

1.在本地創建asp.net core應用發布

1.1 使用Vs2017 新建一個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

但是報錯了,如下圖
技術分享圖片

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

以為是服務端的sdk版本太,但是通過dotnet --info查看本地版本,如下圖:
技術分享圖片

服務端如下:
技術分享圖片

顯然是服務器端安裝的版本太低了。所以重新安裝了2.2版本,
技術分享圖片

然後再運行
顯示運行成功。這裏耽誤了好一會時間。

  1. 測試
curl http://locahost:5000/api/values

可以正常獲取信息了
但是遠程瀏覽器訪問,無法訪問。這就怪了,為啥呢?
服務器上用ip地址訪問:

curl http://10.100.15.17:5000/api/values

技術分享圖片

也是不通,最後才發現,原來默認是無法通過ip訪問。(有大神知道原因可以知道一下)
然後關閉重新啟動,加上url參數

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

技術分享圖片

此時再通過IP訪問,OK通過。
本地瀏覽器訪問,OK也通過。

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

Asp.NetCore程序發布到CentOs(含安裝部署netcore)--最佳實踐