滕州助企网站建设,网页设计流程25,做网站哪些公司好,网页制作图片格式工作中遇到一个项目需要在多个平台编译打包#xff0c;每次都需要登录到不同的服务器同步代码#xff0c;编译#xff0c;打包#xff0c;上传#xff0c;非常麻烦#xff0c;于是想为何不能一次操作#xff0c;多台服务器自动执行呢。网上找了下#xff0c;有很多解决…工作中遇到一个项目需要在多个平台编译打包每次都需要登录到不同的服务器同步代码编译打包上传非常麻烦于是想为何不能一次操作多台服务器自动执行呢。网上找了下有很多解决方案但是都比较麻烦最后想到了用redis的消息订阅实现该功能, 方法很简单只需要一个redis提供服务就可以如果希望将功能web化可以再加一个nginx服务,实现方法如下:1. 假设有三台服务器A,B,C需要执行相同的指令可以在A机器上安装一个redis-server, 一个nginx(带redis2-nginx-module模块), nginx访问redis方法很简单只需要参考官方教程就可以了。2. 修改redis源码文件redis-cli.c 在main函数任意位置添加该语句 setvbuf(stdout, (char *)NULL, _IOLBF, 0); 设置缓存区区为行缓存这个很有必要然后分别在A,B,C三台服务器编译一个redis-cli用作redis客户端.3. 编写脚本:3.1 start.sh#!/usr/bin/bashwhile true;do./redis-cli -h $A UBSCRIBE command_channel | xargs -i -exec sh command.sh {} ;done3.2 command.sh#!/usr/bin/bashinput($1)case ${input[0]} in;update)update $ | ./redis-cli -x set command_result_$IP;;*);;esac4. 运行脚本在A,B,C三台服务器建立一个目录将start.sh command.sh redis-cli放在同一个目录下,nohup sh start.sh 分别执行该命令启动脚本5. 发布命令在任意服务器上执行 ./redis-cli -h $A publish command_channel update 发布一个任务将分发到A,B,C三台服务器上, 三台服务器6. 题外话我在实际环境上是利用nginx 提供的http服务发送命令给redis, 写了个简单的web页面实现任务分发, 并将处理结果保存到redis, 前端通过nginx 从redis中获取command_result_$IP中的值,作为处理结果其中$IP为当前机器IP或者其他唯一识别该机器的编号.后面还实现升级功能将command.sh 放在web服务器上供A,B,C下载并在command.sh中实现update功能(1.重命名本地command.sh 2.在nginx上下载新的command.sh, 下一次命令就会执行新的command.sh), 以这种方式在不远程连接服务器的情况下实现对多台服务器的同时操作的功能, 后面只需要修改command.sh 就可以添加各种命令实现各种操作