StarBlog和Masuit.MyBlogs博客程序学习使用日记(一)
最近买了个简单的服务器,想着搞点花活,就去找了找网上的开源代码,感谢大佬的开源库:(https://gitee.com/ysgdaydayup/DotNetGuide)
在上面有列开源的博客框架,我是下了两个:一个StarBlog,一个:Masuit.MyBlogs,两个都算是在本地上跑起来了,其中Masuit.MyBlogs已经在服务器上运行起来了,不过还有很多报错的,这两套源码前前后后折腾了一个来星期(上班抽空搞的,下班到家要陪小孩,也主要是本人技术太菜)。
从现在的使用情况来看,StarBlog更美观,但更适合个人使用,数据库使用的sqllite,算是没有持久化保存数据的。Masuit.MyBlogs相对更商业化,博客相关的评论,分类,广告之类的功能更加完善。
好了吹水的暂时就先说这么多吧,现在先聊聊在使用StarBlog上遇到的一些问题。
StarBlog是有两个代码仓库的,一个是StarBlog一个是StarBlogAdmin,在对应大佬的开源主页上都能找到,因为分两个仓库一开始我以为只是一个空壳子框架,导致放弃。
开源库里也有说明,不过这里还是在说一遍:前端依赖的包里包含bootstrap5-treeview,所以在install包源的时候最好先排除bootstrap5-treeview之后先
install i -g bower
不然下载包源的时候会一直报错,导致异常,这个折腾了我差不多一个多小时,还是在看了3遍开源库之后才发现问题
3.安装gulp-cli之后需要重新打开项目不然无法正确显示,我对vue的各种配置一直都很头痛,导致我对前端一直很无感,这次也是,因为安装gulp-cli之后在命令行里面使用gulp move无效之后才转头去下载Masuit.MyBlogs。
4.按仓库文档说的程序初始化千万要小心,记住要设自己常用的账号密码,设置完之后要保存起来。我昨天重新运行这个项目时因为忘记账号密码,也是折腾了很久。
5.当StarBlog程序运行起来之后,会发现只有博客程序,管理平台在另一个项目StarBlogAdmin,然后运行StarBlogAdmin之后会发现,登录使用的账号密码又是由StarBlog初始化时使用的,但是登录上去之后,对应的功能还是挺完善的。
总的来说,现在碰到的问题主要是前端配置的问题,.net core相关的代码基本上都是没有问题,也可能是我还没有开始动手修改源码。等后续有改动在继续更新文章吧。当然我现在使用的是Masuit.MyBlogs所以暂时这套博客框架暂时不会动了。
现在开始说说Masuit.MyBlogs运行时候遇到的坑吧。
1.项目依赖问题,开源库说的nuget安装Masuit.LuceneEFCore.SearchEngine,但是实际安装是要安装Masuit.LuceneEFCore.SearchEngine_int。然后默认库使用的是pgsql,不过我没用过,而且服务器安装的是mysql所以也就想着自己转换成mysql版本的程序,这里噩梦来了,由于我打开程序默认是.net9版本的,而我安装的Pomelo.EntityFrameworkCore.MySql稳定版是8.0.3,导致efcore一直提示报错,在使用ai查询多次之后才发现要在nuget选择包括预览版,下载Pomelo.EntityFrameworkCore.MySql 9.0.0-preview.3版本,但是由于这个版本是预预览版本,导致有时候运行代码会提示efcore转换linq失败。这个我得看后面什么时候把代码的.NET版本降回8.0看看会不会有问题。
2.当我把程序改成mysql之后才发现,没有对应的数据库脚本,在开源库中只找到了pgsql的脚本,之后就是想办法把pgsql的脚本转换为mysql的脚本。如果有人需要这个脚本的可以联系我,我看什么时候分享出来。
3.这个项目自带了url重写还强制使用https,但是我这个只是个人使用也没有买域名,所以为了去除掉这个重写能让他在http使用也是折腾了一会。下面讲一下要怎么操作:
- 首先appsettings.json里面的UseRewriter先改成WWW.虽然不知道这一步有没有用,但是还是改了。
- 在把PrepareStartup.cs里面SetupHttpsRedirection方法里面的代码全部注释掉。
- 在Program.cs里面把对应的代码改成下面的样子,对应的端口号可以改成自己的:
await Host.CreateDefaultBuilder(args).ConfigureAppConfiguration(builder => builder.AddJsonFile("appsettings.json", true, true)).UseServiceProviderFactory(new AutofacServiceProviderFactory()).ConfigureWebHostDefaults(hostBuilder => hostBuilder.UseQuic().UseKestrel(opt =>
{
var config = opt.ApplicationServices.GetService<IConfiguration>();
var port = config["Port"] ?? "5000";
//var sslport = config["Https:Port"] ?? "5001";
//opt.ListenAnyIP(port.ToInt32(), options => options.Protocols = HttpProtocols.Http1AndHttp2AndHttp3);
opt.ListenAnyIP(port.ToInt32());
//if (config["Https:Enabled"].ToBoolean())
//{
// opt.ListenAnyIP(sslport.ToInt32(), s =>
// {
// if (Environment.OSVersion is { Platform: PlatformID.Win32NT, Version.Major: >= 10 })
// {
// s.Protocols = HttpProtocols.Http1AndHttp2AndHttp3;
// }
// s.UseHttps(AppContext.BaseDirectory + config["Https:CertPath"], config["Https:CertPassword"]);
// });
//}
//opt.Limits.MaxRequestBodySize = null;
Console.WriteLine($"应用程序监听端口:http:{port}");//,https:{sslport}
}).UseStartup<Startup>()).Build().RunAsync();
按上面三步操作之后就可以按自己的配置直接使用域名跑项目了。但是运行起来还是会有点问题的:
在本地由于默认登录用户,导致我项目发布到服务器上之后才发现前面Pomelo.EntityFrameworkCore.MySql预览版的问题,之后在本地找到BaseController.cs在OnActionExecutionAsync方法里面将对应的默认登录的代码块注释掉就能正常登录了
//#if DEBUG
// if (HttpContext.Connection.RemoteIpAddress.IsPrivateIP())
// {
// user = UserInfoService.GetByUsername("masuit").ToDto();
// context.HttpContext.Session.Set(SessionKey.UserInfo, user);
// }
//#endif
然后在本地调试的时候发现是在首页加载时有做区域查看限制的条件判断在BaseController.cs的PostBaseWhere方法里面,现在暂时不考虑其他人使用就把对应的代码块先注释掉:
//.And(p => p.LimitMode == null || p.LimitMode == RegionLimitMode.All ? true :
//p.LimitMode == RegionLimitMode.AllowRegion ? Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase) :
//p.LimitMode == RegionLimitMode.ForbidRegion ? !Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase) :
//p.LimitMode == RegionLimitMode.AllowRegionExceptForbidRegion ? Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase)
//&& !Regex.IsMatch(location, p.ExceptRegions, RegexOptions.IgnoreCase) : !Regex.IsMatch(location, p.Regions, RegexOptions.IgnoreCase)
//|| Regex.IsMatch(location, p.ExceptRegions, RegexOptions.IgnoreCase))
return where;
代码运行时经常会提示:找不到页面;图片加载失败,需替换成自己的图片源;在管理平台部分管理页面无法打开;
现在暂时只考虑到这些问题,后续有办法解决在重新写一篇日记来解决吧。
本文仅供学习参考,如有侵权,请联系删除。
StarBlog和Masuit.MyBlogs博客程序学习使用日记(一)的更多相关文章
- javascript - 浏览TOM大叔博客的学习笔记
part1 ---------------------------------------------------------------------------------------------- ...
- .NET作品集:linux下的博客程序
博客程序架构 本博客程序是博主11年的时候参考loachs小泥鳅博客内核开发的.net跨平台博客cms,距今已有6年多了,个人博客网站一直在用,虽然没有wordpress那么强大,但是当时在深究.ne ...
- docker简单入门之使用docker容器部署简单的java web开源项目jpress博客程序
一.在centos7.3上安装docker 前置条件 x86_64-bit 系统 kernel 3.10+ .检查内核版本,返回的值大于3.10即可 [root@node1 ~]# uname -r ...
- js便签笔记(12)——浏览TOM大叔博客的学习笔记 part2
1. 前言 昨天写了<js便签笔记(11)——浏览TOM大叔博客的学习笔记 part1>,简单记录了几个问题.part1的重点还是在于最后那个循环创建函数的问题,也就是多个子函数公用一个闭 ...
- 【分分钟内搭建一个带用户系统的博客程序(一)用户系统】asp.net core的Identity真香,EF真香!
不用不知道,一用香到爆. 老哥是个屌丝前端,但也想写点web应用耍一耍.之前弄过了NodeJs,也弄过JAVA,最近由于写游戏的原因用C#,索性上手一波asp.net core. 这篇博客记录的是,如 ...
- 使用 vue + thinkjs 开发博客程序记录
一入冬懒癌发作,给自己找点事干.之前博客程序写过几次,php 的写过两次,nodejs 用 ThinkJS 写过,随着 ThinkJS 版本从1.x 升级到 2.x 之前的博客程序也做过升级.但是因为 ...
- flask实战-个人博客-程序骨架、创建数据库模型、临接列表关系 --
编写程序骨架 personalBlog的功能主要分为三部分:博客前台.用户认证.博客后台,其中包含的功能点如下图所示: 数据库 personalBlog一共需要使用四张表,分别存储管理员(Admin) ...
- hexo博客的学习笔记
这篇文章主要的作用是作为 .md文件打开,内部的格式为一个初学者对hexo以及markdown语法运用的笔记 1.Hexo的写文格式 最开始为文章的属性部分,以三横杠-开始,-结束.里面记录了文章的标 ...
- 网络搬砖是件苦力活 CMS推荐GHOS博客程序
搬砖不是技术活,而是苦力(bi)活,富有技术含量的苦力活说不定就是一门可以持续的生意. 我们不生产内容,我们只是互联网的内容搬运工,这是大部分不具备原创能力个人站长的心声.虽然原创能力不够,但是服务目 ...
- 在技术胖博客上学习ES6遇到的坑和想法
第一节:ES6的开发环境搭建 坑1:全局安装babel-cli已经不被官方推荐,改为局部安装(cnpm install babel-cli --save-dev): 坑2:babel src/inde ...
随机推荐
- DBeaver出现“Public Key Retrieval is not allowed”错误的解决办法
1.问题描述 我们在使用DBeaver连接MySql的时候,可能会出现"Public Key Retrieval is not allowed"的错误提示,如下图所示: 2.解决办 ...
- RabbitMQ(七)——主题模式
RabbitMQ系列 RabbitMQ(一)--简介 RabbitMQ(二)--模式类型 RabbitMQ(三)--简单模式 RabbitMQ(四)--工作队列模式 RabbitMQ(五)--发布订阅 ...
- 利用deepseek进行分析某b站是否有漏洞
以下是对 nmap -sV -O -p 80,443 --script=http-title bxxxxxxx.com 扫描结果的逐项解析和技术总结: 1. 基本信息 目标IP:139.159.241 ...
- [BZOJ2194] 快速傅立叶之二 题解
看名字,然后准备转化为多项式乘法. \[c_k=\sum_{i=0}^{n-k-1}a_{i+k}b_i \] 将 \(a\) 反转,得: \[c_k=\sum_{i=0}^{n-k-1}a_{n-i ...
- [POI2014] HOT-Hotels 加强版题解
好好好,太好了这题,太好了. 首先有一点是很明显的: 对于一个合法的答案 \((i,j,k)\),必有一点 \(p\),使 \(dis(i,p)=dis(j,p)=dis(k,p)\) 且三点到 \( ...
- element vue 动态单选_VUE 动态构建混合数据Treeselect选择树,同时解决巨树问题
今天在项目中需要通过行政区域选择,然后选择该行政区域下面的景区,也就是要构建行政区划.景区两表数据表的树.全国的行政区域到县已经3500多了,再加上景区会有几万个点,这棵选择树不论是在后台还是在前台构 ...
- 事务中无法切换数据源?DataSourceSwitchInvoker:轻松实现多数据源切换执行工具类
背景: 在有标注为@Transactional的类或公共方法中(传播特性,如:NOT_SUPPORTED.SUPPORTS.REQUIRED[默认值].REQUIRES_NEW)执行数据源切换可能不成 ...
- 【ABAQUS 二次开发笔记】输出单元刚度矩阵
目录 相关的关键字 必须的参数 可选参数 使用关键字 输出到mtx文件 输出到dat文件 参考资料 相关的关键字 *ELEMENT MATRIX OUTPUT 此keyword用于将元素刚度矩阵和质量 ...
- Qt解析JSON
Qt解析JSON 文章目录 Qt解析JSON QT 解析json的三件套,QJsonDocument.QJsonObject.QJsonArray.QJsonValue JSON主要格式 QT的JSO ...
- linux shell用expect实现在scp时自动输入密码
文章目录 linux shell用expect自动输入密码 按行读取文件 expect 其他 linux shell用expect自动输入密码 最近有东西需要部署到很多服务器上去,一个服务器一个服务器 ...