在(zài) 阿裏雲上(shàng) Ubuntu(Linux)上(shàng) 部署 .net core web 項目 - 新聞資訊 - 雲南小程序開發|雲南軟件開發|雲南網站建設-昆明融晨信息技術有限公司

159-8711-8523

雲南網建設/小程序開發/軟件開發

知識

不(bù)管是(shì)網站,軟件還是(shì)小程序,都要(yào / yāo)直接或間接能爲(wéi / wèi)您産生價值,我們在(zài)追求其視覺表現的(de)同時(shí),更側重于(yú)功能的(de)便捷,營銷的(de)便利,運營的(de)高效,讓網站成爲(wéi / wèi)營銷工具,讓軟件能切實提升企業内部管理水平和(hé / huò)效率。優秀的(de)程序爲(wéi / wèi)後期升級提供便捷的(de)支持!

您當前位置>首頁 » 新聞資訊 » 技術分享 >

在(zài) 阿裏雲上(shàng) Ubuntu(Linux)上(shàng) 部署 .net core web 項目

發表時(shí)間:2020-10-19

發布人(rén):融晨科技

浏覽次數:46

我在(zài)阿裏雲購買的(de) 主機

安裝的(de)是(shì) Ubuntu (烏班圖) 是(shì) Linux 的(de)一種 ,以(yǐ)下簡稱 Utuntu

用到(dào)的(de)工具:

  • vs 2019 宇宙第一IDE
  • xshell 遠程 linux 工具

目錄

1、準備一個(gè) core web 項目

?2、直接在(zài) Ubuntu 上(shàng)部署

?3、在(zài) Ubuntu 上(shàng) 的(de) docker 上(shàng)運行 .net core web 項目


1、準備一個(gè) core web 項目

這(zhè)個(gè)項目創建出(chū)來(lái)用docker 時(shí)無法調試運行的(de) ,vs 2019 會提示下載 Linux 鏡像來(lái)調試這(zhè)個(gè)項目 但是(shì)這(zhè)個(gè)下載過程多半是(shì)卡死的(de)

這(zhè)裏先不(bù)管這(zhè)個(gè)問題先把我們要(yào / yāo)的(de)文件發布出(chū)來(lái)先

先修改一下運行的(de)端口 改下 代碼:在(zài) Program 類中添加如下内容設置 占用端口

webBuilder.UseUrls("http://*:5210;http://*:5211;http://*:80");

設置下 Dockerfile 文件爲(wéi / wèi)始終複制

然後發布文件

點擊編輯 确保 如下的(de) 框架依賴

發布完成後在(zài) pulish 文件夾内修改 Dockerfile 因爲(wéi / wèi) 之(zhī)前的(de)内容是(shì)爲(wéi / wèi)在(zài) windows 上(shàng)做調試 如果上(shàng) Docker 要(yào / yāo)删減很多内容

#See https://aka.ms/containerfastmode to understand how Visual Studio uses this Dockerfile to build your images for faster debugging.

FROM mcr.microsoft.com/dotnet/core/aspnet:3.1-buster-slim AS base
WORKDIR /app
EXPOSE 5210
EXPOSE 5211
EXPOSE 80


COPY . .
ENTRYPOINT ["dotnet", "你的(de)項目名稱.dll"]

然後打包爲(wéi / wèi) publish.zip

需要(yào / yāo) 拷貝 到(dào) Utuntu 解壓

所以(yǐ)需要(yào / yāo)在(zài) Ubuntu 上(shàng)安裝 壓縮軟件 借用下别人(rén)的(de)教程 安裝 Unzip

Ubuntu unzip 安裝

然後 要(yào / yāo)把本地(dì / de) windows 10 的(de) publish.zip 文件 copy 到(dào) Ubuntu 也(yě)需要(yào / yāo)在(zài)在(zài) ubuntu 安裝 工具

XShell本地(dì / de)上(shàng)傳文件到(dào)Ubuntu上(shàng)及從Ubuntu下載文件到(dào)本地(dì / de)

安裝完上(shàng)面的(de) 軟件後 我就(jiù) 把 publish.zip 壓縮文件上(shàng)傳

可以(yǐ)看到(dào) Ubuntu 當前的(de) 目錄 是(shì) ~/project/publish

然後輸入 解壓命令 unzip publish.zip 解壓到(dào)當前文件夾

2、直接在(zài) Ubuntu 上(shàng)部署


我的(de) 雲主機 系統爲(wéi / wèi) ubuntu 20.04 是(shì)長支持版本

然後按照官網的(de)實例安裝需要(yào / yāo)的(de)

https://docs.microsoft.com/zh-cn/dotnet/core/install/linux-ubuntu

1、将 Microsoft 包簽名密鑰添加到(dào)受信任密鑰列表,并添加包存儲庫。

wget https://packages.microsoft.com/config/ubuntu/20.04/packages-microsoft-prod.deb -O packages-microsoft-prod.deb sudo dpkg -i packages-microsoft-prod.deb

2、安裝 .net core sdk

sudo apt-get update;   sudo apt-get install -y apt-transport-https &&   sudo apt-get update &&   sudo apt-get install -y dotnet-sdk-3.1

3、安裝 .net core 運行時(shí)

sudo apt-get update;   sudo apt-get install -y apt-transport-https &&   sudo apt-get update &&   sudo apt-get install -y aspnetcore-runtime-3.1

完事後 dotnet --version 看看 結果:我這(zhè)邊用了(le/liǎo) 遠程 linux 的(de)遠程工具 Xshell

這(zhè)個(gè)軟件很好找就(jiù)不(bù)多說(shuō)了(le/liǎo)

ok notnet 環境已經ok 了(le/liǎo)

然後 進入 publish 文件夾内 運行 命令 dotnet coreweb.dll

coreweb 是(shì)我的(de)項目名稱,需要(yào / yāo)按實際更改

dotnet 你的(de)項目名稱.dll

然後 結果如下就(jiù)是(shì)正常啓動

現在(zài)這(zhè)個(gè)窗口就(jiù)運行上(shàng) 我們的(de)項目 了(le/liǎo) 有提示 ctrl +c 推出(chū) 但是(shì)在(zài)它運行的(de)同時(shí)我們還要(yào / yāo)輸入命令

可以(yǐ)再新建一個(gè)窗口來(lái)輸入命令

測試下 ubuntu 本地(dì / de)能不(bù)能訪問這(zhè)個(gè)網站 輸入

curl http:/127.0.0.1:80

或者

curl http:/127.0.0.1:5210

或者

curl http:/127.0.0.1:5211

看到(dào) 返回了(le/liǎo) 項目 首頁 歡迎 的(de) html 就(jiù)說(shuō)明本地(dì / de)沒問題

然後在(zài) win 10 用浏覽器 訪問下:Ubuntu 的(de) 公網IP +端口 發現訪問不(bù)了(le/liǎo)

這(zhè)個(gè)時(shí)候就(jiù)需要(yào / yāo)去阿裏雲 暴露一下 5211 端口

然後成功:

3、在(zài) Ubuntu 上(shàng) 的(de) docker 上(shàng)運行 .net core web 項目

先把上(shàng)面 2 運行的(de)實例關掉 不(bù)然 端口占用問題可能會導緻docker的(de)container 啓動不(bù)了(le/liǎo)

// 查看當前進程
ps
// 殺掉指定進程
kill %pid

在(zài) Ubuntu 上(shàng) 安裝 docker :

curl -sSL https://get.daocloud.io/docker | sh

docker --version 測試下安裝成功沒

然後去 publish 文件夾下 執行 打包鏡像 命令 ,這(zhè)後面的(de) 很重要(yào / yāo)

docker build -t corewebimage .

有了(le/liǎo)鏡像就(jiù)可以(yǐ)運行實例了(le/liǎo): 這(zhè)裏的(de) 80 : 80 是(shì)

Ubuntu 的(de) 80 指向 container 的(de) 80 端口 這(zhè)個(gè)指向是(shì)必須的(de) ,

簡單理解就(jiù)是(shì)每個(gè) container 都是(shì)一個(gè)小小虛拟機 需要(yào / yāo)指明 宿主機映射端口 否者我們無法訪問到(dào)我們的(de) .net core 項目

docker run -d -p 80:80 corewebimage

看到(dào) container 運行起來(lái)了(le/liǎo)

現在(zài) 就(jiù)可以(yǐ) 用 curl 查看 下 内網能不(bù)能訪問 :可以(yǐ)看到(dào)内網沒問題 返回了(le/liǎo) 首頁的(de) html

在(zài) win 10 用浏覽器試試 公網IP : 也(yě)可以(yǐ)訪問

相關案例查看更多