通过宝塔面板搭建最新版 3.6.7 solo 博客(目测应该是最简单的搭建方法)

本贴最后更新于 1223 天前,其中的信息可能已经时移俗易

目前 solo 从 3.6.7 版本开始已经不提供 war 包部署了,对于一直是下载 war 包部署的我,有点儿一时间不知所措,研究了几天,成功用最简单的方式用上了最新版,开始:

1 环境

我用的是腾讯云,系统是 Centos 7.5,系统集成了一个自带的宝塔面板,可以通过重装系统达到这个要求。

image.png

在服务器安全组开放 8888 宝塔面板访问端口,在通过 http://{服务器 ip}:8888 访问面板进入到面板主页(账号和密码按提示操作就能获取到),会提示安装一堆组件,我选择安装 Nginx 1.16,MySQL 5.7,其他的不用安装。

打开宝塔面板软件商店,安装 Docker 管理器 2.2,最终需要安装的软件这里截图一个:

image.png

2 搭建 solo

2.1 新建数据库

直接上图:

image.png
image.png

这里的密码是面板随机分配的,可以保持默认。

2.2 拉取 solo 镜像

打开 Docker 管理器 2.2,获取镜像,直接上图:

image.png

2.3 创建容器

这里使用的是命令行创建镜像,通过 SSH 连接上服务器,运行命令:

docker run --detach --name solo --network=host \
    --env RUNTIME_DB="MYSQL" \
    --env JDBC_USERNAME="solo" \
    --env JDBC_PASSWORD="你的密码" \
    --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=8585 --server_scheme=http --server_host=solo.kangaroohy.top --server_port=

启动参数说明(参考 solo 用户指南):

  • --listen_port:进程监听端口
  • --server_scheme:最终访问协议,如果反代服务启用了 HTTPS 这里也需要改为 https
  • --server_host:最终访问域名或公网 IP,不要带端口
  • --server_port:最终访问端口,使用浏览器默认的 80 或者 443 的话值留空即可

这里我的服务器监听端口 --listen_port 是 8585,你可以改成自己想要的。

注:

  • 此处 --listen_port 端口不能 80,不然会和 nginx 默认监听端口(也就是 --server_port)冲突,会报 400 错误。

image.png

容器创建成功后,返回到宝塔面板,进去 Docker 管理器 2.2,查看 solo 容器是否创建成功。

image.png

2.4 反向代理

在宝塔面板新建一个网站,如图:

image.png

其他的默认即可,提交以后,就完成网址的创建。

点击设置,修改站点设置如图:

image.png

注:
请把域名解析到服务器。

至此,反向代理完成。

打开网址:http://solo.kangaroohy.top , 熟悉的画面它来了。

image.png

2.5 SSL

可以在步骤 2.4 中选择 ssl,顺便把 ssl 配上,里边有免费的可供使用,按操作来就行了。

当然,如果要升级 SSL,需要在创建容器的时候,需要指定 --server_scheme=https,如果遇到在宝塔里申请 SSL 失败,可以去阿里云或者腾讯云申请免费的 SSL,然后在宝塔里设置就好了,如图:

image.png

3 补充

3.1 皮肤挂载

参考这里:从零开始安装 solo 博客

# 切换到服务器根目录
cd /
# 创建主目录
mkdir dockerData

我的目录和这篇里的一样,/dockerData/solo/skins/,然后把中意的皮肤挂载到这个目录下,我挂载了 4 个皮肤,如下:

image.png

删掉之前的 solo 容器,重新创建容器

# 停掉solo
docker stop solo
# 删除容器
docker rm solo
docker run --detach --name solo --network=host \
    --env RUNTIME_DB="MYSQL" \
    --env JDBC_USERNAME="solo" \
    --env JDBC_PASSWORD="你的密码" \
    --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" \
    --volume /dockerData/solo/skins/:/opt/solo/skins/ \
    b3log/solo --listen_port=8585 --server_scheme=http --server_host=solo.kangaroohy.top --server_port=

在之前的基础上,新加了一个皮肤挂载 --volume /dockerData/solo/skins/:/opt/solo/skins/

3.2 Docker

docker 常用命令:Docker 容器操作 常用命令

好了,是时候去迁移数据库信息了。。

  • Solo

    Solo 是一款小而美的开源博客系统,专为程序员设计。Solo 有着非常活跃的社区,可将文章作为帖子推送到社区,来自社区的回帖将作为博客评论进行联动(具体细节请浏览 B3log 构思 - 分布式社区网络)。

    这是一种全新的网络社区体验,让热爱记录和分享的你不再感到孤单!

    1424 引用 • 10041 回帖 • 469 关注
  • Docker

    Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的操作系统上。容器完全使用沙箱机制,几乎没有性能开销,可以很容易地在机器和数据中心中运行。

    475 引用 • 899 回帖
  • 宝塔

    天王盖地虎,宝塔镇河妖。

    25 引用 • 76 回帖
1 操作
kangaroo1122 在 2020-11-21 14:21:24 更新了该帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • dakoukou

    按步骤 报了 502 nginx 百度各种方法都没有 。。。。 大佬有遇到 502 问题吗

    2 回复
  • Lei0917

    我的报 400

  • Lei0917

    400 Bad Request

    Request Header Or Cookie Too Large


    nginx
    按步骤报这个错误

  • Lei0917

    感谢楼主 我已成功搭建
    我刚刚遇到的 400 问题是应为在创建容器的时候设置的 listen_port 为 80 跟宝塔默认端口一样了 在反向代理的时候指向 80 了
    解决方法 只要修改下 port 端口号就行了

    1 回复
  • kangaroo1122

    是的,监听端口不要和 nginx、对外端口冲突

  • kangaroo1122

    镜像启动成功了没

  • ztuio

    到了第 2.3 容器就没启动了 404 错误

  • ztuio

    image.png

  • songshanyuwu

    感谢大大的分享,让我在各种错误折磨中解脱出来,按照操作一遍成功。

    1 回复
  • kangaroo1122

    👍 👍

请输入回帖内容 ...