重要提醒:OneDrive功能将于2024.6.30进行移除处理,如果你正在使用本项目,请尽快完成OneDrive迁移到alist或其他网盘挂载程序
个人博客站项目源码,高性能高安全性低占用的博客系统,这也许是我写过的性能最高的web项目了。仅3MB的代码量! 目前日均处理请求数80-600w次,同时在线活跃用户数60-600人,数据量累计已达到数百万条,数据库+Redis+网站主程序同时运行在一台4核8GB的机器上,浏览器页面请求秒级响应,CPU平均使用率控制在10%左右,内存占用控制在400MB左右。
测试站点1:https://masuit.org,测试站点2:https://masuit.com,测试站点3:https://ldqk.xyz
一旦使用本开源项目以及引用了本项目或包含本项目代码的公司因为违反劳动法(包括但不限定非法裁员、超时用工、雇佣童工等)在任何法律诉讼中败诉的,一经发现,本项目作者有权利追讨本项目的使用费(公司工商注册信息认缴金额的2-5倍作为本项目的授权费),或者直接不允许使用任何包含本项目的源代码!任何性质的外包公司
或996公司
需要使用本类库,请联系作者进行商业授权!其他企业或个人可随意使用不受限。996那叫用人,也是废人。8小时工作制才可以让你有时间自我提升,将来有竞争力。反对996,人人有责!
目前网站前端页面的代码比较零乱,到处都是,大家想吐槽的尽管吐槽吧,也想找个人帮忙设计下整体的前端页面,有兴趣愿意贡献代码的的小伙伴,欢迎Pull Request吧!😂😂
.NET8
ASP.NET Core MVC
Blazor
Entity Framework Core
Masuit.Tools
Masuit.LuceneEFCore.SearchEngine
Hangfire
操作系统:Windows 11 23h2
IDE:Visual Studio 2022 v17.8
数据库:PostgreSQL 16.x
Redis:redis-server-windows 7.x
运行时:必须是.NET 8
操作系统:Windows Server 2019
数据库:PostgreSQL 16.x
Redis:redis-server-windows 7.x
运行时:.NET 8
服务器配置:4核+8GB+6Gbps
承载流量:单日请求量平均600w左右,单日带宽1TB左右
请勿使用阿里云、百度云等活动超卖机运行本程序,否则卡出翔!!!
如何判断服务器商是否有超卖:给你的服务器跑个分,如果跑分接近于网络上该处理器公布的分数,则不是超卖的机器,计算公式:总分/核心数进行比较,由于是虚拟机,如果单独比较单核跑分,没有参考意义
最低配置 | 推荐配置 | 豪华配置 | 至尊配置 | |
---|---|---|---|---|
CPU | 1核 | 2核 | 2核 | 4核 |
内存 | 1GB | 2GB | 4GB | 8GB |
带宽 | 1Mbps | 1Mbps | 5Mbps | 1000Mbps+ |
数据库 | pgsql 9 | pgsql 14 | pgsql 15+ | pgsql 16+ |
缓存组件 | Redis 3.2+ | Redis 5.0+ | Redis 5.0+ | Redis 7.0+ |
备注 | 玩玩而已 | 几个人同时访问 | 几百个人同时访问,单日请求量600w以下 | 单日请求量600w以上 |
可直接在线实时监控服务器的运行状态,包括CPU、网络带宽、磁盘使用率、内存占用等情况,百分位统计和图表统计,可记录最近一天的服务器健康状态,通过websocket进行数据的推送,仅支持Windows,且需要Windows安装最新的更新。
对前台用户提交的留言和评论进行审核,当前台用户提交的内容可能包含有敏感词时,会进入人工审核,审核成功才会在前台页中展示。
站内消息包含评论、留言、投稿、文章合并等通知。
对网站的公告进行增删查改管理。支持定时上下架发布。
一些通用的页面管理,可自由灵活的创建静态页面。
主动式的广告投放管理,支持竞价排名,支持在banner、边栏、页内、列表内的广告展示,竞价或权重的高低决定广告出现的概率。支持按地区进行投放。
对网站打赏进行增删查改操作,自动掩码。
当前台用户每Session周期内的关键词搜索,不重复的关键词将会被记录,用于热词统计,仅记录最近一个月内的所有搜索关键词,用于统计当月、7天以及当天的搜索热词。
hangfire的可视化管理页面
服务器文件的在线管理,支持浏览、预览、压缩、解压缩、创建文件夹、上传、下载、打包下载等文件的基本操作。
基于YukiDrive二次开发的内嵌网盘应用。
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、中间件、拦截器等;
Infrastructure:数据访问基础设施,包含Repository和Services,相当于老项目的DAL和BLL;
Migrations:数据库CodeFirst模式的迁移文件;
Models:存放一些实体类或DTO;
Views:razor视图
wwwroot:项目的所有静态资源;
依赖注入容器:.NET Core自带的+Autofac,autofac主要负责批量注入和属性注入;
实体映射框架:automapper 9.0;
缓存框架:CacheManager统一管理网站的热数据,如Session、内存缓存,EFCoreSecondLevelCacheInterceptor负责管理EF Core的二级缓存;
定时任务:hangfire统一管理定时任务,包含友链回链检查、文章定时发布、访客统计、搜索热词统计、Lucene库刷新等任务;
Websocket:Blazor进行流推送实现服务器硬件健康状态的实时监控;
硬件检测:Masuit.Tools封装的硬件检测功能;
全文检索:Masuit.LuceneEFCore.SearchEngine基于Lucene.Net 4.8实现的全文检索中间件;
中文分词:结巴分词结合本地词库实现中文分词;
断点下载:Masuit.Tools封装的断点续传功能;
Redis:CSRedis负责Redis的读写操作;
文件压缩:Masuit.Tools封装的zip文件压缩功能;
Html字符串操作:htmldiff.net-core实现文章版本的内容对比,HtmlAgilityPack实现html字符串的“DOM”操作,主要是用于提取img标签,HtmlSanitizer实现表单的html代码的仿XSS处理;
图床:支持多个图床的上传:gitee、github、gitlab;
拦截器:授权拦截器、请求拦截器负责网站全局流量的拦截和清洗、防火墙拦截器负责拦截网站自带防火墙规则的请求流量、异常拦截器、url重定向重写拦截器,主要用于将http的请求重定向到https;
请求IP来源检查:maxmind+IP2Region+本地数据库实现请求IP的来源检查;
RSS:WilderMinds.RssSyndication实现网站的RSS源;
EF扩展功能:zzzproject相关nuget包
Word文档转换:OpenXml实现浏览器端上传Word文档转换为html字符串。
在线文件管理:angular-filemanager+文件管理代码实现服务器文件的在线管理
基于bootstrap3布局
ueditor+layedit富文本编辑器
notie提示栏+sweetyalert弹窗+layui组件
angularjs
以Windows系统为例,Linux系统请自行折腾。
编译需要将Masuit.Tools项目和Masuit.LuceneEFCore.SearchEngine项目也一起clone下来,和本项目平级目录存放,才能正常编译,否则,将Masuit.Tools项目和Masuit.LuceneEFCore.SearchEngine项目移除,通过nuget安装也是可以的。
前往Release下载最新的压缩包解压即可。
创建数据库,名称随意,如:myblogs,然后前往Release或https://github.com/ldqk/Masuit.MyBlogs/tree/master/database/mysql下载最新的数据库文件,还原到新建的数据库。
如果没有你目标数据库类型的还原文件,你可以先还原到mysql或pgsql中,然后使用Full Convert转换成你需要的目标数据库类型即可。
主要需要配置的是以下内容,其他配置均为可选项,不配置则表示不启用;
同时,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”。
其他配置请参考appsettings.json的注释按需配置即可。
配置好环境和配置文件后,可直接通过dotnet Masuit.MyBlogs.Core.dll命令或直接双击Masuit.MyBlogs.Core.exe运行,也可以通过nssm挂在为Windows服务运行,或者你也可以尝试在Linux下部署。
IIS:部署时必须将应用程序池的标识设置为LocalSystem,否则无法监控服务器硬件,同时需要安装.NET Core Hosting运行时环境,IIS程序池改为无托管代码。
docker/Linux:自行爬文。
请联系:admin@masuit.com
https://127.0.0.1:5001/dashboard
若密码不对,可在debug模式下进入后台【用户管理】下重置密码
基于EntityFrameworkCore和Lucene.NET实现的全文检索搜索引擎:Masuit.LuceneEFCore.SearchEngine
.NET万能框架工具库:Masuit.Tools
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型