angularjs sill 创建项目_开源项目——博客项目MyBlogs.Core,基于.NET 5

个人博客站项目源码,高性能低占用的博客系统,这也许是我个人目前写过的性能最高的web项目了 。目前日均处理请求数80-120w次,同时在线活跃用户数30-100人,数据量累计已达到100多万条,数据库+Redis+网站主程序同时运行在一台2核2GB的机器上,浏览器页面请求秒级响应,CPU平均使用率控制在20%左右。

e5e2fd6f74b42adfd6fbfbe2edee0080.png

演示站点

首页_懒得勤快的博客_互联网分享精神​masuit.com
523872d90bf2d552c8f331c9799fcb74.png

不依赖于具体的数据库,已测试SQL Server和mysql正常,其他数据库还请自测;也不依赖于数据库的开发模式,code First、DB First均可自由切换。部分功能在Linux下可能无法使用,须待测,比如:硬件监测。

github

https://github.com/ldqk/Masuit.MyBlogs​github.com

老项目已经移动到分支net461

开发环境

操作系统:Windows 10 2009
IDE:Visual Studio 2019 v16.8
数据库:MySQL 8.0
Redis:redis-server-windows 3.2

当前运行环境

操作系统:Windows Server 2008 R2
数据库:MySQL 8.0
Redis:redis-server-windows 3.2
运行时:.NET 5
服务器配置:2核+4GB+1M

硬件要求

最低配置推荐配置
CPU1核2核
内存1GB2GB
带宽1Mbps2Mbps
数据库SQL Server 2008/MySQL 5SQL Server 2012/MySQL 8

主要功能

服务器性能监控

可直接在线实时监控服务器的运行状态,包括CPU、网络带宽、磁盘使用率、内存占用等情况,可记录最近一天的服务器健康状态,通过websocket进行数据的推送,仅支持Windows,且需要Windows安装最新的更新。

文章管理

包含文章审核、文章合并、文章列表的增删查改、分类管理、专题管理;

服务器性能监控

可直接在线实时监控服务器的运行状态,包括CPU、网络带宽、磁盘使用率、内存占用等情况,可记录最近一天的服务器健康状态,通过websocket进行数据的推送,仅支持Windows,且需要Windows安装最新的更新。

文章管理

包含文章审核、文章合并、文章列表的增删查改、分类管理、专题管理;

文章审核:当用户在前台页进行投稿后,会进入审核状态,审核通过后,才会在前台页的文章列表中展示出来。

文章合并:当用户在前台页进行了文章的编辑后,会创建出文章的合并请求,当后台管理进行相应的合并操作后,前台用户的修改才会正式生效,可以直接合并、编辑并合并和拒绝合并,拒绝时,修改人会收到相应的邮件通知。

文章操作:可对文章进行修改、新增、置顶、临时删除(下架)、还原、永久删除、禁止评论等操作,编辑后的文章会生成历史版本。支持上传word文档自动转换, 文章支持按地区进行投放,支持5种投放模式。

分类管理:对文章的分类进行增删查改和文章的移动等操作,与文章的关系:一对多。

专题管理:对文章的专题进行管理,与文章的关系:多对多。

快速分享:首页快速分享栏目的管理。

评论和留言管理

对前台用户提交的留言和评论进行审核,当前台用户提交的内容可能包含有敏感词时,会进入人工审核,审核成功才会在前台页中展示。

消息通知

站内消息包含评论、留言、投稿、文章合并等邮件通知。

邮件支持smtp和http模式,http模式的已支持mailgun服务。

公告管理

对网站的公告进行增删查改管理。

杂项页管理

一些通用的页面管理,可自由灵活的创建静态页面。

系统设置

包含系统的全局设置、防火墙管理、网站运行日志记录、友链管理、邮件模板的管理。

全局设置:网站的一些基本配置和SEO相关操作等;

防火墙

对网站的所有请求进行全局流量的拦截,让规则内的请求阻止掉,支持黑名单、白名单、IP地址段(支持IPv4和IPv6)、国家或地区、关键词审查、ASN、运营商等规则;

拦截记录支持提交到cloudflare等第三方cdn服务商;

防火墙审计可一键加黑白名单或提交到上层防火墙服务;

防火墙记录了详细的日志,便于查看审计。

菜单管理

菜单支持拖拽配置,树状无级菜单,3种子菜单类型。

广告管理

主动式的广告投放管理,支持竞价排名,支持在banner、边栏、页内、列表内的广告展示,竞价或权重的高低决定广告出现的概率。

赞助管理

对网站打赏进行增删查改操作,自动掩码。

搜索统计

当前台用户每Session周期内的关键词搜索,不重复的关键词将会被记录,用于热词统计,仅记录最近一个月内的所有搜索关键词,用于统计当月、7天以及当天的搜索热词。

任务管理

hangfire的可视化管理页面

文件管理

服务器文件的在线管理,支持浏览、预览、压缩、解压缩、创建文件夹、上传、下载、打包下载等文件的基本操作。

站内搜索

站内搜索支持全文检索,基于自定义词库。

友情链接

友情链接支持自助上链,回链检测,自动排名等。

全局功能

网站全局时间将根据访客所在时区自动进行转换;

图片上传支持自定义水印文字;

图片上传支持本地存储、gitlab仓库、阿里云oss等;

前台数据带缓存;

对于需要前台展示的用户数据,将进行脱敏处理后进行展示;

支持文章,分类,评论,单文章的rss订阅。

项目架构

项目采用单体架构,方便部署和配置,传统的MVC模式,http://ASP.NET Core MVC+EF Core的简单架构。
Controller→Service→Repository→DbContext

0fa430124b9f2898da08a43c66843220.png

现在只有这么一个项目了,额外的引用了Masuit.Tools.Core这个项目作为工具库,因为.NET Core无处不在的依赖注入,使得数据库和ORM之间没有了强依赖的关系,这使得更换数据库的成本相对较低,所以所有的代码都全部放在了一起。

文件夹定义:

App_Data:存放网站的一些常规数据,以文本的形式存在,这类数据不需要频繁更新的。

┠─cert文件夹:存放https证书

┠─ban.txt:敏感词库

┠─CustomKeywords.txt:搜索分词词库

┠─denyip.txt:IP地址黑名单

┠─DenyIPRange.txt:IP地址段黑名单

┠─GeoLite2-City.mmdb:MaxMind地址库

┠─ip2region.db:ip2region地址库

┠─mod.txt:审查词库

┠─whitelist.txt:IP地址白名单

Common:之前老项目的Common项目;

Configs:项目的一些配置对象

Controllers:控制器

Extensions:一些扩展类或一些项目的扩展功能,比如hangfire、ueditor、中间件、拦截器等;

Hubs:SignalR推送服务类;

Infrastructure:数据访问基础设施,包含Repository和Services,相当于老项目的DAL和BLL;

Migrations:数据库CodeFirst模式的迁移文件;

Models:老项目的Models项目,存放一些实体类或DTO;

Views:razor视图

wwwroot:项目的所有静态资源;

核心功能点技术实现

后端技术栈:

依赖注入容器:.NET Core自带的+Autofac,autofac主要负责批量注入和属性注入;
实体映射框架:automapper 9.0;
缓存框架:CacheManager统一管理网站的热数据,如Session、内存缓存,EFSecondLevelCache.Core负责管理EF Core的二级缓存;
定时任务:hangfire统一管理定时任务,包含友链回链检查、文章定时发布、访客统计、搜索热词统计、Lucene库刷新等任务;
Websocket:SignalR进行流推送实现服务器硬件健康状态的实时监控;
硬件检测:Masuit.Tools封装的硬件检测功能;
全文检索:Masuit.LuceneEFCore.SearchEngine基于http://Lucene.Net 4.8实现的全文检索中间件;
中文分词:结巴分词结合本地词库实现中文分词;
断点下载:Masuit.Tools封装的断点续传功能;
Redis:CSRedis负责Redis的读写操作;
文件压缩:Masuit.Tools封装的zip文件压缩功能;
Html字符串操作:htmldiff.net-core实现文章版本的内容对比,HtmlAgilityPack实现html字符串的“DOM”操作,主要是用于提取img标签,HtmlSanitizer实现表单的html代码的仿XSS处理;
图床:支持多个图床的上传:gitee、gitlab、阿里云OSS、sm.ms图床、人民网图床;
拦截器:授权拦截器、请求拦截器负责网站全局流量的拦截和清洗、防火墙拦截器负责拦截网站自带防火墙规则的请求流量、异常拦截器、url重定向重写拦截器,主要用于将http的请求重定向到https;
请求IP来源检查:IP2Region+本地数据库实现请求IP的来源检查;
RSS:WilderMinds.RssSyndication实现网站的RSS源;
EF扩展功能:zzzproject相关nuget包
Word文档转换:OpenXml实现浏览器端上传Word文档转换为html字符串。
在线文件管理:angular-filemanager+文件管理代码实现服务器文件的在线管理

前端技术栈

前台页面:

基于bootstrap3布局
ueditor+layedit富文本编辑器
notie提示栏+sweetyalert弹窗+layui组件
angularjs

后台管理页:

angularjs单一页面应用程序
material布局风格
highchart+echart图表组件
ng-table表格插件
material风格angular-filemanager文件管理器

性能和安全相关

hangfire实现分布式任务调度;
Z.EntityFramework.Plus实现数据访问层的高性能数据库批量操作;

http://Lucene.NET实现高性能站内检索;

通过url的敏感词检查过滤恶意流量;
限制客户端的请求频次;
表单的AntiForgeryToken防止恶意提交;

ip2region+MaxMind地址库实现请求来源审查;

用户信息采用端到端RSA非对称加密进行数据传输;

项目部署

编译:

编译需要将Masuit.Tools项目和Masuit.LuceneEFCore.SearchEngine项目也一起clone下来,和本项目平级目录存放,才能正常编译,否则,将Masuit.Tools项目和Masuit.LuceneEFCore.SearchEngine项目移除,通过nuget安装也是可以的。

8ea877bf696547f83c6d7ebfdd938ab7.png

配置文件:

主要需要配置的是https证书、数据库连接字符、redis、BaiduAK以及图床配置;

cacbb3ef67540941322a38204ca363c9.png

同时,BaiduAK参与了数据库的加密,如果你没有BaiduAK,自行到百度地图开放平台申请,免费的。

如果你使用了CDN,需要配置TrueClientIPHeader选项为真实IP请求转发头,如cloudflare的叫CF-Connecting-IP。

如果Redis不在本机,需要在配置文件中的Redis节下配置,固定为Redis,值的格式:127.0.0.1:6379,allowadmin=true,若未正确配置,将按默认值“127.0.0.1:6379,allowadmin=true,abortConnect=false”。

IIS:部署时必须将应用程序池的标识设置为LocalSystem,否则无法监控服务器硬件,同时需要安装.NET Core Hosting运行时环境,IIS程序池改为无托管代码。

81a8f3d0bb1037a6f52d2ea59a1a1a0b.png

独立运行:配置好环境和配置文件后,可直接通过dotnet Masuit.MyBlogs.Core.dll --port 80 --sslport 443命令运行。

docker:自行爬文。

运行参数:

网站默认会以5000和5001端口运行,如果需要指定端口,需要在appsettings.json中进行配置。

a22f3525907fcca3bf8280ebc69f9a2c.png

20874c3e8060126a8259891c6413ac84.png

后台管理:

初始用户名:masuit

初始密码:123abc@#$

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

怀旧服推荐配置_【怀旧服】狂暴战P4毕业装备推荐

在怀旧服开启P4阶段之后,狂暴战玩家的输出也得到了进一步的提升。当然,狂暴战想要打出足够的伤害离不开对应的装备,现在就给大家介绍下狂暴战P4阶段的BIS装备。散件装备狂暴战在这一阶段依旧有非常不错的散件装备,个人建议玩家入手…

高斯混合模型GMM及EM迭代求解算法(含代码实现)

高斯混合模型GMM及EM迭代求解算法(含代码实现) 高斯分布与高斯混合模型 高斯分布 高斯分布大家都很熟悉了,下面是一元高斯分布的概率密度函数(Probability Density Function,PDF): P(x)N(μ,…

十个模块_专栏 | ABAQUS Part模块的十个小技巧

作者介绍星辰_北极星2012年开始从事Abaqus仿真相关工作,服务大小课题逾百项; 主要仿真领域:石油工程、岩土工程和金属加工工艺; 重点研究方向:ABAQUS GUI二次开发、固体力学、断裂以及损伤等。Abaqus有部件(Part)和装配体(Assembl…

深度学习时代的视频理解综述

深度学习时代的视频理解综述 本文为b站bryanyzhu老师四期视频理解相关论文解读的汇总图文笔记。 我们先精读深度学习时代视频理解领域最为重要的两篇论文:双流网络和 I3D。它们分别是领域内两大类方法双流(利用光流)网络和 3D CNN 网络的代…

typec扩展坞hdmi没反应_typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook6元优惠券券后价26.8元...

★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook,6元拼多多优惠券★券后价26.8元★★★typec扩展坞转hdmi/vga多功能网口usb转换器苹果华为电脑matebook¥26.8元¥32.8元已拼5097件点击抢购猜你喜欢[速发]喵喵机P1热敏打印机手…

NLP任务概览

NLP任务概览 本文为台湾大学李宏毅老师视频课程笔记。本课程介绍了 (2020年)NLP 领域常见的 17 种任务。本文只会从输入输出的角度概览多种 NLP 任务,并简介它们的常见做法,并不会细致地介绍每个任务模型的具体细节。 两种模式与…

大物实验总结模板_期中总结大会amp;期末动员大会

在逐渐降温的双创周麦包坊的期中总结暨期末动员大会来啦在学长团和小麦包的分享下希望大家重新启航奋斗期末板块一学长团经验分享面对本学期十二门科目,作为过来人的前辈们给出很多对本学期各科目的针对性建议,可谓是干货满满,快来瞧瞧吧&…

PTMs:NLP预训练模型的全面总结

PTMs:NLP预训练模型的全面总结 转自:https://zhuanlan.zhihu.com/p/115014536 预训练模型(Pre-trained Models,PTMs) 的出现将NLP带入了一个全新时代。2020年3月18日,邱锡鹏老师发表了关于NLP预训练模型的综述《Pre-trained Models for Natur…

python中提取几列_Python一键提取PDF中的表格到Excel(实例50)

从PDF文件获取表格中的数据,也是日常办公容易涉及到的一项工作。一个一个复制吧,效率确实太低了。用Python从PDF文档中提取表格数据,并写入Excel文件,灰常灰常高效。上市公司的年报往往包含几百张表格,用它作为例子再合…

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解

详解最大似然估计(MLE)、最大后验概率估计(MAP),以及贝叶斯公式的理解 声明:本文为原创文章,发表于nebulaf91的csdn博客。欢迎转载,但请务必保留本信息,注明文章出处。 本…

重新打开_iPhone 应用停止响应或无法打开的解决办法

如果当您在 iPhone 上使用某个重要应用时,遇到应用停止响应、意外退出或无法打开的问题,请参考如下步骤尝试解决:1.强制退出应用:在 iPhone 后台强制关闭该应用之后,再次重新打开看看。2.重启您的设备,然后…

机器学习理论——优雅的模型:变分自编码器(VAE)

机器学习理论——优雅的模型:变分自编码器(VAE) 转自:机器学习理论—优雅的模型(一):变分自编码器(VAE) 另外直观理解 VAE, 推荐 台大李宏毅老师的课程&#…

基于流的(Flow-based)生成模型简介

基于流的(Flow-based)生成模型简介 生成任务 我们先回顾一下所谓的生成任务,究竟是做什么事情。我们认为,世界上所有的图片,是符合某种分布 pdata(x)p_{data}(x)pdata​(x) 的。当然,这个分布肯定是个极其复杂的分布。而我们有一…

iec60870-5-104通讯协议编程_三菱FX编程口通讯协议1——协议解读

三菱PLC编程口通讯协议:1、三菱PLC编程口通讯协议有四个命令,如下:2、三菱FX系列PLC地址对应表:PLC_X Group Base AddRess128;Const PLC_Y_Group Base AddRess160;M _Group Base_AddRess 256;P…

DETR精读笔记

DETR精读笔记 论文:End-to-End Object Detection with Transformers (发表于 ECCV-2020) 代码:https://github.com/facebookresearch/detr 解读视频:DETR 论文精读【论文精读】 本笔记主要基于 Yi Zhu 老师的解读 引言…

GAN网络评估指标:IS、FID、PPL

GAN网络评估指标:IS、FID、PPL 转自:IS、FID、PPL,GAN网络评估指标 另外关于GAN的评价指标,推荐李宏毅老师的视频:【機器學習2021】生成式對抗網路 (Generative Adversarial Network, GAN) (三) – 生成器效能評估與條…

降维后输入分类器分类时报错_逻辑回归解决多分类方法及其优缺点分析

众所周知,逻辑回归常用于解决二分类任务,但是在工作/学习/项目中,我们也经常要解决多分类问题。本文总结了 3 种逻辑回归解决多分类的方法,并分析了他们的优缺点。一、One-Vs-Rest假设我们要解决一个分类问题,该分类问…

PyTorch 的 Autograd

PyTorch 的 Autograd 转自:PyTorch 的 Autograd PyTorch 作为一个深度学习平台,在深度学习任务中比 NumPy 这个科学计算库强在哪里呢?我觉得一是 PyTorch 提供了自动求导机制,二是对 GPU 的支持。由此可见,自动求导 (a…

商场楼层导视牌图片_百宝图商场电子导视软件中预约产品功能简介

百宝图商场电子导视软件中预约产品功能简介 管理端,可配合百宝图商场电子导视软件配套使用 1:数据展示:图形展示总预约数/预约时间峰值/预约途径/各途径数量对比 2:数据统计:有效预约数量/无效预约数量/无效预约原因备…

Pytorch autograd.grad与autograd.backward详解

Pytorch autograd.grad与autograd.backward详解 引言 平时在写 Pytorch 训练脚本时,都是下面这种无脑按步骤走: outputs model(inputs) # 模型前向推理 optimizer.zero_grad() # 清除累积梯度 loss.backward() # 模型反向求导 optimizer.step()…