• 自己写个网盘系列:③ 开源这个网盘编码,手把手教你.NET 8 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的使用就不细说了,快给我点赞给我动力发布其他更多精彩内容吧!

    💚源码地址

    快给我点赞给我动力发布其他更多精彩内容吧!

  • 相关阅读:
    xv6源码解析(一)——系统启动
    第55篇-某did滑块流程分析-滑动验证码【2023-10-12】
    Zookeeper概述
    Spring MVC如何使用@Autowired及@Service进行依赖注入呢?
    【Java初阶】- - - static 关键字
    adb连接切换到模拟器端口
    GNSS模块如何应用在“监控案例”中
    聊聊推荐系统的评测(上)
    《从0到1:HTML5+CSS3修炼之道》笔记
    神经网络控制法的工作原理,什么是神经网络控制
  • 原文地址:https://www.cnblogs.com/Start201505/p/18103517