发布线上多台服务器代码的(发布系统)实现方式
浏览数 182179
赞
(0)
线上环境总是有好多服务器的,少则几台,多则几百上千台,如果代码更新后,一台一台去手机更新代码,则是非常费时又费神的事,下面做一个简单的机制实现的是一键发布代码到所有的服务器上。
使用到的技术有:
- shell脚本从git库拉取最新代码到本机
http://www.weinidai.com/index.php/News/detail/id/177 - 配置ssh免密登录远程服务器
http://www.weinidai.com/index.php/News/detail/id/189 - 拷贝文件到远程服务器
scp [可选参数] file_source file_target - 执行远程服务器上的命令
ssh username@remoteNodeIP "cd /home ; ls"
服务器架构
有一台运营机作为控制中心,统一发出命令,连接所有的web服务器
一、先在所有的web服务器上实现shell脚本更新代码
这里举例的shell脚本的名称为:update_project
实现方法看这里:http://www.weinidai.com/index.php/News/detail/id/177
二、实现让运营机可以免密登录所有的web服务器
实现方法看这里:http://www.weinidai.com/index.php/News/detail/id/189
三、在运营机上编写shell脚本,用于发布所有web服务器上的代码
先上脚本内容(这个脚本的名称和web服务器上名称一样,但是脚本内容不一样)
#vim /data/shell/update_project
#!/bin/sh iplist="192.168.1.20 192.168.1.21 192.168.1.22 192.168.1.23"; #用空格分隔多个服务器的IP地址 for i in $iplist; do echo ${i}; ssh root@${i} "update_project;rm -rf /data/web/www.oneWayPhp.com/config/*"; #执行远程服务器上的命令,先更新代码,再删除配置文件,因为scp不能覆盖已有的文件 scp /data/config/www.oneWayPhp.com/* root@${i}:/data/web/www.oneWayPhp.com/config/; #从运营机上拷贝配置文件到各个服务器 done |
给这个脚本赋予可执行权限
#chmod +x /data/shell/update_project
把这个脚本建立软链接到/usr/sbin/目录里,这样就可以用户处在任何目录时,都可以执行update_project命令调用
#ln -s /data/shell/update_project /usr/sbin/update_project
这样一个简单的发布系统就实现了。
================================================================
参考文档:
Linux Shell远程执行命令(命令行与脚本方式)
https://blog.csdn.net/thy822/article/details/72640038
Shell中for循环的几个常用写法
https://blog.csdn.net/babyfish13/article/details/52981110
https://blog.csdn.net/babyfish13/article/details/52981110
ssh免密码登陆及其原理
https://www.cnblogs.com/kex1n/p/6017963.html?utm_source=itdadao&utm_medium=referral
https://www.cnblogs.com/kex1n/p/6017963.html?utm_source=itdadao&utm_medium=referral
linux软链接的创建、删除和更新
https://blog.csdn.net/m290345792/article/details/78518360
https://blog.csdn.net/m290345792/article/details/78518360
https://www.cnblogs.com/kex1n/p/5193826.html
Linux下的scp拷贝命令详解
http://www.runoob.com/linux/linux-comm-scp.html
http://www.runoob.com/linux/linux-comm-scp.html