环境
- MySQL 5+
- Tomcat 6+
2. 配置 JDBC 数据源
按照数据库连接配置修改 ${b3log-solo-mysql-x.×.x}/WEB-INF/classes/local.properties 文件里
#### JDBC database Configurations ####
区域中jdbc.URL=jdbc:mysql://localhost:3306/b3log?useUnicode=yes&characterEncoding=UTF-8
jdbc.username=root
jdbc.password=
另外,还必须配置表前缀# The specific table name prefix
jdbc.tablePrefix=b3_solo
可以配置为其他前缀,但不能留空。3. 修改应用路径
修改 ${b3log-solo-x.×.x}/WEB-INF/classes/latke.properties 中的 Server 区域,配置成部署路径。
serverScheme=http
serverHost=你自己的域名
serverPort=端口填 80
staticServerScheme=http
staticServerHost=你自己的域名
staticServerPort=端口填 80
contextPath=/部署包展开后的目录名,例如 /b3log
staticPath=/部署包展开后的目录名,例如 /b3log
4. 部署将 ${b3log-solo-mysql-x.x.x} 下的内容拷贝到部署目录下(tomcat/webapps/${contextPath}),例如 d:/tomcat/webapps/b3log
重启tomcat.
在浏览器中访问:http://${server}:${port}/${contextPath} 进行初始化.比如我的:
http://as3.brite.biz:8081/b3log
注 :
- ${server}:${port} 为你容器的访问地址与端口.
修改自https://github.com/b3log/b3log-solo/wiki/deploy_local_tomcat
b3log-solo-mysql-0.6.0.war的下载地址:
http://pan.baidu.com/share/link?shareid=541735&uk=3255126224#dir/path=%2Fb3log-solo%2F0.6.0
项目地址:
https://github.com/b3log/b3log-solo(已经删除)
https://github.com/luckypoem/b3log-solo
-----
https://github.com/88250/solo
--------------------------------
❤ 令人放心的全面免费服务
✅ 贴心的技术支持
- 有问必答的用户交流群,轻松气氛,社恐无惧
- 舒心提问,耐心讲解,博客维护团队为你解答
- 免费远程服务,解决疑难杂症
- 菠萝博客及全部增值服务永久免费,永久更新
🌱 我是小白,装不好怎么办?
不用担心安装问题,我们提供完善的文档,提供所有部署方式的安装、升级方式,通过简单的几步就可启动。
如果你在跟随教程安装的过程中出现任何问题,菠萝博客用户群会有作者以及维护者随时待命,免费解答、远程帮助,QQ 用户群请点击最下方的链接。
为什么选择 Bolo
- 完整的教程文档,完善的交流答疑
- 精美皮肤常更新
- 支持将文章自动备份至 GitHub 仓库 示例
- 超酷的数据统计表
- 本地登录、评论,支持备案模式(隐藏登录、评论及搜索入口)
- 支持 Tomcat、Docker 快速部署
- 邮件提醒功能,不怕错过博客中的新评论,回复他人评论也会发邮件提醒他人
- 强大的 Vditor 编辑器,支持
所见即所得
、即时渲染
、分屏预览
三种模式,额外支持通过 Lute_HTTP 渲染 - 支持自定义图床(阿里云、又拍云、七牛云、腾讯云)
- 轻型防火墙功能,阻止恶意访问,保证博客正常运行
- 强大的 Markdown 编辑器(使用 Vditor)支持大纲、数学公式、脑图、图表、流程图、甘特图、时序图、五线谱、多媒体、语音阅读、标题锚点、代码高亮及复制、graphviz 渲染
- 支持黑暗模式,随系统设置自动切换,保护视力
- 看板娘+,在线更新海量看板娘资源
- 如果你是 Solo 用户,还可将 Solo 的数据一键迁移到 Bolo;如果你对 Bolo 不满意,还可以一键迁回至 Solo
- Server 酱推送功能,在微信上接收你的博客动态
- 自动生成“我在 GitHub 上的开源项目”文章功能,让博客的访客更好地了解你的 GitHub 履历
博客安装使用教程文档
👉 QQ用户群 | 安装教程 | 从Solo迁移 | Bolo介绍 | 常见问题
from https://github.com/adlered/bolo-solo
https://doc.stackoverflow.wiki/web/#/7/165
-----------------------------------------------------------
Solo 开发环境搭建详细说明
1. 环境搭建综述
- JDK:8 或更高的版本。我们就用当前最新的 JDK12 版本。
- Maven:2 或更高的版本。我们就用当前最新的 Maven 3.6.1
- MySQL:默认使用 MySQL,可选择使用内嵌的 H2 Database。我们就用当前最新的 MySQL8。
2. 安装 JDK12
2.1 安装之前先 rpm -qa |grep java
检查一下系统有没有低版本的 java
[root@localhost ~]# rpm -qa |grep java
javapackages-tools-3.4.1-11.el7.noarch
java-1.8.0-openjdk-devel-1.8.0.212.b04-0.el7_6.x86_64
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2019a-1.el7.noarch
java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64
java-1.8.0-openjdk-headless-1.8.0.212.b04-0.el7_6.x86_64
2.2 用 yum -y remove java*
方法卸载低版本的 java
[root@localhost ~]# yum -y remove java*
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 java-1.8.0-openjdk.x86_64.1.1.8.0.212.b04-0.el7_6 将被 删除
---> 软件包 java-1.8.0-openjdk-devel.x86_64.1.1.8.0.212.b04-0.el7_6 将被 删除
---> 软件包 java-1.8.0-openjdk-headless.x86_64.1.1.8.0.212.b04-0.el7_6 将被 删除
---> 软件包 javapackages-tools.noarch.0.3.4.1-11.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================================================================
正在删除:
java-1.8.0-openjdk x86_64 1:1.8.0.212.b04-0.el7_6 @updates 529 k
java-1.8.0-openjdk-devel x86_64 1:1.8.0.212.b04-0.el7_6 @updates 40 M
java-1.8.0-openjdk-headless x86_64 1:1.8.0.212.b04-0.el7_6 @updates 104 M
javapackages-tools noarch 3.4.1-11.el7 @base 156 k
事务概要
==========================================================================================================================================================================================
移除 4 软件包
安装大小:145 M
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : 1:java-1.8.0-openjdk-devel-1.8.0.212.b04-0.el7_6.x86_64 1/4
正在删除 : 1:java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64 2/4
正在删除 : 1:java-1.8.0-openjdk-headless-1.8.0.212.b04-0.el7_6.x86_64 3/4
正在删除 : javapackages-tools-3.4.1-11.el7.noarch 4/4
验证中 : 1:java-1.8.0-openjdk-devel-1.8.0.212.b04-0.el7_6.x86_64 1/4
验证中 : 1:java-1.8.0-openjdk-headless-1.8.0.212.b04-0.el7_6.x86_64 2/4
验证中 : 1:java-1.8.0-openjdk-1.8.0.212.b04-0.el7_6.x86_64 3/4
验证中 : javapackages-tools-3.4.1-11.el7.noarch 4/4
删除:
java-1.8.0-openjdk.x86_64 1:1.8.0.212.b04-0.el7_6 java-1.8.0-openjdk-devel.x86_64 1:1.8.0.212.b04-0.el7_6 java-1.8.0-openjdk-headless.x86_64 1:1.8.0.212.b04-0.el7_6
javapackages-tools.noarch 0:3.4.1-11.el7
完毕!
[root@localhost ~]# rpm -qa |grep java
python-javapackages-3.4.1-11.el7.noarch
tzdata-java-2019a-1.el7.noarch
[root@localhost ~]# yum -y remove python-javapackages-3.4.1-11.el7.noarch
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 python-javapackages.noarch.0.3.4.1-11.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================================================================
正在删除:
python-javapackages noarch 3.4.1-11.el7 @base 65 k
事务概要
==========================================================================================================================================================================================
移除 1 软件包
安装大小:65 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : python-javapackages-3.4.1-11.el7.noarch 1/1
验证中 : python-javapackages-3.4.1-11.el7.noarch 1/1
删除:
python-javapackages.noarch 0:3.4.1-11.el7
完毕!
[root@localhost ~]# yum -y remove tzdata-java-2019a-1.el7.noarch
已加载插件:fastestmirror
正在解决依赖关系
--> 正在检查事务
---> 软件包 tzdata-java.noarch.0.2019a-1.el7 将被 删除
--> 解决依赖关系完成
依赖关系解决
==========================================================================================================================================================================================
Package 架构 版本 源 大小
==========================================================================================================================================================================================
正在删除:
tzdata-java noarch 2019a-1.el7 @updates 366 k
事务概要
==========================================================================================================================================================================================
移除 1 软件包
安装大小:366 k
Downloading packages:
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在删除 : tzdata-java-2019a-1.el7.noarch 1/1
验证中 : tzdata-java-2019a-1.el7.noarch 1/1
删除:
tzdata-java.noarch 0:2019a-1.el7
完毕!
[root@localhost ~]# rpm -qa |grep java
[root@localhost ~]#
2.3 清理完旧的 Java 环境就可以开始安装新版本的 JDK 了。
2.3.1 先用命令搜索一下服务器镜像上的 JDK 版本
[root@localhost ~]# yum search jdk
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirror01.idc.hinet.net
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
==================================================================================== N/S matched: jdk ====================================================================================
copy-jdk-configs.noarch : JDKs configuration files copier
java-1.6.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.6.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.6.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.6.0-openjdk-javadoc.x86_64 : OpenJDK API Documentation
java-1.6.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.7.0-openjdk.x86_64 : OpenJDK Runtime Environment
java-1.7.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.7.0-openjdk-demo.x86_64 : OpenJDK Demos
java-1.7.0-openjdk-devel.x86_64 : OpenJDK Development Environment
java-1.7.0-openjdk-headless.x86_64 : The OpenJDK runtime environment without audio and video support
java-1.7.0-openjdk-javadoc.noarch : OpenJDK API Documentation
java-1.7.0-openjdk-src.x86_64 : OpenJDK Source Bundle
java-1.8.0-openjdk.i686 : OpenJDK Runtime Environment
java-1.8.0-openjdk.x86_64 : OpenJDK Runtime Environment 8
java-1.8.0-openjdk-accessibility.i686 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility.x86_64 : OpenJDK accessibility connector
java-1.8.0-openjdk-accessibility-debug.i686 : OpenJDK accessibility connector for packages with debug on
java-1.8.0-openjdk-accessibility-debug.x86_64 : OpenJDK 8 accessibility connector for packages with debug on
java-1.8.0-openjdk-debug.i686 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-debug.x86_64 : OpenJDK Runtime Environment 8 with full debug on
java-1.8.0-openjdk-demo.i686 : OpenJDK Demos
java-1.8.0-openjdk-demo.x86_64 : OpenJDK Demos 8
java-1.8.0-openjdk-demo-debug.i686 : OpenJDK Demos with full debug on
java-1.8.0-openjdk-demo-debug.x86_64 : OpenJDK Demos 8 with full debug on
java-1.8.0-openjdk-devel.i686 : OpenJDK Development Environment
java-1.8.0-openjdk-devel.x86_64 : OpenJDK Development Environment 8
java-1.8.0-openjdk-devel-debug.i686 : OpenJDK Development Environment with full debug on
java-1.8.0-openjdk-devel-debug.x86_64 : OpenJDK Development Environment 8 with full debug on
java-1.8.0-openjdk-headless.i686 : OpenJDK Runtime Environment
java-1.8.0-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 8
java-1.8.0-openjdk-headless-debug.i686 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-1.8.0-openjdk-javadoc.noarch : OpenJDK 8 API documentation
java-1.8.0-openjdk-javadoc-debug.noarch : OpenJDK 8 API documentation for packages with debug on
java-1.8.0-openjdk-javadoc-zip.noarch : OpenJDK 8 API documentation compressed in single archive
java-1.8.0-openjdk-javadoc-zip-debug.noarch : OpenJDK 8 API documentation compressed in single archive for packages with debug on
java-1.8.0-openjdk-src.i686 : OpenJDK Source Bundle
java-1.8.0-openjdk-src.x86_64 : OpenJDK Source Bundle 8
java-1.8.0-openjdk-src-debug.i686 : OpenJDK Source Bundle for packages with debug on
java-1.8.0-openjdk-src-debug.x86_64 : OpenJDK Source Bundle 8 for packages with debug on
java-11-openjdk.i686 : OpenJDK Runtime Environment 11
java-11-openjdk.x86_64 : OpenJDK Runtime Environment 11
java-11-openjdk-debug.i686 : OpenJDK Runtime Environment 11 with full debug on
java-11-openjdk-debug.x86_64 : OpenJDK Runtime Environment 11 with full debug on
java-11-openjdk-demo.i686 : OpenJDK Demos 11
java-11-openjdk-demo.x86_64 : OpenJDK Demos 11
java-11-openjdk-demo-debug.i686 : OpenJDK Demos 11 with full debug on
java-11-openjdk-demo-debug.x86_64 : OpenJDK Demos 11 with full debug on
java-11-openjdk-devel.i686 : OpenJDK Development Environment 11
java-11-openjdk-devel.x86_64 : OpenJDK Development Environment 11
java-11-openjdk-devel-debug.i686 : OpenJDK Development Environment 11 with full debug on
java-11-openjdk-devel-debug.x86_64 : OpenJDK Development Environment 11 with full debug on
java-11-openjdk-headless.i686 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 11
java-11-openjdk-headless-debug.i686 : OpenJDK Runtime Environment with full debug on
java-11-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-11-openjdk-javadoc.i686 : OpenJDK 11 API documentation
java-11-openjdk-javadoc.x86_64 : OpenJDK 11 API documentation
java-11-openjdk-javadoc-debug.i686 : OpenJDK 11 API documentation for packages with debug on
java-11-openjdk-javadoc-debug.x86_64 : OpenJDK 11 API documentation for packages with debug on
java-11-openjdk-javadoc-zip.i686 : OpenJDK 11 API documentation compressed in single archive
java-11-openjdk-javadoc-zip.x86_64 : OpenJDK 11 API documentation compressed in single archive
java-11-openjdk-javadoc-zip-debug.i686 : OpenJDK 11 API documentation compressed in single archive for packages with debug on
java-11-openjdk-javadoc-zip-debug.x86_64 : OpenJDK 11 API documentation compressed in single archive for packages with debug on
java-11-openjdk-jmods.i686 : JMods for OpenJDK 11
java-11-openjdk-jmods.x86_64 : JMods for OpenJDK 11
java-11-openjdk-jmods-debug.i686 : JMods for OpenJDK 11 with full debug on
java-11-openjdk-jmods-debug.x86_64 : JMods for OpenJDK 11 with full debug on
java-11-openjdk-src.i686 : OpenJDK Source Bundle 11
java-11-openjdk-src.x86_64 : OpenJDK Source Bundle 11
java-11-openjdk-src-debug.i686 : OpenJDK Source Bundle for packages with debug on
java-11-openjdk-src-debug.x86_64 : OpenJDK Source Bundle 11 for packages with debug on
java-latest-openjdk.x86_64 : OpenJDK Runtime Environment 12
java-latest-openjdk-debug.x86_64 : OpenJDK Runtime Environment 12 with full debug on
java-latest-openjdk-demo.x86_64 : OpenJDK Demos 12
java-latest-openjdk-demo-debug.x86_64 : OpenJDK Demos 12 with full debug on
java-latest-openjdk-devel.x86_64 : OpenJDK Development Environment 12
java-latest-openjdk-devel-debug.x86_64 : OpenJDK Development Environment 12 with full debug on
java-latest-openjdk-headless.x86_64 : OpenJDK Headless Runtime Environment 12
java-latest-openjdk-headless-debug.x86_64 : OpenJDK Runtime Environment with full debug on
java-latest-openjdk-javadoc.x86_64 : OpenJDK 12 API documentation
java-latest-openjdk-javadoc-debug.x86_64 : OpenJDK 12 API documentation for packages with debug on
java-latest-openjdk-javadoc-zip.x86_64 : OpenJDK 12 API documentation compressed in single archive
java-latest-openjdk-javadoc-zip-debug.x86_64 : OpenJDK 12 API documentation compressed in single archive for packages with debug on
java-latest-openjdk-jmods.x86_64 : JMods for OpenJDK 12
java-latest-openjdk-jmods-debug.x86_64 : JMods for OpenJDK 12 with full debug on
java-latest-openjdk-src.x86_64 : OpenJDK Source Bundle 12
java-latest-openjdk-src-debug.x86_64 : OpenJDK Source Bundle 12 for packages with debug on
ldapjdk-javadoc.noarch : Javadoc for ldapjdk
icedtea-web.x86_64 : Additional Java components for OpenJDK - Java browser plug-in and Web Start implementation
ldapjdk.noarch : The Mozilla LDAP Java SDK
openprops.noarch : An improved java.util.Properties from OpenJDK
名称和简介匹配 only,使用“search all”试试。
2.3.2 选择 java-latest-openjdk-devel.x86_64
安装。
java-latest-openjdk-devel.x86_64 : OpenJDK Development Environment 12
就是最新版的 openjdk12。另外 java-latest-openjdk.x86_64
这个是 JRE 运行时环境,只有 java 命令,没有 javac 命令。[root@localhost ~]# yum -y install java-latest-openjdk-devel.x86_64
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.tuna.tsinghua.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
epel/x86_64/primary_db | 6.8 MB 00:02:44
正在解决依赖关系
--> 正在检查事务
---> 软件包 java-latest-openjdk-devel.x86_64.1.12.0.1.12-1.rolling.el7 将被 安装
--> 正在处理依赖关系 java-latest-openjdk(x86-64) = 1:12.0.1.12-1.rolling.el7,它被软件包 1:java-latest-openjdk-devel-12.0.1.12-1.rolling.el7.x86_64 需要
--> 正在检查事务
---> 软件包 java-latest-openjdk.x86_64.1.12.0.1.12-1.rolling.el7 将被 安装
--> 正在处理依赖关系 java-latest-openjdk-headless(x86-64) = 1:12.0.1.12-1.rolling.el7,它被软件包 1:java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64 需要
--> 正在检查事务
---> 软件包 java-latest-openjdk-headless.x86_64.1.12.0.1.12-1.rolling.el7 将被 安装
--> 正在处理依赖关系 tzdata-java >= 2015d,它被软件包 1:java-latest-openjdk-headless-12.0.1.12-1.rolling.el7.x86_64 需要
--> 正在处理依赖关系 javapackages-tools,它被软件包 1:java-latest-openjdk-headless-12.0.1.12-1.rolling.el7.x86_64 需要
--> 正在检查事务
---> 软件包 javapackages-tools.noarch.0.3.4.1-11.el7 将被 安装
--> 正在处理依赖关系 python-javapackages = 3.4.1-11.el7,它被软件包 javapackages-tools-3.4.1-11.el7.noarch 需要
---> 软件包 tzdata-java.noarch.0.2019a-1.el7 将被 安装
--> 正在检查事务
---> 软件包 python-javapackages.noarch.0.3.4.1-11.el7 将被 安装
--> 解决依赖关系完成
依赖关系解决
=============================================================================================================
Package 架构 版本 源 大小
=============================================================================================================
正在安装:
java-latest-openjdk-devel x86_64 1:12.0.1.12-1.rolling.el7 epel 4.5 M
为依赖而安装:
java-latest-openjdk x86_64 1:12.0.1.12-1.rolling.el7 epel 201 k
java-latest-openjdk-headless x86_64 1:12.0.1.12-1.rolling.el7 epel 39 M
javapackages-tools noarch 3.4.1-11.el7 base 73 k
python-javapackages noarch 3.4.1-11.el7 base 31 k
tzdata-java noarch 2019a-1.el7 updates 187 k
事务概要
=============================================================================================================
安装 1 软件包 (+5 依赖软件包)
总下载量:44 M
安装大小:190 M
Downloading packages:
(1/6): python-javapackages-3.4.1-11.el7.noarch.rpm | 31 kB 00:00:00
(2/6): javapackages-tools-3.4.1-11.el7.noarch.rpm | 73 kB 00:00:00
(3/6): tzdata-java-2019a-1.el7.noarch.rpm | 187 kB 00:00:00
warning: /var/cache/yum/x86_64/7/epel/packages/java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID 352c64e5: NOKEY
java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64.rpm 的公钥尚未安装
(4/6): java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64.rpm | 201 kB 00:00:12
(5/6): java-latest-openjdk-devel-12.0.1.12-1.rolling.el7.x86_64.rpm | 4.5 MB 00:03:01
(6/6): java-latest-openjdk-headless-12.0.1.12-1.rolling.el7.x86_64.rpm | 39 MB 00:09:44
-------------------------------------------------------------------------------------------------------------
总计 77 kB/s | 44 MB 00:09:44
从 file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7 检索密钥
导入 GPG key 0x352C64E5:
用户ID : "Fedora EPEL (7) <epel@fedoraproject.org>"
指纹 : 91e9 7d7c 4a5e 96f1 7f3e 888f 6a2f aea2 352c 64e5
软件包 : epel-release-7-11.noarch (@extras)
来自 : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
正在安装 : tzdata-java-2019a-1.el7.noarch 1/6
正在安装 : python-javapackages-3.4.1-11.el7.noarch 2/6
正在安装 : javapackages-tools-3.4.1-11.el7.noarch 3/6
正在安装 : 1:java-latest-openjdk-headless-12.0.1.12-1.rolling.el7.x86_64 4/6
正在安装 : 1:java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64 5/6
正在安装 : 1:java-latest-openjdk-devel-12.0.1.12-1.rolling.el7.x86_64 6/6
验证中 : 1:java-latest-openjdk-12.0.1.12-1.rolling.el7.x86_64 1/6
验证中 : python-javapackages-3.4.1-11.el7.noarch 2/6
验证中 : 1:java-latest-openjdk-headless-12.0.1.12-1.rolling.el7.x86_64 3/6
验证中 : tzdata-java-2019a-1.el7.noarch 4/6
验证中 : javapackages-tools-3.4.1-11.el7.noarch 5/6
验证中 : 1:java-latest-openjdk-devel-12.0.1.12-1.rolling.el7.x86_64 6/6
已安装:
java-latest-openjdk-devel.x86_64 1:12.0.1.12-1.rolling.el7
作为依赖被安装:
java-latest-openjdk.x86_64 1:12.0.1.12-1.rolling.el7
java-latest-openjdk-headless.x86_64 1:12.0.1.12-1.rolling.el7
javapackages-tools.noarch 0:3.4.1-11.el7
python-javapackages.noarch 0:3.4.1-11.el7
tzdata-java.noarch 0:2019a-1.el7
完毕!
2.3.3 装完后查看一下 JDK 版本:(也是验证 java 和 javac 命令)
[root@localhost ~]# java -version
openjdk version "12.0.1" 2019-04-16
OpenJDK Runtime Environment 19.3 (build 12.0.1+12)
OpenJDK 64-Bit Server VM 19.3 (build 12.0.1+12, mixed mode, sharing)
[root@localhost ~]# javac -version
javac 12.0.1
3. 安装 Maven
3.1 先检查本机是否已经安装了 maven
[root@localhost ~]# mvn -v
-bash: mvn: 未找到命令
3.2 去 Maven 官网下载二进制文件。
3.2.1 我们先访问 apache-maven 网站的下载界面
右键点击
apache-maven-3.6.1-bin.tar.gz
复制链接地址 http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
3.2.2 用 wget 下载 apache-maven-3.6.1-bin.tar.gz
到本地:
[root@localhost ~]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
--2019-06-23 20:45:21-- http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.1/binaries/apache-maven-3.6.1-bin.tar.gz
正在解析主机 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)... 101.6.8.193, 2402:f000:1:408:8100::1
正在连接 mirrors.tuna.tsinghua.edu.cn (mirrors.tuna.tsinghua.edu.cn)|101.6.8.193|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:9136463 (8.7M) [application/octet-stream]
正在保存至: “apache-maven-3.6.1-bin.tar.gz”
100%[===================================================================>] 9,136,463 3.32MB/s 用时 2.6s
2019-06-23 20:45:23 (3.32 MB/s) - 已保存 “apache-maven-3.6.1-bin.tar.gz” [9136463/9136463])
3.3 解压缩 apache-maven-3.6.1-bin.tar.gz
文件:
[root@localhost ~]# tar -zxf apache-maven-3.6.1-bin.tar.gz
[root@localhost ~]#
3.4 设置 maven 的路径
.bash_profile
文件(vi .bash_profile
),添加 maven 路径:$HOME/apache-maven-3.6.1/bin
到 PATH 环境变量。# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin:$HOME/apache-maven-3.6.1/bin
export PATH
3.5 切换一下用户,使 PATH 生效
su -
命令重新切换到 root 用户,可使 PATH 生效[root@localhost ~]# su -
上一次登录:日 6月 23 21:02:56 CST 2019pts/0 上
3.6 查看 mvn 版本(顺便测试一下 mvn 是否可用)
[root@localhost ~]# mvn -v
Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-05T03:00:29+08:00)
Maven home: /root/apache-maven-3.6.1
Java version: 12.0.1, vendor: N/A, runtime: /usr/lib/jvm/java-12-openjdk-12.0.1.12-1.rolling.el7.x86_64
Default locale: zh_CN, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-957.21.2.el7.x86_64", arch: "amd64", family: "unix"
4. 安装 MySQL
4.1 centos7 上安装并启动 MySQL8 的命令步骤
- 1)
wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
- 2)
yum -y install mysql80-community-release-el7-3.noarch.rpm
- 3)
yum -y install mysql-community-server
(从 oracle 官网下载 mysql 速度较慢,耐心等) - 4)
systemctl start mysqld.service
(启动 mysql)
5. 配置 MySQL8
5.1 获取 root@localhost 的初始密码
root@%
和本地连接 root@locahost
提供了不同的密码验证方式)。MySQL8 将本地连接的初始密码放到了/var/log/mysqld.log 文件中;我们可以用 cat /var/log/mysqld.log | grep password
命令查看初始密码。[root@VM_0_11_centos solo]# cat /var/log/mysqld.log | grep password
2019-06-23T03:35:57.941668Z 5 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: n=Ti,P4?J(uE
n=Ti,P4?J(uE
就是初始密码。5.2 使用初始密码登录 mysql
[root@VM_0_11_centos solo]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.16 MySQL Community Server - GPL
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
5.3 修改 root 密码
mysql> use mysql
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A
Database changed
mysql> select host, user, plugin from user;
+-----------+------------------+-----------------------+
| host | user | plugin |
+-----------+------------------+-----------------------+
| % | root | mysql_native_password |
| localhost | mysql.infoschema | caching_sha2_password |
| localhost | mysql.session | caching_sha2_password |
| localhost | mysql.sys | caching_sha2_password |
| localhost | root | caching_sha2_password |
+-----------+------------------+-----------------------+
5 rows in set (0.00 sec)
5.3.1 修改密码策略
mysql> SHOW VARIABLES LIKE 'validate%';
+--------------------------------------+--------+
| Variable_name | Value |
+--------------------------------------+--------+
| validate_password.check_user_name | ON |
| validate_password.dictionary_file | |
| validate_password.length | 8 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | MEDIUM |
| validate_password.special_char_count | 1 |
+--------------------------------------+--------+
7 rows in set (0.01 sec)
mysql> set global validate_password.check_user_name=0;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.length=1;
Query OK, 0 rows affected (0.00 sec)
mysql> set global validate_password.policy=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SHOW VARIABLES LIKE 'validate%';
+--------------------------------------+-------+
| Variable_name | Value |
+--------------------------------------+-------+
| validate_password.check_user_name | OFF |
| validate_password.dictionary_file | |
| validate_password.length | 4 |
| validate_password.mixed_case_count | 1 |
| validate_password.number_count | 1 |
| validate_password.policy | LOW |
| validate_password.special_char_count | 1 |
+--------------------------------------+-------+
7 rows in set (0.00 sec)
5.3.2 修改密码
mysql> alter user'root'@'localhost' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED by '123456';
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.00 sec)
5.4 建库 solo
mysql> create database solo;
Query OK, 1 row affected (0.01 sec)
6. solo 项目配置
注:没有装 git 命令请先用
yum -y install git
命令安装。6.1 克隆 solo 项目
git clone --recurse-submodules https://gitee.com/b3logos/solo.git
(国内通过码云下载较快):[root@VM_0_11_centos ~]# git clone --recurse-submodules https://gitee.com/b3logos/solo.git
Cloning into 'solo'...
remote: Enumerating objects: 44272, done.
remote: Counting objects: 100% (44272/44272), done.
remote: Compressing objects: 100% (13923/13923), done.
remote: Total 44272 (delta 24766), reused 44214 (delta 24708)
Receiving objects: 100% (44272/44272), 88.66 MiB | 2.85 MiB/s, done.
Resolving deltas: 100% (24766/24766), done.
Submodule 'src/main/webapp/skins' (https://github.com/b3log/solo-skins) registered for path 'src/main/webapp/skins'
Cloning into 'src/main/webapp/skins'...
remote: Enumerating objects: 1193, done.
remote: Counting objects: 100% (1193/1193), done.
remote: Compressing objects: 100% (732/732), done.
remote: Total 11743 (delta 845), reused 767 (delta 460), pack-reused 10550
Receiving objects: 100% (11743/11743), 23.59 MiB | 256.00 KiB/s, done.
Resolving deltas: 100% (8803/8803), done.
Submodule path 'src/main/webapp/skins': checked out 'ca0de62bddd9e3bb8732e46b4239001d7f238303'
[root@VM_0_11_centos ~]#
6.2 启动 solo 博客系统
[root@VM_0_11_centos ~]# cd solo
[root@VM_0_11_centos ~]# mvn jetty:run
6.3 登录 solo 博客系统
http://【你的服务器IP】:8080/
登录系统,初始化博客,大功告成。简介
Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。
这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!
欢迎到 Solo 官方讨论区了解更多。同时也欢迎关注 B3log 开源社区微信公众号 B3log开源
:
- Markdown 编辑器支持三种编辑模式:所见即所得 / 即时渲染 / 分屏预览
- 标签聚合分类
- 自定义导航链接
- 随机文章 / 相关文章 / 置顶 / 更新提醒
- 自定义文章永久链接 / 签名档
- 配置站点 SEO 参数 / 公告 / 页脚
- 代码高亮 / 数学公式 / 流程图 / 五线谱
- 多皮肤,多端适配
- 多语言 / 国际化
- 友情链接管理
- 多用户写作,团队博客
- Hexo / Jekyll / Markdown 导入
- SQL / JSON / Markdown 导出
- Atom / RSS / Sitemap
- CDN 静态资源分离,可配置 jsDelivr CDN 分发
- 拉取 GitHub 仓库和自动备份
- 内置 HTTPS+CDN 文件存储
- 支持生成导出静态站点,用于发布 GitHub Pages
皮肤
目前内置的皮肤如下,可点击进行预览:
- Bubble
- Casper
- Pinghsu
- Jane
- nijigen
- Medium
- 9IPHP
- Andrea
- Bruce
- Community
- favourite
- Finding
- i-nove
- metro-hot
- NeoEase
- next
- owmx-3.0
- timeline
- tree-house
- yilia
欢迎在这里推荐好看的皮肤,我们会尽量进行制作。
Solo 支持“动静两用”:
- 动态博客:在服务器上搭建,进程常驻内存运行,在线使用
- 静态博客:在本地电脑运行,写作完成后生成导出静态站点
更多视频教程陆续制作中,欢迎到 B 站关注我:报废程序员D。
本地运行主要用于试用或者生成静态站点,生成静态站点的用法请参考这里。
(视频演示教程请看这里)
下载最新的 Solo 包解压,进入解压目录执行:
- Windows:
java -cp "lib/*;." org.b3log.solo.Server
- Unix-like:
java -cp "lib/*:." org.b3log.solo.Server
如果你有 Java 开发环境,可参考这里通过源码构建运行(视频演示教程请看这里)。
Docker 方式部署是动态博客用法,主要用于在服务器上部署动态博客。
(视频演示教程请看这里)
docker pull b3log/solo
注意:对于如下命令,如果你不确定如何使用 \
来进行换行,就不要换行了,一行内写完整条命令。
-
使用 MySQL
手动建库(库名
solo
,字符集使用utf8mb4
,排序规则utf8mb4_general_ci
):create database solo default character set utf8mb4 collate utf8mb4_general_ci; create user 'root'@'127.0.0.1' identified by '123456'; grant all privileges on *.* to 'root'@'127.0.0.1'; flush privileges;
启动容器:
docker run --detach --name solo --network=host \
--env RUNTIME_DB="MYSQL" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="com.mysql.cj.jdbc.Driver" \
--env JDBC_URL="jdbc:mysql://127.0.0.1:3306/solo?useUnicode=yes&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
为了简单,使用了主机网络模式来连接主机上的 MySQL。
使用 H2 Database
docker run --detach --name solo --volume ~/solo_h2/:/opt/solo/h2/ --publish 8080:8080 \
--env RUNTIME_DB="H2" \
--env JDBC_USERNAME="root" \
--env JDBC_PASSWORD="123456" \
--env JDBC_DRIVER="org.h2.Driver" \
--env JDBC_URL="jdbc:h2:/opt/solo/h2/db;MODE=MYSQL" \
b3log/solo --listen_port=8080 --server_scheme=http --server_host=localhost --server_port=
启动参数说明:
--listen_port
:进程监听端口--server_scheme
:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为https
--server_host
:最终访问域名或公网 IP,不要带端口--server_port
:最终访问端口,使用浏览器默认的 80 或者 443 的话值留空即可
完整启动参数的说明可以使用 -h
来查看。
默认通过 log4j2 将日志打印到标准输出流,可以通过 docker logs solo
进行查看。如果需要覆盖 log4j 配置,可通过挂载文件实现:
--volume ~/log4j2.xml:/opt/solo/log4j2.xml
如果需要使用第三方皮肤,可以挂载目录 skins,目录结构请参考原版 skins:
--volume ~/skins/:/opt/solo/skins/
- 拉取最新镜像
- 重启容器
可参考这里编写一个重启脚本,并通过 crontab 每日凌晨运行来实现自动更新。
upstream backend { server localhost:8080; # Solo 监听端口 } server { listen 80; server_name 88250.b3log.org; # 博客域名 access_log off; location / { proxy_pass http://backend$request_uri; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; client_max_body_size 10m; } }
请务必配置:
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
否则访问页面可能会出现“Latke 配置错误”或者样式异常;统计在线访客功能会不正常。
Solo 使用 木兰宽松许可证, 第2版 开源协议。
- jQuery:前端 JavaScript 工具库
- Vditor:浏览器端的 Markdown 编辑器
- Highlight.js:前端代码高亮库
- pjax:pushState + AJAX = pjax
- jsoup:Java HTML 解析器
- flexmark:Java Markdown 处理库
- Apache Commons:Java 工具库集
- Latke:以 JSON 为主的 Java Web 框架
初始化成功后请务必查看自动发布的第一篇文章,里面有一些必要的操作,请务必完成。然后请到管理后台 -> 工具 -> 偏好设定中进行一下博客的细节配置。
- 博客基本信息:标题、子标题、SEO 信息
- HTML head:可以配置脚本,比如百度统计
- 公告:可以使用 HTML 和脚本进行配置
- 页脚:主要用来放备案信息,也可以使用 HTML 和脚本进行配置
最多可以配置 3 个签名档,发布文章的时候选择一个使用,可以使用 HTML 和脚本进行配置。
下面是一些比较有特色或重要的参数:
- 列表显示方式:仅标题/标题 + 摘要/标题 + 正文
- 各种分页参数
- 文章更新提示:启用后一旦某篇文章更新过,则会在文章标题处显示“有更新”的提示,并且排序靠前
- 允许同步 GitHub 仓库:将文章数据自动导出到 GitHub 仓库,用于展示和备份
安全第一,血泪的教训 😢
- H2:备份 home 目录下的 solo_h2 文件夹
- MySQL:使用 MySQL 相关备份工具
可在工具 - 偏好设定 - 参数设置中勾选“备份所有文章到社区”,开启后将每隔 24 小时自动备份所有文章(包括草稿和加密文章)到社区,具体细节请参考 Solo 拉取 GitHub 仓库和自动备份。
可在工具 - 偏好设定 - 参数设置中填写 GitHub token,填写后将每隔 24 小时自动备份公开文章(不包括草稿和加密文章)到你的 GitHub 仓库 solo-blog
,具体细节请参考 solo-blog 仓库同步功能回来了。
可以几个用户同时使用一个博客发布文章,主要用在团队博客这个场景。权限方面做了简单隔离,非管理员用户可以看到其他用户的博文/评论列表,但是不能进行操作。
提供两种订阅供稿:Atom 1.0、RSS 2.0:
- Atom: /rss.xml
- RSS: /atom.xml
不要用浏览器直接打开,请通过阅读器查看。另外,Solo 也能生成全站文章的 sitemap.xml。
通过 URL 带参(比如 http://88250.b3log.org/?skin=Finding
)来确定渲染使用的皮肤。
使用场景举例:
- 只有在首页(
/
)会取参数skin=xxx
- 如果带有就记录到 Cookie 里面,如果带有
skin=default
或皮肤不存在则清空 Cookie - 如果要切换成后台默认的皮肤,在首页带参
skin=default
“站外相关文章”指的是其他人使用 Solo 发布的文章,该文章含有与你的文章相同的标签。该功能主要是为了加强各个 Solo 博客之间的互动性,让博客访问者可以更有效地访问到相关的内容。
这是 B3log 构思的一部分实现,请大家积极参与进来 🙏
Solo 和 Pipe 的定位是 B3log 分布式社区的博客端节点,并不是通常意义上的独立博客,所以账号体系需要进行统一,否则带来的问题会很多,这也是一路下来探索的,具体经历细节请看这里。
在 Solo v3 之前一直是独立账号体系,但经过长时间验证效果并不理想:
- 不方便,用户需要在社区端和博客端配置账号关联关系
- 不安全,账号的关联关系需要双向验证,如果不验证账号归属,会被冒名
这两个问题是矛盾的,所以为了解决它需要将账号在 B3log 网络中进行唯一化。一开始的设计方案是通过公私钥(类似区块链的钱包原理),但这个方案在现阶段过于复杂,用户使用门槛有点高所以暂时放弃了。公私钥的方案在星火项目里进行过测试验证,技术上应该没问题,以后的鱼塘项目可能会采用这个方案。
所以再次重申一下,Solo 和 Pipe 是 B3log 分布式社区的博客端节点。举个最容易理解的例子,这就好比某些厂商的软件,没有这个厂商的账号是用不了的。打通其他网络的方案是在博客端或者社区端接入其他网络的账号,目前已经在链滴社区上接入 GitHub 登录(可在账号设置中绑定),Solo 可通过 GitHub token 来将文章同步到自己的仓库,避免整个 B3log 网络过度封闭内卷。
最后,希望目前加入到 B3log 的用户是认可这个设计的,如果不认可的话其实就没必要加入使用了,节省自己时间同时也能保护 B3log。当然,不排除以后设计还会有所变化,欢迎参与思考讨论,谢谢。
可考虑使用 Solo 的静态站点支持,本地写作完成后导出静态站点,发布 GitHub Pages 等服务。
如果还是想使用动态博客的话,可使用内嵌的 H2 数据库代替 MySQL。但建议还是进行内存升级,然后使用 Docker 和 MySQL 部署,这样不仅可以通过更新镜像进行平滑升级,还能使用 MySQL 相关工具更方便地进行数据库运维。
请在 pom.xml 中搜索 maven-assembly-plugin
的注释进行配置即可。请注意:使用 jar 运行不支持:
- 静态站点生成
- 可能存在其他未知问题
建议尽量不要打 jar 部署,服务器上请通过 Docker 部署。
请参考这里进行配置。
请通过 NGINX 反代静态资源实现。
Solo 默认是使用内建的 flexmark 进行 md 渲染,可能对有的场景下的渲染效果不是很好。如果你想要获得更好的 md 渲染效果请参考这里。
在线访问计数是通过访问者 IP 去重的,每 10 分钟定时刷新一次。如果用了反向代理,请在代理配置部分加入客户端地址标头。比如 NGINX 需要加入如下配置:
proxy_set_header X-Real-IP $remote_addr;
可通过签名档、公告栏中插入 HTML、JS 代码来实现。
可通过在页脚配置中插入 HTML、JS 代码来实现。
启动时加入命令行参数:
--static_server_scheme=https
--static_server_host=cdn.jsdelivr.net
--static_server_port=
--static_path=/gh/88250/solo/src/main/resources
请注意:
- 以上配置仅支持内置皮肤,如果挂载了第三方皮肤的话请按需调整
- 中国大陆地区可能无法访问 jsDelivr CDN
Solo 的第一个版本发布于 2010
年,永不断更 😼
Solo 从第一版开始就支持平滑升级,从 v3.0.0 开始支持跨版本升级。在程序升级、数据兼容迁移方面我们做了很多工作。另外,Solo 还支持将数据导出成多种格式,所有的这些努力为的就是让大家能够免去后顾之忧,将精力更多放在创作和分享上。
如果你在使用 Solo 过程中碰到问题或者有需求要提,欢迎跟帖,我们会在第一时间回复;如果你对 Solo 开发方面感兴趣,请参考 Solo 从设计到实现。from https://github.com/88250/solo
(https://ld246.com/article/1579053576274 ,Solo 生成导出静态站点 )