自己寫個網盤系列:③ 開源這個網盤編碼,手把手教你windows linux 直接部署,docker本地打包部署網盤應用

VictorStar發表於2024-03-29

❤系列①②已經完成了這個專案的頁面和專案的全部編碼,前後端分離,這個文章將向你展示運維小夥伴如何部署到windows伺服器linux伺服器docker部署,一學就會,快來看看吧!

❤說明:這個系列準備用Simple快速框架搞個自己能用的網盤,來個實戰,教大家如何搞一個專案,其中你能學到如何進行專案級對接,如何快速進行專案編碼,如何完善你的專案,以及如何部署它。

💥我的快速開發框架專案

先介紹下我的基於.NET 8的快速開發框架Simple Framework,旨在簡化開發流程,減少學習成本。框架特點包括基於.NET 8、少用第三方庫、基本授權鑑權、CRUD實現和後臺管理前端。規劃使用了NLog、Redis、Json庫等,並支援多資料庫結構。框架包含基礎庫、Web專案擴充套件庫、EFCore擴充套件庫、程式碼生成器和定時任務模組,並提供了一套基於vue2 elementui前端頁面框架,以提高開發效率和靈活性,釋出以來收到了很多朋友的喜歡,本文的封裝工具也是朋友的建議下擼出來的,快去看看吧。點我✨Star

整個專案已經完成了,整體程式碼圖如下:
image

專案程式碼行數分析圖 692行:
image

下面開始準備編譯部署

💫先說最簡單的windows伺服器部署執行

webHost專案右鍵釋出,選擇win64(不考慮x86了),我們按照框架依賴釋出

釋出好後,在伺服器上安裝.NET8的執行環境 安裝 Windows Hosting Bundle ,輸入dotnet --info 檢視是否安裝正常

將publish包複製到伺服器的軟體目錄,下面幾種執行方式:
1.簡單執行直接雙擊啟動webhost.exe
2.cmd命令啟動 dotnet webhost.dll
3.IIS 執行,IIS新增網站,選擇我們的目錄,和常規iis站點一樣直接啟動
4.服務執行,將應用註冊為服務執行。

應用正常啟動後,瀏覽器輸入http://localhost:5000即可進入網盤頁面。

💫接下來說Linux伺服器部署執行

此處假設你已經有一定的linux使用基礎,確保開啟了適當的防火牆埠,以便外界可以訪問你的應用程式

本地根據你的linux伺服器版本 配置釋出檔案,我此處使用Linux-64釋出,釋出好後複製到伺服器上

我們使用WindTerm 連線我們的Linux伺服器,首先不管什麼版本的linux 伺服器,先按照指令碼安裝.NET 8 Linux發行版,以Ubuntu為例,你可能需要執行如下命令來安裝.NET 8:

# 新增Microsoft的包倉庫
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
# 安裝.NET SDK
sudo yum install dotnet-sdk-8.0
# 安裝.NET 執行時
sudo yum install aspnetcore-runtime-8.0
# 安裝.NET 執行時環境
sudo yum install dotnet-runtime-8.0

如果是Centos(高版本)

# 新增Microsoft的包倉庫
sudo rpm -Uvh https://packages.microsoft.com/config/centos/7/packages-microsoft-prod.rpm
# 安裝.NET SDK
sudo yum install dotnet-sdk-8.0
# 安裝.NET 執行時
sudo yum install aspnetcore-runtime-8.0
# 安裝.NET 執行時環境
sudo yum install dotnet-runtime-8.0

安裝完成後,使用dotnet --info測試你的安裝是否正常

在應用目錄 執行 dotnet WebHost.dll 即可執行你的網盤站點,注意,按照此方式執行的站點,ssh連線斷開後應用就關閉了,和我們關閉了控制檯一樣,你要保持常駐執行,一般我們使用服務執行。

💫接下來說Linux伺服器服務部署執行

上述過程不變需要來一遍,使用systemd建立一個服務。建立一個服務檔案,例如/etc/systemd/system/WebHost.service,然後新增以下內容:

[Unit]
Description=WebHost

[Service]
WorkingDirectory=/path/to/app
ExecStart=/usr/bin/dotnet /path/to/app/WebHost.dll
Restart=always
RestartSec=10
KillSignal=SIGINT
SyslogIdentifier=dotnet-example
User=root
Environment=ASPNETCORE_ENVIRONMENT=Production

[Install]
WantedBy=multi-user.target

然後啟用並啟動服務:

sudo systemctl enable your-application.service
sudo systemctl start your-application.service

好了,就這麼簡單,Linux伺服器上的釋出部署也就完了,當然還有一些更細節的配置,比如配置使用啥埠啊,配置使用啥賬戶執行啊,那都是需要更深入後會遇到的問題,此處就不深入解說了

💫接下來說伺服器Docker部署執行,此處假設你已經知道一些docker的基礎知識

首先你要製作docker映象,需要配置dockerfile

FROM mcr.microsoft.com/dotnet/aspnet:8.0 AS base
USER root
WORKDIR /app
EXPOSE 8080

# 將釋出的應用檔案複製到容器中 . . 需要dockerfile檔案和釋出後的檔案在一個目錄
COPY . .

ENTRYPOINT ["dotnet", "WebHost.dll"]

上傳你釋出好的檔案,連同dofkerfile檔案一起,在此目錄構建docker 映象

docker build -t simplecloudimage:tag .

執行 docker images 檢視是否構建成功

構建成功之後,就可以使用docker命令執行容器

docker run -d \
  -v simplecloud-keys:/root/.aspnet/DataProtection-Keys \
  -v /mystorage/SimpleCloud:/app/simplecloud \
  -p 8080:8080 \
  --name simplecloud simplecloudimage

上面的命令我把儲存盤給對映了出來,保證我們的檔案即使容器不在了,也能存在,埠正常的情況下,你訪問伺服器8080埠即可進入網盤

❣擴充套件

你的映象構建好了,你可以把他釋出到映象倉庫,這樣其它人就可以直接使用你構建好的映象來建立應用,那個屬於docker的使用就不細說了,快給我點贊給我動力釋出其他更多精彩內容吧!

💚原始碼地址

快給我點贊給我動力釋出其他更多精彩內容吧!

相關文章