目前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 容器操作 常用命令

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

上一篇 下一篇