开源-laravel-react-hexo(next)主题的博客系统

在校学生课余时间用React肝出一款个人博客系统,前台+后台管理,求指点 1. 前言 之前我使用hexo搭建过个人博客。hexo很强大,渲染页面速度快,支持markdown语法,可以一键部署,还可以扩展各种插件。 但hexo搭建的是静态页面,每次更新文章,都要重新生成静态页面,再部署页面。hexo也没有后台管理,想要修改发布的文章,只能修改源代码,再重新生成页面。所以很早之前就想写一个自己的博客系统,由博客展示页面和后台管理页面构成,通过后台管理页面,可以实时更新、发布文章,非常方便。但在当时还没有能力写出这样一个系统,就一直没有去做。 后来学习了React之后,想尝试下写自己的 阅读详情

MrCoder技术栈博客

20190124开源声明

总花费大约一周时间,陆陆续续开发,laravel+react+next主题的博客系统日渐丰满,是时候分享成果了。喜欢的请star一下。系统会持续更新。

DEMO:

http://www.wrsee.com

GIT:

https://github.com/MrCoderStack/MrCoderStackBlog.git

Gitee:

https://gitee.com/MrCoderStack/MrCoderStackBlog.git

背景

博主一直使用git page + hexo搭建个人的博客,奈何,渐渐发现了问题

  • seo差的几乎没有
  • 访问速度慢的掉渣

于是本着不重复造轮子的前提下,github上看了开源的blog系统,发现很多都不符合个人的风格,审美,可能是博主用惯了hexo的主题,终下决心自己开发一套。

技术

完全重新开发是不可能的

  • 后台(顺带学习了一下react)
    参考 https://github.com/SadCreeper/laravel-react-blog 这位兄跌的开源项目,做了很多更改&优化
  • 前端
    参照hexo的next主题,开发了一套,兼容同学们自己开发多个主题

代码部署

    BLOG_THEME = next  //指定主题
    PUSH_STATE = off   //自动推送
  • php artisan migrate (建表)
  • php artisan db:seed --class=UsersTableSeeder (填充初始密码account:admin@qq.com, pass:admin)
  • php artisan storage:link
  • 配置主题支持
cd blog
vim /blog/vendor/laravel/framework/src/Illuminate/Foundation/Auth/AuthenticatesUsers.php
搜索auth.login为 env('BLOG_THEME').'.auth.login';

至此,blog已经可以访问了,后台地址为http://你的域名/mrcoderadmin/,不过搜索功能还不能使用

sphinx搜索引擎

  • 安装
yum install make gcc gcc++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
wget http://files.opstool.com/man/coreseek-4.1-beta.tar.gz
tar -xzvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta
cd mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
cd csft-4.1
sh buildconf.sh(这个地方有可能生成不了configure文件,需要修改部分文件,具体内容参考http://blog.youkuaiyun.com/jcjc918/article/details/39032689)
错误1:
解决办法:在 csft-4.1/configure.ac 文件中,查找:
AC_PROG_RANLIB 
后面加上
AM_PROG_AR 
最终格式为:AC_PROG_RANLIB AM_PROG_AR
再次执行 sh buildconf.sh 
错误2:
'automake --add-missing' can install 'ar-lib'
在命令行执行
#automake --add-missing
再次执行 sh buildconf.sh
错误3
编译的时候出现
sphinxexpr.cpp:1823:43: error: ‘ExprEval’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]
T val = ExprEval ( this->m_pArg, tMatch ); // 'this' fixes gcc braindamage
处理办法:
#vim /usr/local/src/coreseek-4.1-beta/csft-4.1/src/sphinxexpr.cpp
 1746                  T val = ExprEval ( this->m_pArg, tMatch );
 形式修改为  T val = this->ExprEval ( this->m_pArg, tMatch );
 1777                  T val = ExprEval ( this->m_pArg, tMatch );
 形式修改为  T val = this->ExprEval ( this->m_pArg, tMatch );
 1823                  T val = ExprEval ( this->m_pArg, tMatch );
 形式修改为  T val = this->ExprEval ( this->m_pArg, tMatch );
 错误4
 In file included from sphinxstd.cpp:24:0:
py_layer.h:16:27: fatal error: Python.h: No such file or directory
  #include   <Python.h>  
  这是由于缺少了python环境的devel支持包
  解决办法:yum install python-devel
)
./configure --prefix=/usr/local/coreseek --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql=/usr   (which mysql_config找到安装位置)
make && make install
  • 配置
mv  /usr/local/coreseek/etc/sphinx.conf /etc/sphinx.conf
vim sphinx.conf:
(简化版的sphinx的配置)
source main_src
{
        type                    = mysql
        sql_host                = localhost 
        sql_user                = root
        sql_pass                = 123456
        sql_db                  = blog
        sql_port                = 3306  # optional, default is 3306
        sql_query_pre           = SET NAMES utf8
        sql_query               = \
                SELECT ar.id,ar.content_html,ar.title,UNIX_TIMESTAMP(ar.created_at) as created_at, ca.name  FROM articles  ar \
                        left join cates ca on ar.cate_id = ca.id;
        sql_attr_uint           = id
        sql_attr_timestamp      = created_at
        sql_ranged_throttle     = 0
        sql_query_info          = SELECT ar.*, ca.name  FROM articles ar left join cates ca\
                        on ar.cate_id = ca.id  WHERE ar.id=$id;
}
index main
{
        source                  = main_src
        path                    = /usr/local/coreseek/var/data/articles
        docinfo                 = extern
        mlock                   = 0
        morphology              = none
        min_word_len            = 1
        charset_type            = zh_cn.utf-8
        html_strip              = 0
        charset_dictpath        = /usr/local/mmseg3/etc/
        ngram_len               = 0
}
indexer
{
        mem_limit               = 32M
}
searchd
{
        listen                  = 9312
        listen                  = 9306:mysql41
        log                     = /usr/local/coreseek/var/log/searchd.log
        query_log               = /usr/local/coreseek/var/log/query.log
        read_timeout            = 5
        client_timeout          = 300
        max_children            = 30
        pid_file                = /usr/local/coreseek/var/log/searchd.pid
        max_matches             = 1000
        seamless_rotate         = 1
        preopen_indexes         = 1
        unlink_old              = 1
        mva_updates_pool        = 1M
        max_packet_size         = 8M
        max_filters             = 256
        max_filter_values       = 4096
        max_batch_queries       = 32
        workers                 = threads # for RT to work
}
建立索引命令
/usr/local/coreseek/bin/indexer -c /etc/sphinx.conf --all --rotate
启动命令
/usr/local/coreseek/bin/searchd -c /etc/sphinx.conf
搜索命令
/usr/local/coreseek/bin/search -c /etc/sphinx.conf 中国
停止命令
/usr/local/coreseek/bin/searchd -c /etc/sphinx.conf --stop
  • 索引自动化建立
    (项目下的crontab子目录已有,根据你实际情况修改)
    建立shell脚本,主要用来执行sphinx建立索引,重启服务,同时会记录日志到该目录下的sphinx.log
cd crontab
vim indexer.sh:
killall -9 searchd 
/usr/local/coreseek/bin/indexer -c /etc/sphinx.conf --all --rotate && 
/usr/local/coreseek/bin/searchd -c /etc/sphinx.conf
time=`date "+%Y-%m-%d %H:%M:%S "`
echo "${time} sphinx restart success" >> /usr/share/nginx/html/blog/crontab/sphinx.log

然后定时任务中每3小时执行一次该脚本:

crontab -e
0 */3 * * * /usr/share/nginx/html/blog/crontab/indexer.sh
service crond restart

配置完毕,搜索功能已经可以使用

关于SEO

  • 目前支持百度

  • js被动推送
    需要别人访问后会自动把链接推给百度

  • 主动推送
    需要对项目下crontab目录下的push.sh进行编辑(域名需替换为实际的):

    time=`date "+%Y-%m-%d %H:%M:%S "`
    echo "${time}" `curl http://www.wrsee.com/admin-api/push` >> push.log
    

编辑定时任务:

crontab -e:
//每天下午六点执行推送
0 18 * * * /usr/share/nginx/html/blog/crontab/push.sh
service crond restart
  • 20190124新增360搜索
    百度索引起来了,关键字跑到了首页,是时候支持更多的搜索引擎了,sitemap作为一种通用的方式很受青睐,基于此,新增sitemp生成功能
    每天下午六点定时生成sitemap.txt,访问方式路径为 域名/storage/sitemap.txt,物理路径为 项目目录下的public/storage/sitemp.txt

  • 一点建议
    seo关键字很重要,请务必在后台配置好。

关于邮件通知

配置.env:

MAIL_DRIVER=smtp
MAIL_HOST=smtp.qq.com
MAIL_PORT=465
MAIL_USERNAME=你得邮箱@qq.com
MAIL_PASSWORD=xxxxxxx    //去QQ邮箱设置中开启POP3/SMTP获取秘钥
MAIL_ENCRYPTION=ssl
MAIL_FROM_ADDRESS=你的邮箱@qq.com
MAIL_FROM_NAME=MrCoder技术栈

后台开启邮件通知即可

关于后台的开发

后台使用react + antdesign开发
进行二次开发的话需要安装node.js
这里我们推荐yarn(众所周知的原因)

curl --silent --location https://dl.yarnpkg.com/rpm/yarn.repo | sudo tee /etc/yum.repos.d/yarn.repo
yum install yarn
yarn -v
yarn install
npm run watch  //实时调试
npm run dev    //开发打包
npm run prod   //上线打包

请关注我的订阅号

订阅号.png

基于Hexo搭建个人博客网站 Hexo是一款基于Node.js的静态博客框架,可以方便的生成静态网页托管在GitHub和Coding上,本文介绍基于Hexo搭建个人博客网站,包括主题替换、标签分类、留言评论、加特效和加动漫人物等等 阅读详情

相关推荐

hexo-renderer-react:用于Hexo的React渲染器

六元React器React 用于Hexo的React渲染器

Laravel-Admin数据导入校验:如何实现强大的业务规则验证

Laravel-Admin是一款高效的后台管理框架,能帮助开发者快速构建功能完善的管理界面。在数据管理中,确保导入数据的准确性和合法性至关重要,而强大的业务规则验证是实现这一目标的核心环节。本文将详细介绍如何在Laravel-Admin中实现数据导入校验,让你轻松掌握各种验证技巧。 ## 数据导入校验的重要性 在实际应用中,数据导入往往涉及大量数据,若缺乏有效的校验机制,很容易导致错误数据进入

gitblog_00111的博客 995

react-blog:一个由ReactJS支持的简单博客模板

React博客 一个由支持的简单博客模板 安装方式 npm install --save 跑步 有几种工作方式: 将目录放入Apache Web服务器的DocumentRoot 使用npm脚本运行: npm run start 打开 。 其他: 此模板由的博客模板。 我从来不是一个(好的)前端开发人员。 我对HTML / CSS的经验非常有限。 但是,ReactJS的发布激发了我学习框架的兴趣,这个存储库只是一个简单的博客模板,可以帮助我获得一些有关React的基础知识。 React太糟糕了:)

Hexo、VitePress、Docusaurus,哪个最适合你的静态网站生成器?

综上所述,根据不同的使用场景和需求,可以选择适合的工具。如果你是一个非前端开发者,那么我建议hexo,你完全可以使用hexo提供丰富的社区模板构建你想要的页面。如果你是前端程序员,并且技术栈以vue为主,可以尝试vitepress,但是vitepress不支持博客,当然你完全可以定制化主题,但是不妨可以先看看hexo是否有满足你需求的博客主题模板。如果你是前端程序员,并且技术栈以react为主,可以使用docusaurus,它同时支持博客和文档,同样支持定制化主题。

崔颢的博客 3797

手把手教你使用ESM-2进行蛋白质结构预测:从安装到实战

本文详细介绍了如何使用ESM-2蛋白质语言模型进行蛋白质结构预测,从环境准备、模型安装到实战应用。通过逐步指导,读者可以掌握ESM-2的配置、单序列预测、结果可视化及高级优化技巧,适用于生物信息学研究和药物开发。

weixin_29306875的博客 532

ros2 gazebo仿真阿克曼小车搭载livox mid360雷达流程

流程简介:仿真环境的搭建需要安装ROS2和Gazebo。使用的是Humble版本,需要确认是否已经正确安装。然后是阿克曼小车模型的URDF,需要包括底盘、转向机构、驱动轮等,需要参考现有的阿克曼模型,比如ClearPath的Husky,但需要调整参数。Livox Mid360雷达在Gazebo中的仿真可能没有现成的插件,需要使用通用3D LiDAR插件来模拟。IMU的仿真相对简单,但需要注意噪声模型,以接近真实数据。

weixin_43802726的博客 3209

next主题php,开源-laravel-react-hexo(next)主题的博客系统

MrCoder技术栈博客20190124开源声明总花费大约一周时间,陆陆续续开发,laravel+react+next主题的博客系统日渐丰满,是时候分享成果了。喜欢的请star一下。系统会持续更新。DEMO:GIT:Gitee:背景博主一直使用git page + hexo搭建个人的博客,奈何,渐渐发现了问题seo差的几乎没有访问速度慢的掉渣于是本着不重复造轮子的前提下,github上看了开源的b...

weixin_29533307的博客 180

利用docx4j与docx4j-ImportXHTML高效实现HTML到Word的自动化转换

本文详细介绍了如何利用docx4j与docx4j-ImportXHTML库,在Java环境中高效实现HTML到Word文档的自动化转换。内容涵盖从环境搭建、核心依赖配置,到集成Spring Boot REST API的完整实战流程,并深入解析了处理图片、CSS样式、字体设置以及使用模板保证样式统一等高级技巧与常见问题解决方案,帮助开发者构建稳定的文档自动化生成流水线。

cnn8visionary的博客 364

memcoder php,GitHub - MrCoderStack/MrCoderStackBlog: laravel5.5 react做后台hexo-next主题的blog站,php开发...

mrcoderBlog20190124开源声明总花费大约一周时间,陆陆续续开发,laravel+react+next主题的博客系统日渐丰满,是时候分享成果了。喜欢的请star一下。系统会持续更新。DEMO:效果背景博主一直使用git page + hexo搭建个人的博客,奈何,渐渐发现了问题seo差的几乎没有访问速度慢的掉渣于是本着不重复造轮子的前提下,github上看了开源的blog系统,发现很...

weixin_31046947的博客 185

Android 面试题 Handler篇

1.Handler的实现原理。

ViewHandKownHealth的博客 953

深入解析ADC采样电容:从充电误差到LSB精度的关键设计

本文深入解析了ADC采样电容在模数转换中的核心作用,重点探讨了充电时间常数与采样误差的博弈关系。通过推导最小采样时间公式,揭示了精度、速度、源阻抗与内部电容之间的制约关系,并提供了从理论计算到外部驱动电路设计的实战指南,是确保ADC达到LSB精度的关键。

android的专栏 1103

hexo动态php,MrCoderStackBlog

mrcoderBlog20190124开源声明总花费大约一周时间,陆陆续续开发,laravel+react+next主题的博客系统日渐丰满,是时候分享成果了。喜欢的请star一下。系统会持续更新。DEMO:效果背景博主一直使用git page + hexo搭建个人的博客,奈何,渐渐发现了问题seo差的几乎没有访问速度慢的掉渣于是本着不重复造轮子的前提下,github上看了开源的blog系统,发现很...

weixin_42146086的博客 292

从零开始用Plaxis 2D设计深基坑支护结构:含地锚与桩墙实战教程

本文提供了一份基于Plaxis 2D的深基坑支护结构设计实战教程。教程以钻孔灌注桩排桩结合预应力锚索的典型支护体系为例,详细阐述了从地质模型建立、材料参数定义(重点介绍硬化土模型)、施工阶段模拟(含开挖、锚索施加预应力和地下水渗流固结耦合分析)到结果解读与设计优化的全流程。旨在帮助岩土工程师掌握数值模拟核心,实现从经验设计到量化分析的跨越。

kotlin6android的博客 504

使用 python-sdk 的 Client 类进行 MCP 服务器内存级测试:完整指南

本文讲解 python-sdk(Model Context Protocol 官方 Python SDK)中一个非常实用的测试技巧:`Client` 类不仅能连接 URL 或启动子进程,还能**在内存中(in-memory)**直接连接你的 MCP server 对象,实现类似 FastAPI `TestClient` 的无端口、无子进程、无网络开销的测试体验。读完本文,你将掌握完整的内存测试写法

gitblog_00007的博客 548

15.1-缓存调试解析

摘要:DSU-120提供L3缓存和监听过滤器(SF)RAM的调试功能,通过CLUSTERCDBG寄存器控制访问。该功能需在集群ON电源模式下使用,且需确保单核访问。寄存器位字段根据读写操作不同,可配置WAY、RAM类型等参数。数据读取分为监听过滤器RAM、标签RAM、数据RAM及MTE标签四种类型,各有特定的位字段解释。配置参数包括切片ID宽度、标签索引宽度等,随缓存大小变化。

baron-周贺贺-代码改变世界ctw 110

基于STM32L4XX 、HAL库的ATD5984步进电机驱动器驱动程序应用设计

一、简介: ATD5984是一款内部集成了译码器的微特步进电机 驱动器,能使双极步进电机以全、半、1/4、/1/8、1/16 和1/32步进模式工作。步进模式由逻辑输入管脚MSx选 择。其输出驱动能力达到28V±1.6A。 译码器是ATD5984易于使用的关键,通过STEP管脚 输入一个脉冲就可以使电机完成一次步进,省去了相序 表,高频控制线及复杂的编程接口,使其更适于没有复 杂的微处理器或微处理器负担过重的场合。 在步进操作期间,ATD5984的内部电路可以自动

PP_Cottage的博客 404

记录下使用hexo框架搭建博客和踩过的坑

记录下使用hexo框架搭建博客和踩过的坑 前言 由于经常使用csdn,博客园,简书来查阅问题的解决方案,然后开始在 优快云 中记录些所得经验和避坑忠告,但因为广告太多和样式不满意,便萌生了自己搭建个博客的想法。之后便了解到一些搭建用的框架平台:Hexo Hugo (对新手很友好),Vue开发者可以使用 VuePress,react 开发者可以使用 Gatsby。 我猜测大部分读者觉得开发一个博客会有以下顾虑 搭个博客是不是得从零开始搭建,包括静态页面和交互效果,那会不会很麻烦(用上面框架即可拒绝造轮子

takeingloop的博客 925

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Hexo + NexT 博客评论系统(Valine)配置小记

这几天刚配置了船新的 Hexo 博客,然后看到使用的 NexT 主题支持很多评论系统。我尝试配置了一下,发现里面坑太多了,真的挺费周章。于是想分享一下。NexT 主题一共支持如下的几个评论系统:其中我觉得最后一个 Valine 是最好用的,当然也说

Copcin的小站 1611

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Laravel React 开发指南

--- ## 项目介绍 Laravel React 是一个整合了 Laravel 后端框架与 React 前端库的示例项目。它旨在提供一个起点,帮助开发者快速构建兼具 Laravel 的强大后端管理和 React 灵活前端界面的应用程序。此项目展示如何在 Laravel 环境下集成 React,利用其现代的开发方式来提升用户体验。 --- ## 项目快速启动 ### 环境需求 确保你的

gitblog_00097的博客 607

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

探索前沿Web开发:React与Laravel的完美结合 - `react-laravel`

探索前沿Web开发:React与Laravel的完美结合 - react-laravel 去发现同类优质开源项目:https://gitcode.com/ 项目介绍 react-laravel 是一个开源项目,它将ReactJS的强大组件化功能引入到Laravel框架中。这个项目允许你在Blade视图中直接使用React组件,还能实现服务器端渲染,并在客户端无缝运行。通过便捷的@react_com...

gitblog_00032的博客 906

探索 Laravel 与 React 的完美结合:Laravel React To Do App

探索 Laravel 与 React 的完美结合:Laravel React To Do App 在现代Web开发中,寻求高效且灵活的框架组合是开发者永恒的主题。今天,我们为您带来了一个精彩示例——Laravel React To Do App,一个由 Laravel 搭配 React 开发的任务管理应用,旨在快速原型设计以及学习最新前端实践。 项目简介 Laravel React To Do A...

gitblog_00524的博客 1039

hexo+github打造个人博客系列之评论系统

今天的文章可谓是积蓄了我这几年来的应聘和面试经历总结出来的经验,干货满满呀!如果你能够一直坚持看到这儿,那么首先我还是十分佩服你的毅力的。所以看完之后,还是多多行动起来吧!可以非常负责地说,如果你能够坚持把我上面列举的内容都一个不拉地看完并且全部消化为自己的知识的话,那么你就至少已经达到了中级开发工程师以上的水平,进入大厂技术这块是基本没有什么问题的了。了。所以看完之后,还是多多行动起来吧!

cwcnl25131的博客 1223

用React和Laravel实现一个在线答题试卷模块,包括单选,多选,判断和填空题(上)

在线考试模块在现代教育和培训领域的应用越来越广泛。这个模块需要后端在数据库中获取题目并通过前端的请求发送给前端,然后将其渲染到页面上。提交考试结果后记录用户的选择并计算考试分数,然后保存到数据库中。根据此项目要求,用户可以没有限制的进行考试,每一次考试就会更新考试成绩。

HardworkingHuang的博客 1253

前端使用laravel+react开发容易遇到的问题

如果里面的APP_KEY没有值,需要控制台运行php artisan key:generate自动生成,然后将.env生成的app_key复制到config/app.php里。原因:composer在引入库的时候出现的问题,由于版本问题,出现了这个错误,一般都是项目使用的composer版本和控制台的composer版本不对,引发的此类问题!建议安装wamp:https://jingyan.baidu.com/article/5552ef4734c1fc518efbc97a.html。

weixin_41458007的博客 641

Laravel + React 混合框架博客系统:SadCreeper/laravel-react-blog

Laravel + React 混合框架博客系统:SadCreeper/laravel-react-blog 在现代Web开发中,Laravel和React是两个备受瞩目的技术栈。Laravel以其优雅的PHP框架赢得了开发者的心,而React作为JavaScript库则重新定义了前端用户体验。现在,让我们一起探索一个将两者完美结合的开源项目——。 项目概述 SadCreeper/laravel...

gitblog_00056的博客 744

基于Hexo框架快速搭建个人博客--评论功能(二)

Valine 诞生于 2017 年 8 月 7 日,是一款基于 LeanCloud 的快速、简洁且高效的无后端评论系统。理论上支持但不限于静态博客,目前已有 Hexo、Jekyll、Typecho、Hugo、Ghost 等博客程序在使用 Valine。

会思想的苇草i的博客 1227
上一篇: mac读写ntfs
下一篇: 并发下的库存如何扣?
码哥说
博客等级 码龄8年 5645粉丝 172原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码哥说

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值