自己写个网盘系列:③ 开源这个网盘编码,手把手教你windows linux 直接部署,docker本地打包部署网盘应用
系列①②已经完成了这个项目的页面和项目的全部编码,前后端分离,这个文章将向你展示运维小伙伴如何部署到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本地打包部署网盘应用的更多相关文章
- Coolify系列02-从0到1超详细手把手教你上手Coolify
接着上集(Coolify系列01- 从0到1超详细手把手教你上手Heroku 和 Netlify 的开源替代方案 ),此时我们已经运行成功,如果没有成功,可以参考我的Coolify系列其他文章来解决问 ...
- 手把手教你写Kconfig---基于tiny4412开发板
转自:http://blog.csdn.net/morixinguan/article/details/54744237 今天,我就来教大家写写最简单的Kconfig,什么是Kconfig? 我们配置 ...
- 打造百度网盘备份利器:自动备份Linux VPS文件和多线程下载百度网盘资源
前一段时间国内的各大网盘百度云盘,金山快盘,360云盘,华为网盘为争夺用户上演空间容量博弈,网盘商们还固执地以为中国的网民都不懂网络技术,可以像某公司那样用一些数字的手段来忽悠用户,参与到网盘商的数字 ...
- 手把手教你写电商爬虫-第三课 实战尚妆网AJAX请求处理和内容提取
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 看完两篇,相信大家已经从开始的 ...
- 手把手教你写电商爬虫-第四课 淘宝网商品爬虫自动JS渲染
版权声明:本文为博主原创文章,未经博主允许不得转载. 系列教程: 手把手教你写电商爬虫-第一课 找个软柿子捏捏 手把手教你写电商爬虫-第二课 实战尚妆网分页商品采集爬虫 手把手教你写电商爬虫-第三课 ...
- 《Dotnet9》系列-开源C# WPF控件库3《HandyControl》强力推荐
大家好,我是Dotnet9小编,一个从事dotnet开发8年+的程序员.我最近开始写dotnet分享文章,希望能让更多人看到dotnet的发展,了解更多dotnet技术,帮助dotnet程序员应用do ...
- docker安装nextcloud私人网盘,开启https配置证书
docker安装nextcloud私人网盘 之前一直用的百度网盘最近svip超级会员到期了,续费要¥199元,对于一个打工人的我来说有点儿贵.作为技术人的一员,我就来发挥发挥自己的长处,来搭建一个私人 ...
- p2p-tunnel 打洞内网穿透系列(三)TCP转发访问内网web服务
系列文章 p2p-tunnel 打洞内网穿透系列(一)客户端配置及打洞 p2p-tunnel 打洞内网穿透系列(二)TCP转发访问远程共享文件夹 p2p-tunnel 打洞内网穿透系列(三)TCP转发 ...
- 一个网友写的栈,问为啥不能迭代。具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网
一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器-七七巴巴黄页网 一个网友写的栈,问为啥不能迭代.具有__iter__ 和next方法的对象叫迭代器 python视频 ...
- Docker+Nextcloud快速部署个人网盘
各位大佬好,,,萌新顾北清又回来更新了,今天要快速部署一个人网盘. 有多快呢,,,5分钟吧,因为我们使用Docker部署. Docker基础可以看看我之前的博文.(点这里点这里) 那么,,,开始吧. ...
随机推荐
- djang中orm使用iterator()
当查询结果有很多对象时,QuerySet的缓存行为会导致使用大量内存.如果你需要对查询结果进行好几次循环,这种缓存是有意义的,但是对于 queryset 只循环一次的情况,缓存就没什么意义了.在这种情 ...
- 李宏毅2022机器学习HW4 Speaker Identification上(Dataset &Self-Attention)
Homework4 Dataset介绍及处理 Dataset introduction 训练数据集metadata.json包括speakers和n_mels,前者表示每个speaker所包含的多条语 ...
- Netty笔记(2) - 基本实现与异步模型
示例内容: 服务端监听6668端口 , 客户端连接 并发送信息给服务端 ,服务端收到信息打印 并返回信息给客户端 服务端代码: public class NettyServer { public st ...
- Java // 使用二维数组打印 10 行杨辉三角
1 // 使用二维数组打印 10 行杨辉三角 2 public static void main(String[] args) 3 { 4 //1.声明 并初始化二维数组 5 int[][]yangh ...
- C++ //常用算法 adjacent_find //查找相邻的重复元素
1 //常用算法 adjacent_find 2 //查找相邻的重复元素 3 #include<iostream> 4 #include<string> 5 #include& ...
- 【规范】看看人家Git提交描述,那叫一个规矩
前言 缘由 没想到玩了多年git,竟然还有提交描述规范 事情起因: 在工作迭代过程中,偶然发现同组小帅哥Git提交描述总是和自己的不大一样,秉承好奇至上的我特意去研究了下.竟然发现提交了这么多年的Gi ...
- 面试官问我会ES么,我说不会,抓紧学起【ES(一)聚合分析篇】
ES聚合分析 1.metric(指标)聚合 1.1 单值分析 min 求指定字段的最小值 # 求价格的最小值 { "size":0, "aggs":{ &quo ...
- Spring整合mybatis使用xml配置事务
自己准备开始教授Java相关的技术,Spring框架是必须让学生学习的框架之一.里面有一个事务相关的 配置,以前刚学习Spring框架的时候有接触过,只是过了很多年,很多东西都已经淡忘.再来回忆一下 ...
- [VueJsDev] 目录列表
[VueJsDev] 目录列表 云服务器域名就一年,gitee上有不给发布,没办法 https://www.vuejsdev.com/ 还是迁移到博客园吧. 文章大部分是2022年9月份左右写的. 已 ...
- 【数据结构】C语言实现动态扩容数组
// resizable array /* Think about a set of functions that provide a mechanism of resizable array of ...