iMisty的技术栈

iMisty的技术栈

Solo博客部署

Solo博客部署

官方文档

官方部署文档

推荐使用Docker部署

  • docker 环境部署(略)

注意官网不推荐使用源码构建

我们不建议通过 war 发布包或者源码构建部署,因为这样的部署方式在将来有新版本发布时升级会比较麻烦。 这两种方式请仅用于本地试用,线上生产环境建议通过 Docker 部署。

docker部署

  • docker pull b3log/solo
    docker run --detach --name solo --network=host     --env RUNTIME_DB="MYSQL"     --env JDBC_USERNAME="misty"  --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&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"     b3log/solo --listen_port=8085 --server_scheme=http --server_host=imisty.cn
  • docker start solo

  • 查看日志 docker logs solo

    实际部署却并不容易

    脚本运行特殊字符导致命令截断问题

    //无论单引号还是双引号都会出现截断的问题
    docker run --detach --name solo --network=host     --env RUNTIME_DB="MYSQL"     --env JDBC_USERNAME="misty"  --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&allowPublicKeyRetrieval=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=UTC"     b3log/solo --listen_port=8000 --server_scheme=http --server_host=imisty.cn
    

*   最后解决方式参考先前的部署步骤
   [参考博文](http://www.cnblogs.com/chuanzhang053/p/9253410.html)

    #### Mysql8新特性要求

    ```
    Public Key Retrieval is not allowed
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110)
        at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
        at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
        at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:832)
        at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:456)
        at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240)
        at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207)
  • 连接url加上 allowPublicKeyRetrieval=true即可

实际部署过程中还出现了8000 端口无法使用的问题

  • 为了方便记忆和管理,占用8000 端口出现了内部错误,不深究了,换端口即可