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

❤系列①②已經完成了這個項目的頁面和項目的全部編碼,前後端分離,這個文章將向你展示運維小夥伴如何部署到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的使用就不細說了,快給我點贊給我動力發佈其他更多精彩內容吧!

💚源碼地址

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章