系列①②已经完成了这个项目的页面和项目的全部编码,前后端分离,这个文章将向你展示运维小伙伴如何部署到windows服务器linux服务器docker部署,一学就会,快来看看吧!

说明:这个系列准备用Simple快速框架搞个自己能用的网盘,来个实战,教大家如何搞一个项目,其中你能学到如何进行项目级对接,如何快速进行项目编码,如何完善你的项目,以及如何部署它。

我的快速开发框架项目

先介绍下我的基于.NET 8的快速开发框架Simple Framework,旨在简化开发流程,减少学习成本。框架特点包括基于.NET 8、少用第三方库、基本授权鉴权、CRUD实现和后台管理前端。规划使用了NLog、Redis、Json库等,并支持多数据库结构。框架包含基础库、Web项目扩展库、EFCore扩展库、代码生成器和定时任务模块,并提供了一套基于vue2 elementui前端页面框架,以提高开发效率和灵活性,发布以来收到了很多朋友的喜欢,本文的封装工具也是朋友的建议下撸出来的,快去看看吧。点我Star

整个项目已经完成了,整体代码图如下:

项目代码行数分析图 692行:

下面开始准备编译部署

先说最简单的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的使用就不细说了,快给我点赞给我动力发布其他更多精彩内容吧!

源码地址

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

自己写个网盘系列:③ 开源这个网盘编码,手把手教你windows linux 直接部署,docker本地打包部署网盘应用的更多相关文章

  1. Coolify系列02-从0到1超详细手把手教你上手Coolify

    接着上集(Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案 ),此时我们已经运行成功,如果没有成功,可以参考我的Coolify系列其他文章来解决问 ...

  2. 手把手教你写Kconfig---基于tiny4412开发板

    转自:http://blog.csdn.net/morixinguan/article/details/54744237 今天,我就来教大家写写最简单的Kconfig,什么是Kconfig? 我们配置 ...

  3. 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源

    前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...

  4. 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...

  5. 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染

    版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...

  6. 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐

    大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...

  7. docker安装nextcloud私人网盘,开启https配置证书

    docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...

  8. p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务

    系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...

  9. 一个网友写的栈,问为啥不能迭代。具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网

    一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网 一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器 python视频 ...

  10. Docker+Nextcloud快速部署个人网盘

    各位大佬好,,,萌新顾北清又回来更新了,今天要快速部署一个人网盘. 有多快呢,,,5分钟吧,因为我们使用Docker部署. Docker基础可以看看我之前的博文.(点这里点这里) 那么,,,开始吧. ...

随机推荐

  1. Swoole从入门到入土(7)——TCP服务器[大杂烩]

    这一篇是异步风格的TCP服务器的最后一篇,主要的目的是疏理之前几篇没提到的一些比较有用的属性.配置.函数与事件,当然不是全部.如果想知道全部,请查看官网. 1.属性 Swoole\Server-> ...

  2. mysql插入表中的中文字符显示为乱码或问号的解决方法

    mysql中文显示乱码或者问号是因为选用的编码不对或者编码不一致造成的,最简单的方法就是修改mysql的配置文件my.cnf.在[mydqld]和[client]段加入 default-charact ...

  3. 使用base标签解决Thymeleaf页面获取项目路径问题

    问题说明 写博客页面在发表博客后我想跳转到博客详情页.这里面我用到了:window.location.href="localhost:8080/post/detail/123"; ...

  4. (微服务)服务治理:熔断器介绍以及hystrix-go的使用

    一.什么是熔断器 要理解熔断器,可以先看看电路中使用的保险丝. 保险丝(fuse)也被称为电流保险丝,IEC127 标准将它定义为"熔断体(fuse-link)".保险丝是一种保证 ...

  5. [BUUCTF][Web][GXYCTF2019]Ping Ping Ping 1

    打开靶机对应URL 提示有ip参数 尝试构造url http://714ad4a2-64e2-452b-8ab9-a38df80dc584.node4.buuoj.cn:81/?ip=127.0.0. ...

  6. Elasticsearch系列之-windows安装和基础操作

    ElasticSearch安装 安装JDK环境 因为ElasticSearch是用Java语言编写的,所以必须安装JDK的环境,并且是JDK 1.8以上 官网:https://www.oracle.c ...

  7. 大众点评cat报警源码

    类时序 时许说明 判断是否是报警机器. 1分钟启动一个线程根据设置的报警条件,时间段去查询CAT报告数据. 根据返回的报告数据,逐层解析TYPE,NAME,RANGE中的数据是否满足报警条件. 只有全 ...

  8. RocketMQ(4) 消息的消费

    消费者从Broker中获取消息的方式有两种:pull拉取方式和push推动方式.消费者组对于消息消费的模 式又分为两种:集群消费Clustering和广播消费Broadcasting. 1. 获取消息 ...

  9. Java 重写 equals + toString 练习

    1 package com.bytezreo.objectclass2; 2 3 /** 4 * 5 * @Description 重写 equals + toString 6 * @author B ...

  10. Java instanceof 全小写 关键字使用

    1 package com.bytezreo.duotai2; 2 3 import java.sql.Date; 4 5 /** 6 * 7 * @Description 面向对象的特征三 ---- ...