• 朝阳消防联合快递行业开展消防安全宣传培训系列活动 2019-04-05
  • 期待已久的桃花运 竟然可以穿出来?! ——凤凰网房产广州 2019-04-05
  • 中关村雍和航星科技园,北京中关村雍和航星科技园 2019-03-22
  • 潇湘玉竹版主辛苦了! 2019-02-13
  • 端午新经济体验无处不在 “指尖端午”玩出新花样 2019-02-13
  • 工信部:鼓励婴幼儿配方乳企质量安全追溯体系建设 2018-12-30
  • "[图片] 最近很是焦虑啊,有时候想不清楚自己要干嘛。所以干脆懒得想,找点事做吧。自己搭建 solo 也有三个多月了,从 v2.8.0 一直到现在的 v3.2.0,一直很喜欢这种社区与博客的交互方式。中间升级过很多版本,自己也有不下五次的升级经历了,修改了很多皮肤,但是头疼的就是更新问题,每次都要上服务器,所以有点难受。 .."

    solo 独立部署和 Tomcat 模式自动更新

    最近很是焦虑啊,有时候想不清楚自己要干嘛。所以干脆懒得想,找点事做吧。自己搭建 solo 也有三个多月了,从 v2.8.0 一直到现在的 v3.2.0,一直很喜欢这种社区与博客的交互方式。中间升级过很多版本,自己也有不下五次的升级经历了,修改了很多皮肤,但是头疼的就是更新问题,每次都要上服务器,所以有点难受。自己写了一个自动检测更新。自动更新的,当然是自用的,所以只支持 linux 系统,可以支持 独立部署Tomcat 部署,我的是 centos 系统。

    github 地址: solo-auto

    简述

    solo 博客独立部署方式自动检测更新。

    功能:自动检测版本,自动下载更新,自动解压,自动复制配置文件以及其他的文件。

    目前仅支持 linux 版本。

    在这之前

    使用

    获取最新版本

    使用记录

    v3.4.0

    v3.3.0

    更新记录

    2019-3-18 v1.2.0-SNAPSHOT

    注意:这可能是 v3 版本最后一次更新 solo-auto,因为作为一个辅助 solo 的存在,不应该让他像 solo 一样频繁更新。并且现在已有的功能已经适用大多情况,所以以后只要 solo 不进行大版本的更新或者 solo-auto 出现重大 bug,将不再更新此项目。

    2019-3-13 v1.1.0-SNAPSHOT

    2019-3-12 v1.0.0-SNAPSHOT

    配置

    注意,你的配置将会完全覆盖默认配置!配置文件为 json 格式

    属性名 类型 默认值 描述
    latestUrl String https://api.github.com/repos/b3log/solo/releases/latest 最新版本 solo 的 github restful 接口地址
    homeDir String /root/ 解压后的文件夹路径,结尾必须有文件分隔符 /,当前版本以及新版本都会存放在此目录
    deploy String solo 部署方式,可选 tomcat,其他值无效
    tomcatDir String solo tomcat 部署在 webapps 目录下的 solo 的文件名称
    interval Number 6 几小时检测一次版本更新
    version String v3.3.0 当前已经部署的版本号,格式必须与 github 上相同
    timeOut Number 30 Event Bus 等待时间
    otherFiles Array ["favicon.ico", favicon.png"] 其他的需要移动的文件名称
    startwww.zpvv.netmand Stirng ;nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 & 启动命令,前面必须加英文符分号 ;

    运行

    请注意:建议以 root 身份运行,否则可能会出现权限问题无法执行命令的情况。

    java -jar soloauto-1.0.0-SNAPSHOT-fat.jar -conf solo-auto.json

    nohup java -jar soloauto-1.0.0-SNAPSHOT-fat.jar -conf solo-auto.json >/dev/null 2>&1 &

    建议,先前台运行,检查控制台输出中的配置文件是否有配置错误,确认无误且不报错后,再后台运行。

    独立部署注意事项

    1. 正在运行的 solo 的文件夹的目录名称必须类似为 solo-v3.1.0 形式。
    2. 建议以 root 方式运行。

    tomcat 部署注意事项

    1. 请注意填写以下属性
    属性 注意
    homeDir tomcatwebapps 目录
    deploy tomcat
    tomcatDir tomcatwebapps 下的部署 solo 的文件夹名称

    其它

    Q: 为什么会写这个?

    A: 从 V2.8.0 开始用 solo,至今到了 V3.2.0,以前除了部署应用的时候上一下服务器,其他时候都用不上,hexo 这些博客基本很少更新。现在每次更新都要上去重复一边操作,实在太麻烦了。但是又特别喜欢 solo 这样活跃的博客与社区,所以遇到问题当然是想自己解决下问题。

    Q: 为什么不用 docker?

    A: 服务器资源有限,除了 solo 还运行者其他的应用,运行 docker 就会有一些资源被占用,并且想自己 DIY 部分主题比较麻烦,每次都要进服务器,再进容器里面改,为了运行 solo 直接上 docker 觉得没必要。如果后面还有应用使用 docker 会换,或者 D 大说的会重写 Docker 镜像构建的时候可能会换。

    Q: 为什么不用 tomcat?

    A: tomcat 跑着其它应用,没做负载均衡,并且担心访问速度,所以直接用 独立容器 + nginx 部署了。v1.1.0 版本已经可以使用 tomcat

    示例

    独立部署

    {
      "startwww.zpvv.netmand":";nohup java -cp'WEB-INF/lib/*:WEB-INF/classes'org.b3log.solo.Starter -lp 8765 >/dev/null 2>&1 &"
    }
    
    {
      "homeDir": "/root/",
      "version": "v3.3.0",
      "otherFiles": [
        "favicon.ico",
        "favicon.png",
        "background.jpg"
      ]
    }
    

    解释如下:

    属性名 解释
    homeDir /home/echocow/ 解压后的文件夹路径,结尾必须有文件分隔符,当前版本以及新版本都会存放在此目录
    version v3.3.0 当前已经启动且部署好的 solo 版本
    otherFiles ["favicon.ico", "favicon.png", "background.jpg"] 其它需要复制的文件,一旦填写,就会覆盖默认的,所以这里要加上默认的,然后多加了 background.jpg
    {
      "homeDir": "/home/echocow",
      "version": "v3.2.0"
    }
    

    解释如下:

    属性名 解释
    homeDir /home/echocow/ 解压后的文件夹路径,结尾必须有文件分隔符,当前版本以及新版本都会存放在此目录,默认 /root/
    version v3.2.0 当前已经启动且部署好的 solo 版本

    Tomcat 部署

    {
      "homeDir": "/home/echo/Other/apache-tomcat-9.0.16/webapps/",
      "deploy": "tomcat",
      "tomcatDir": "solo",
      "version": "v3.2.0",
      "otherFiles": [
        "favicon.ico",
        "favicon.png",
        "background.jpg"
      ]
    }
    

    其中 deploytomcatDir 必填

    说明

    使用 vertx 事件驱动,使用 Event Bus 点对点消息模式,MainVerticle 获取默认配置,再获取用户配置以覆盖默认配置。然后分别部署两个 Verticle。


    独立部署

    1. WebClientVerticle 检测当前最新版是否与配置中的版本匹配,如果不匹配,携带请求的部分信息通知 FileVerticle。
    2. FileVerticle 使用类名注册一个处理器以接受请求,收到通知以后,获取最新版本。
    3. 下载最新版本的 war 包,解压,然后移动用户自定义的文件(配置文件中 otherFiles)。
    4. 移动 solo 配置文件:local.properties,latke.properties,solo.properties.
    5. 复制完毕后,使用 pkill -9 -f org.b3log.solo.Starter 杀死以前的 solo 进程,
    6. 使用 cd 解压后的路径;nohup java -cp WEB-INF/lib/*:WEB-INF/classes org.b3log.solo.Starter >/dev/null 2>&1 & 命令启动 solo,后面的启动命令用户可以自定义,请注意:自定义启动命令前请务必加上分号!
    7. FileVerticle 执行完毕,回复 WebClientVerticle ,WebClientVerticle 收到回复日志记录。

    Tomcat 部署

    这个过程不会重启 tomcat。

    我的配置

    2019 年 3 月 26 日

    {  
        "startwww.zpvv.netmand":";nohup java -cp'WEB-INF/lib/*:WEB-INF/classes'org.b3log.solo.Starter -lp 8765 >/root/solo-auto/soloInfo.log 2>&1 &",  
        "version":"v3.4.0",  	
        "otherFiles":[  
            "skins/Finding/images/header-bg.jpg"  
        ]  
    }
    
    nohup java -jar soloauto-1.2.0-SNAPSHOT-fat.jar -conf solo-auto.json >/dev/null 2>&1 &
    

    未来

    1. 目前没有写 windows 的打算。
    2. 打算加入邮件或者短信通知,以能够更好的感知博客更新变化。
    3. 考虑是否加入 web 页面,但是觉得没必要。
    4. 想过做成 solo 插件,但是文档太少,并且感觉局限性比较大且自己水平有限,所以放弃了。

    构建

    测试:

    ./mvnw clean test
    

    打包

    ./mvnw clean package
    

    运行

    ./mvnw clean exec:java
    

    结语

    也不知道能不能帮助到您,不过还是希望这个小东西能够为您带来方便,如果有问题请在 github 上提出;如果对您有帮助,欢迎给个 star 哈。

    感谢    关注    收藏    赞同    反对    举报    分享
    2 回帖    
    请输入回帖内容...
    • mufengcoding ?      

      真的很认真 点赞

      感谢    赞同    反对    举报    分享       评论    回复
    • hjljy ?      

      6 的飞起

      感谢    赞同    反对    举报    分享       评论    回复
  • 朝阳消防联合快递行业开展消防安全宣传培训系列活动 2019-04-05
  • 期待已久的桃花运 竟然可以穿出来?! ——凤凰网房产广州 2019-04-05
  • 中关村雍和航星科技园,北京中关村雍和航星科技园 2019-03-22
  • 潇湘玉竹版主辛苦了! 2019-02-13
  • 端午新经济体验无处不在 “指尖端午”玩出新花样 2019-02-13
  • 工信部:鼓励婴幼儿配方乳企质量安全追溯体系建设 2018-12-30