简介
Solo 是一款一个命令就能搭建好的 Java 开源博客系统,并内置了 15+ 套精心制作的皮肤。除此之外,Solo 还有着非常活跃的社区,文章分享到社区后可以让很多人看到,产生丰富的交流互动。
Solo 的第一个版本发布于 2010 年,至今已经非常成熟稳定,请放心使用
功能
Solo 沉淀至今的每一个功能你应该都会用到。我们不会将只有“20%”用户使用的功能添加进来,只有这样才能保持博客系统本该有的纯净,足够轻量才能带来简约的使用体验。
Markdown / Emoji
聚合分类 / 标签
自定义导航(页面、链接)
草稿夹
评论/回复邮件提醒
随机文章 / 相关文章 / 置顶 / 更新提醒
自定义文章永久链接
自定义站点 SEO 参数
自定义公告 / 页脚
多个签名档
代码高亮
多皮肤,多端适配 / 社区皮肤
多语言 / 国际化
上传七牛云
友情链接管理
多用户写作,团队博客
SQL 文件导出
Hexo/Jekyll 导入
插件系统
Atom / RSS 订阅
Sitemap
MetaWeblog API
CDN 静态资源分离
如果有新版可用,升级过程也是非常简单的,只需要重新部署新版本就可以,不用运行额外的任何脚本。
然后就让我们来看看怎么安装、配置、备份以及常见问题吧!
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
安装
安装前先准备好 Java 环境,请使用 JDK8 或以上版本。Solo 提供了两种部署模式,分别是独立模式和容器模式。数据库默认是使用内嵌的 H2 数据库,也支持 MySQL,稍后会详细介绍。
对于系统内存要求,最低 512M,推荐 1G。
独立模式,JDK 环境准备好之后下载最新的 Solo 包解压,进入解压目录执行!
独立模式使用内嵌的 Jetty 容器进行部署,解压 war 包后仅需要一个命令就能启动:
Windows: java -cp WEB-INF/lib/*;WEB-INF/classes org.b3log.solo.Starter
Unix-like: java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter
注意:上面的命令都是前台运行的,退出 shell 后会被终止。比如 Linux 上不中断运行需要使用 nohup。
容器模式
使用 Jetty 或者 Tomcat(版本要求至少 9)进行部署,将 war 包放到容器的 webapps 目录下即可。
独立 vs 容器
两种模式各有千秋:
独立模式:一个命令就能启动,如果你对 Java Web 不太熟悉,建议使用该方式
容器模式:可以和已有的程序一起部署在同一个容器中,这样可以节省内存
细节配置
主要的配置文件有两个,它们都存放在 WEB-INF/classes 目录下。
latke.properties:用于配置域名和端口,请配置为浏览器访问时候的域名和端口
local.properties:用于配置数据库,要切换为 MySQL 的话请在这里配置
皮肤
下载的 war 包中自带了所有官方皮肤,如果你是自己拉源码构建的,可以到这里下载皮肤。
皮肤放到 skins 目录下后重启服务,在工具 -> 偏好设定 -> 皮肤中选择使用即可。
NGINX 示例
相应的 latke.props 配置:
初始化后
初始化成功后强烈建议到管理后台 -> 工具 -> 偏好设定中进行一下配置。
信息配置
博客基本信息:标题、子标题、SEO 信息
HTML head:可以配置脚本,比如百度统计
公告:可以使用 HTML 和脚本进行配置
页脚:主要用来放备案信息,也可以使用 HTML 和脚本进行配置
签名档
最多可以配置 3 个签名档,发布文章的时候选择一个使用,可以使用 HTML 和脚本进行配置。
参数设置
下面是一些比较有特色或重要的参数:
编辑器类型
列表显示方式:仅标题 / 标题 + 摘要 / 标题 + 正文
各种分页参数
文章更新提示:启用后一旦某篇文章更新过,则会在文章标题处显示“有更新”的提示,并且排序靠前
允许注册:开放注册后其他人可以注册成为“访客用户”,方便评论时不用每次都填写基本信息。管理员可以在用户管理中看到当前的所有用户,并可以改变用户角色
导入数据
MetaWeblog API
如果你之前使用的系统支持这个特性,可以先用客户端工具导出文章到本地,然后再导入 Solo,
可参考下面的 MetaWeblog API 配置。
静态博客 /Markdown
https://hacpai.com/article/1498490209748
备份
war 包
如果你修改过代码请记得备份整体的 war 包,如果没有修改过则只用备份下面的配置文件。
配置文件
进行版本升级时需要,建议备份 WEB-INF/classes/ 目录下的三个文件:
latke.properties
local.properties
mail.properties(如果修改过的话)
数据库
H2:备份用户 home 目录下的 solo_h2 文件夹
MySQL:使用 MySQL 相关备份工具,或者到博客后台工具 -> 其他中进行 SQL 导出
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
强烈建议定时备份数据!!!
升级
使用在跑着的老版本的配置文件覆盖新版本 war 中的(或者重新再配置一次),然后直接部署就好,启动时会自动进行升级。要确认升级是否成功的话留意一下日志,或者查看 option 表中的 version 行。
注意:不能进行跨版本升级,建议紧跟我们的发布步伐
下面是两位用户升级 Solo 的经验分享,请参考一下:
https://hacpai.com/article/1487432682174
https://hacpai.com/article/1488440206134
其他一些特性
多用户
可以几个用户同时使用一个博客发布文章,主要用在团队博客这个场景。权限方面做了简单隔离,非管理员用户可以看到其他用户的博文 / 评论列表,但是不能进行操作。
RSS/Atom
提供两种订阅供稿:Atom 1.0、RSS 2.0,分别可以对博客文章列表、标签 - 文章列表进行供稿:
博客文章列表
Atom: /blog-articles-feed.do
RSS: /blog-articles-rss.do
标签 - 文章列表
Atom: /tag-articles-feed.do?oId=${tagId}
RSS: /tag-articles-rss.do?oId=${tagId}
浏览器直接打开可能会出现编码问题,可使用阅读器查看。
Sitemap
自动生成全站文章的 sitemap.xml,有利于 SEO。
前台皮肤切换
通过 URL 带参(比如 http://demo.b3log.org/?skin=finding)来确定渲染使用的皮肤。
使用场景举例:
在不安装 Solo 的情况下可以方便预览各个皮肤(在 Demo 上)
方便二次开发时集成切换皮肤
博主可以让访客体验到不同的效果,比如:这个皮肤好看?还是这个好看?
1,只有在首页(/)会取参数skin=xxx
2,如果带有就记录到 Cookie 里面,如果带有skin=default或皮肤不存在则清空 Cookie
3,如果要切换成后台默认的皮肤,在首页带参skin=default
站外相关文章
“站外相关文章”指的是其他人使用 Solo 发布的文章,该文章含有与你的文章相同的标签。该功能主要是为了加强各个 Solo 博客之间的互动性,让博客访问者可以更有效地访问到相关的内容。
这是 B3log 构思 的一部分实现,欢迎各位大家积极参与进来
https://hacpai.com/b3log
MetaWeblog API
MetaWeblog API 是用于离线管理文章的(比如使用 WLW),目前支持以下 APIs:
blogger.getUsersBlogs – 获取博客
metaWeblog.getCategories – 获取标签列表
metaWeblog.getRecentPosts – 获取最新文章列表
metaWeblog.getPost – 获取文章
metaWeblog.newPost – 发布文章 / 保存草稿
metaWeblog.editPost – 编辑文章
blogger.deletePost – 删除文章
配置地址:/apis/metaweblog,用户名 / 密码:管理员的口令
FAQ
初始化卡住
如果初始化向导页面已经正常显示,但是填完表单后点击“初始化”按钮后卡住,说明可能是 serverPort没有配置正确,这个端口需要配置为浏览器访问时候的端口,而不是容器启动的监听端口。
如何引入自定义静态资源,比如 .mp3?
请参考 WEB-INF/static-resources.xml 中的配置,加入自定义资源的路径匹配后重启。
如何获得更好的 Markdown 渲染效果?
获取项目源码,项目讲解,知识点分享,学习交流,那就加入小编的Java学习交流群吧!
616 959 444
Solo 默认是使用内嵌的 flexmark 进行 md 渲染,这个项目还比较新,对有的场景下的 md 渲染效果处理不是很好。如果你想要获得更好的 md 渲染效果需要这样做:
安装 Node.js
2.安装 marked:npm install marked --save
3.在 Solo 目录下执行
node js/marked/http.js以启动 markdown 解析引擎(你可能需要 nohup),需要 8250端口可用
4.重启 Solo 后就会使用 marked 作为 markdown 渲染引擎了
谢谢大家的观看,很晚了。今天先写到这里吧!后面会一步步的全部写出来,如果有什么不对或不同看法的请留言!谢谢!
后续:
开发环境、项目结构、框架说明
开发步骤、模版变量
插件机制、处理流程