元旦用SpringBoot撸了个博客网站送给大家

news/2024/5/9 10:53:07/文章来源:https://blog.csdn.net/qq_24557827/article/details/112211229

说在前面

掘金是曾经我觉得最适合写技术文章的社区,因为可以带二维码引流。我觉得这想法没问题,可是最近发现掘金也凉了,写文章连个公众号二维码都不给带,这让我觉得被白嫖了。

而且最近发现我更加偏向于写纯粹的技术文章,但阅读量实在是低的可怜,思前想后很多天,最终做了个决定,不如开始运营一个技术博客网站好了,毕竟技术博客写得好,百度等搜索引擎是会主动采集数据并进行推送,而不是像公众号一样,难做的要死。

趁着这个元旦,基于熊哥http://codebear.cn/?ADTAG=gh的客户端魔改了一个博客网站,而熊哥的网站用的是php,由于我是一个Javaer,用php开发我也不好将其改成自己喜欢的模样,因此花了点时间复刻了一版Java的版本,在公众号上记录下。

技术栈

客户端:vue

服务端:springboot+maven+jpa+docker+shell

我的博客地址:

http://myblog.lixifan.cn/

饭谈编程

或者直接点击原文跳转

目前已经部署到腾讯云上,用docker管理,可以直接访问了

效果图

看看这好看的首页

pc端首页

文章页面极简主义不错

pc端文章

支持评论

评论页面

为了阻止恶意刷,还要带拼图才可以

image-20210103224321149

分类页面,好看

pc端分类页面

归档页面,时间线是我喜欢的

pc端归档页面

同时还提供了后台

登陆页面

后台还记录了系统日志

pc端后台页面

发篇文章上传封面图,还支持截图

image-20210103224224002

随时随地进行文章管理

image-20210103224614146

还有n多功能

image-20210103224731370

后台还有草稿箱功能,写完不发表的文章可以保存到草稿箱上,还有回收站功能,删除的文章可以在回收站找到,很强大的博客网站。

博客目前实现的功能

  • [x] 首页(文章列表)

  • [x] 分类/标签列表

  • [x] 文章归档

  • [x] ‘关于’页面

  • [x] 友链

  • [x] 文章详情页

  • [x] 分类/标签 对应的文章列表

  • [x] 搜索功能(按文章标题和简介搜索)

  • [x] 文章详情页标题目录导航

  • [x] 评论

  • [x] 简历页

  • [ ] 图片集

博客后台管理实现功能

  • [x] 登录

  • [x] 首页(显示文章、标签、系统日志等统计数据)

  • [x] 发布/编辑/删除文章

  • [x] 添加/编辑/删除分类

  • [x] 添加/编辑/删除标签

  • [x] 添加/编辑/删除友链

  • [x] 编辑‘关于’页面

  • [x] 编辑博客配置页面(头像、昵称等)

  • [x] 管理评论

  • [x] 简历编辑

  • [ ] 修改管理员密码

Java后端结构

后端结构

超级方便改,拿到源码想怎么改就怎么改,一个博客的后端就应该这么轻松改。

如何起服

看看Dockerfile

FROM maven:3.5-jdk-8
RUN ln -sf /usr/share/zoneinfo/Asia/Shanghai  /etc/localtime

看看docker-compose

version: '3'
services:myblog:container_name: myblogenvironment:- TZ=Asia/Shanghai- JAVA_OPTS=-XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -Xms128m -Xmx128m -Xmn128m -Xss256k -XX:SurvivorRatio=8 -XX:+UseConcMarkSweepGCprivileged: truerestart: alwaysbuild: .working_dir: /myblogvolumes:- .:/myblog- ~/.m2:/root/.m2expose:- "8088"command: mvn clean spring-boot:run -Dspring-boot.run.profiles=dockernetworks:- default- nginx_net
networks:nginx_net:external: true

看看我的shell脚本

#!/bin/shContainer="myblog"case "$1" in
build)sudo rm -rf targetsudo cp ./conf.d/myblog.conf /home/ubuntu/proj/nginx-center/conf.d/myblog.confsudo cp -r ../myblog-front/dist /home/ubuntu/proj/nginx-center/html/myblog-front;;
start)nohup sudo docker-compose up >myblog.log 2>&1 &tail -f myblog.log;;
stop)sudo docker-compose down;;
login)docker exec -it $Container /bin/bash;;
info)docker ps -a -f name=$Container;;
port)docker port $Container;;
*)echo "Usage: build|run|init[chmod,conf]|start|stop|remove|login|info|port"exit 3;;
esac

如果是在idea上,则直接导入工程,然后起服即可。

如果想用docker容器,则流程如下:

  • bash ./ctrl.sh build 该步骤是将客户端代码copy到指定路径

  • bash ./ctrl.sh start 起服

  • bash ./ctrl.sh stop 关服

记录魔改的新路历程

部署后访问发现

image-20210103223336192

看后台日志

image-20210103223353958

猜测是不允许直接路由访问了,一开始看了后端日志,发现没有日志打印,可以初步认为不是后端拦截导致的,因而将问题归于vue的路由,然后用关键词:vue 部署后  无法直接回车键访问 查了下,虽然找到部分解答,但是无法修复,就这样搞了一上午,下午和女朋友出去唱了个k,然后就想通了,应该是nginx的路由问题,回来在nginx路由上加了处理

image-20210103223421187

这里的意思是当用户请求 http://myblog.lixifan.cn/admin,这里的uri/,这里的意思就是看看有没有/admin/的目录,如果找到则选择最后一个,也就是index.html,重新部署到网上后

image-20210103223431485

部署成功后页面是这样的

image-20210103223730428

算了下加载了大概两秒,这就有点慢了,于是打算做一波优化,虽然我是个纯粹的后端,但是优化性能是我经常做的事情,尽管浏览器加载资源过慢算是属于前端的工作。

我在谷歌浏览器用F12打开了调试界面,查看哪些资源加载这么慢

image-20210103223442085

这些超过一秒的资源都打算干掉,看了下size都有点大啊,都有三百多k的资源了,如果压缩一下,应该可以快很多吧,百度告诉我

image-20210103223454018

这表明浏览器支持做gzip压缩,也就是服务器将资源进行压缩,浏览器收到压缩的数据后自己进行解压,这样传输速度应该会相对快很多;由于我的前端资源服务器用的是nginx,因此直接在nginx开启压缩应该就可以了。

image-20210103223754925

这大坨东西就是开启压缩的地方了,接下来就是试试效果如何了,我提交代码到腾讯云上,更新代码后重启了下服务器,重新看下资源情况

image-20210103223805128

有意思,效果显著啊哈哈哈,现在只需要处理掉这个一秒多的就可以了,所以这个是啥东西,竟然压缩后还有一秒多

原来是个远程库,怪不得压缩后都没卵用,竟然这么大,那就不远程加载,直接本地放一个,然后经过压缩就应该ok了吧,试着搞一波?等等,连接上是cdn开头的,可以考虑直接换个cdn加速源,说不定速度会快,百度了下重新换了下

img

重新build到远程,然后在腾讯云上更新代码后重启容器,重新访问,可以看到

image-20210103223818690

有效哈哈哈,博客访问基本在一秒内加载完成,这结果可以接受了。

现在开始登陆后台管理系统

image-20210103223829643

突然想到忘记了设置管理员账户,想了下,这东西应该要放在启动的时候自己检测才可以,因此直接在服务端上搞

image-20210103223841740

启动的时候加载

image-20210103223851904

好,管理员账户也巧妙解决了,接下来开始实操一波了。

尝试写篇文章,就以Caffeine那篇好了

image-20210103223902058

结果,日

image-20210103223912665

看了下数据库的字段类型

image-20210103223921081

肯定是不行的,要改成text才可以了

image-20210103223928857

直接修改后部署到腾讯云然后起服,重新发布文章

img

终于可以了

img

草稿箱上也有东西了

接下来新增几个标签和进行分类

image-20210103223938913

在草稿箱找到我的文章,然后重新编辑,修改

img

看起来可以,然后发布

image-20210103223947519

发布成功后刷新博客界面可以看到

image-20210103224000329

试一波评论

image-20210103224010130
image-20210103224019910

成功啦。

接下来就是优化下SEO了,先简单处理下让百度收录一波

https://jingyan.baidu.com/article/6b97984dee19b81ca3b0bf4c.html

收录成功

image-20210103224031624

根据这文章的流程来,现在已经可以直接搜索到了

image-20210103224039912

目前基本就是这样了。

说个重要的决定

后续基本上技术文章、教程,都会发布到博客网站上,当然了,公众号也会持续更新,不过更多的是记录过程。

源码地址

关注公众号,在后台输入 博客 即可获得。

(o≖◡≖),觉得不错就点分享、在看,支持原创,不然不写啦????

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

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

相关文章

和朋友合伙搞了个网站

做IT的可能都有类似的操作,总有一些朋友会找我们做这做那,或者是合伙做个网站什么的,这不,今年年初深圳那边就有个关系很铁的老哥找我搞一个租房网站,他简单说明了下他的想法,我大概罗列了能不能做深圳本地…

使用C#的HttpWebRequest模拟登陆网站

原文:使用C#的HttpWebRequest模拟登陆网站这篇文章是有关模拟登录网站方面的。 实现步骤; 启用一个web会话 发送模拟数据请求(POST或者GET) 获取会话的CooKie 并根据该CooKie继续访问登录后的页面,获取后续访问的页面数据。我们以…

[网站摘录]TOP小区流程分析

原文地址:http://www.mscbsc.com/bbs/thread-656686-1-1.html#73转载于:https://blog.51cto.com/10237569/1840620

Dapper:The member of type SeoTKD cannot be used as a parameter Value

异常汇总&#xff1a;http://www.cnblogs.com/dunitian/p/4523006.html#dapper 上次说了一下Dapper的扩展Dapper.Contrib http://www.cnblogs.com/dunitian/p/5710382.html 以及这个异常&#xff1a;Dapper.Contrib&#xff1a;GetAsync<T> only supports an entity with…

IIs 网站应用程序与虚拟目录的区别及高级应用说明(文件分布式存储方案)【转】...

对于IIS网站&#xff0c;大伙用的比较多&#xff0c;就不啰嗦了。 今天和说说大伙比较少使用的"IIS应用程序”和虚拟目录的区别及高级应用场景&#xff0c;文件分布式存储方案。 1&#xff1a;IIS网站&#xff1a; 一个网站&#xff0c;基本就是一个站点&#xff0c;绑定N…

你通晓SaaS吗?不自行搭建门户网站的三大理由

就算你创业家们已经对SaaS动了心&#xff0c;也要关注SalientGroup公司发布的新研究结果&#xff1a; 1、SaaS在获得资金。近50%的基于SaaS的初创公司成功地融到了资金――融资成功率之高是其他行业领域无法企及的。 2、基于SaaS的企业在增长。SaaS市场的增长率比软件市场快3倍…

asp.net 网站 发布时 去掉.cs文件

VS2013在WIN8下扁平的UI和我今天锈垢的大脑&#xff0c;让找这个设置找了好半天&#xff01;&#xff01;&#xff01;OK&#xff0c;言归正传。在要发布的网站上右键&#xff0c;选择"发布网站"。在发布窗口中&#xff0c;会让你选择一个发布配置文件&#xff0c;没…

钓鱼网站飙升居然因为这个原因...

2019独角兽企业重金招聘Python工程师标准>>> 2017年注定是个不太平的年份&#xff0c;钓鱼网站的数量已经达到了巅峰状态…… 虽然各大主流浏览器已经推进网站HTTPS的部署&#xff0c;但也正是因为这个原因&#xff0c;一部人认为只要安装了SSL证书就可以保证网站的…

凡客诚品官方网站的前端改进建议

打开http://www.vancl.com/发现采用的Asp.net&#xff0c;这点我感到很欣慰&#xff0c;毕竟国内采用.net技术体系的优秀网站少之又少。好奇之余右键-查看源码&#xff0c;却不由得皱起眉头&#xff0c;在此提几个可以让网站更快的前端建议&#xff1a; 01.合并头部的script为一…

Servlet过滤器实现网站访问计数器功能

实现网站在线访问计数器功能&#xff0c;网站的初始值设置为1000 &#xff08;1&#xff09;创建CountFilter的类&#xff0c;实现javax。servlet.Filter接口&#xff0c;是一个过滤器对象&#xff0c;通过过滤器实现统计网站人数功能&#xff1a; 123456789101112131415161718…

2017年最受欢迎的10个编程挑战网站

2019独角兽企业重金招聘Python工程师标准>>> https://mp.weixin.qq.com/s/nnswkOs_FAq1NHDzfX8mwQ 转载于:https://my.oschina.net/u/3705388/blog/1575013

记一次使用Node.js electron打包网站的记录

具体步骤请参考&#xff1a;http://blog.csdn.net/a727911438/article/details/70834467 打包时出现了不少问题&#xff0c;逐一记录下来以供其他人参考。 package.json文件内容 {"name": "appname","version": "0.1.0","main&qu…

SEO是什么意思?SEO有什么用,怎么做SEO?

什么是SEO&#xff1f;关于SEO的定义&#xff0c;在网络上可以找到很多。如果你去百度一下&#xff1a;SEO是什么。或者你直接去百度百科搜一下&#xff1a;SEO。百度就会向你陈列出关于SEO的定义。它会告诉你&#xff1a; SEO由英文Search Engine Optimization缩写而来&#x…

高性能网站架构之缓存篇—Redis集群搭建

看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的&#xff0c;相信你已经对redis有一定的了解&#xff0c;并能够安装上&#xff0c;进行简单的使用了&#xff0c;但是在咱们的实际应用中&#xff0c;使用redis肯定不…

内容换行_内容换行或分段不会影响到SEO优化和搜索引擎收录抓取

换行是为了看上去更加美观&#xff0c;而分段表示一个段落的结束&#xff0c;将会使内容版面更加美观&#xff0c;利于人们的阅读。内容是换行还是分段、文字的大小、颜色等不同情况的使用&#xff0c;对于搜索引擎收录抓取都是没有任何影响的&#xff0c;它们的不同使用只会影…

网站改成静态页面打不开_公司网站404,不淡定有啥办法,该有的态度还是要有...

了解网络营销&#xff0c;多元生活伴你左右&#xff0c;欢迎观看正阳说网络营销课程_12今天来聊一聊关于网站404的那些事儿&#xff0c;喜欢上网的朋友多多少少还是会遇到这个问题&#xff0c;为什么会出现这个原因呢&#xff1f;主要是用户操作失误&#xff1b;网站链接书写错…

linux车机系统怎么进工厂模式,工厂方法模式 - 跟JBPM学习设计模式_Linux编程_Linux公社-Linux系统门户网站...

模式简介工厂方法模式&#xff0c;定义一个用于创建对象的接口&#xff0c;让子类决定实例化那个类&#xff0c;其使一个类的实例化延迟到其子类中。前边我们学习了简单工厂模式&#xff0c;简单工厂模式的最大优势在于工厂类中包含了必要逻辑判断&#xff0c;根据客户端的条件…

seo服务器渲染_关于SSR( 服务端渲染 )其利与弊是什么?

服务端渲染&#xff08;SSR&#xff09;原理和客户端&#xff08;CSR&#xff09;渲染区别一、服务端渲染&#xff08;SSR&#xff09;是什么服务端渲染简单来说就是&#xff1a;用户使用的浏览器浏览的都是一些没有复杂逻辑的、简单的页面&#xff0c;这些页面都是在后端将 ht…

个人博客系统服务器,服务器搭建WordPress个人博客网站

WordPress 是世界上使用最广泛的博客系统之一&#xff0c;是一款开源的PHP软件。有丰富的插件模板资源&#xff0c;使用WordPress可以快速搭建独立的博客网站。WordPress-Logo-PNG-Picture.png本教程软件环境基于CentOS 6.8 64位&#xff0c;从配置LNMP环境开始一步步搭建属于你…

简单用户登录网站(HttpServlet1.2版本)

案例说明:当用户尚未登录就访问欢迎界面时,页面跳转到登录界面,并显示提示信息; 若用户填写的信息与固定用户信息不一致时,登录界面显示错误提示信息;否则跳转到欢迎页面,显示用户名信息. 新建Login2.java -- 用户登录界面,当用户信息输入错误时,会显示提醒信息.(当用户直接访问…