0%

使用Docker部署Solo博客系统

序言

为什么又搭建了一个博客呢?国内的高性能服务器,闲着也是闲着,还是多折腾一下吧!

Solo博客系统是用Java语言开发的博客程序,具有优异的性能。这里使用Docker部署,也是官方推荐的部署方式,配合宝塔控制面板,搭建过程还是比较方便的。这里记录一下我的搭建过程以及使用Solo的一些总结。

我使用Solo搭建完成的网站: https://article.zhyong.cn/

Github地址:b3log/solo: 🎸 一款小而美的博客系统,专为程序员设计。
官方网站:Solo - Java 博客系统,Java 开源博客系统

相关环境

服务器系统:CentOS Linux 7.6.1810
Nginx版本:1.16.0
Mysql版本:5.7.26
本地SSH连接工具:PuTTY Release 0.71

搭建过程

官方教程:Solo 用户指南 - 黑客派

这里我使用宝塔面板安装的Nginx和Mysql,Mysql数据库推荐5.7及以上。由于使用Docker部署,需要简单了解一下Docker的使用,推荐菜鸟教程:Docker 教程 | 菜鸟教程,我们可以在这里检索Docker的各版本的安装教程以及相关使用。

这里以CentOS为例,介绍从安装Docker到部署(可查看上面的官方教程的链接)Solo的过程。

CentOS安装Docker

首先卸载旧版本Docker:

1
2
3
4
5
6
7
8
9
10
sudo yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-selinux \
docker-engine-selinux \
docker-engine

安装最新版Docker

1
2
3
4
5
6
7
8
9
10
#安装必要的系统工具
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
#添加软件源
sudo yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#更新yum缓存
sudo yum makecache fast
#安装Docker-ce
sudo systemctl start docker
#测试是否安装成功
docker run hello-world

若能正常运行hello-world,则表示docker以及成功安装好了。

使用宝塔面板新建一个网站

首先我们看一下官方的Docker搭建代码:

1
2
3
4
5
6
7
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" \
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 的话值留空即可

这里我使用的是二级域名,域名为article.zhyong.cn,暂不建立数据库。

然后我们可以申请SSL证书,直接在面板里申请即可,我申请的是Let’s Encrypt证书,并强制HTTPS访问。

然后在宝塔面板的数据库中手动添加数据库,根据Solo博客系统的数据库要求创建:创建数据库名称为solo(或其它,对应位置修改Docker部署代码即可),字符集使用utf8mb4,排序规则 utf8mb4_general_ci

然后部署我们的Docker代码:

1
2
3
4
5
6
7
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=True&serverTimezone=UTC" \
b3log/solo --listen_port=8080 --server_scheme=https --server_host=article.zhyong.cn --server_port=

这样我们就成功使用Docker部署了Solo博客系统并启动了,接下来我们使用Nginx配置反向代理。

官方的Nginx反向代理代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
upstream backend {
server localhost:8080; # Solo 监听端口
}

server {
listen 80;
server_name 88250.b3log.org; # 博客域名,如我的就为 article.zhyong.cn

access_log off;

location / {
proxy_pass http://backend$request_uri;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Real-IP $remote_addr;
client_max_body_size 10m;
}
}

这里我们仅需参考一下即可,因为我们使用宝塔面板时自动帮我们生成了Nginx的一些配置,我们手动修改小部分即可。

这样全部完成,现在就打开网站吧~

若出现问题,可以使用Docker删除容器再重新部署。

1
2
docker stop solo
docker rm solo

部署过程中遇到的问题:docker启动代码中的--server_host必须使用对应的域名,否则打开网站报错!

使用感受及总结

总之,Solo博客系统是非常优秀的,简单说一下我的感受。

最大的特色:小而美(我觉得介于WordPress和Typecho之间)

它是轻量级的,使用起来非常方便,后台使用Github账号登录管理,且连接官方黑客派的Github登录账号,这样,官方为我们个人博客内置了文件存储服务(Solo 内置 HTTPS + CDN 文件存储 - 黑客派),真的非常良心。后台管理时,不会刷新整个页面,以及拥有一个非常简洁美观的Markdown编辑器,内置了很多款美观大方的主题,可随意切换,并且手机端和电脑端可使用不同的主题(完爆自适应=.=),并且内置了30+代码高亮主题,可随意选择。

这里讲一下我的简单优化:

  1. 看板娘插件严重拖慢网站的访问速度,在工具——插件管理中将其关闭
  2. 网站引用了Github头像,而此头像网址打开速度超慢甚至打不开,在工具——用户管理中更新一下头像地址即可
  3. 代码高亮主题默认为Github,此js文件打开速度过慢,暂改为dracula

目前博客总体非常棒,内置的主题使用起来真的方便,美观、大方,加上内置的文件存储服务,棒棒棒~