自己动手写linux脚本,项目一键部署和上线

多服务器对外提供服务,每次更新上线都需要去每台服务器上更新代码,重启服务等操作,繁琐的很,还很容易出错;为此决定写个自动上线脚本,简化部署操作。

1

配置各服务器之间免密登录

买服务器等时候就刻意买了同属一个局域网的服务器,这样各服务器之间通讯就可以使用千兆局域网了,降低服务器之间网络通讯压力;为了方便实现一键(运行一个脚本)上线部署,因为后续会涉及到git更新代码,服务重启之类的,需要使用root权限,各服务器之间先配置root账号免密登录。

首先,在本机上切换到root身份,生成本机到密钥,密钥对会保存在root用户的~目录

将公钥copy到目标主机,这一步要求输入目标主机的root账户密码

成功后会有这样的提示语,之后在root身份下直接ssh目标主机就不需要输入密码了。

2

在远程主机上执行命令的方式

比如我们配置好了A、B、C三台服务器,其中A可以免密登录B和C,接下来就是在A上写自动部署和上线脚本了,要求脚本以root身份执行。

在远程主机上执行命令的两种方式,远程执行命令尽量使用绝对路径,否则结果有可能不是自己想要的:

a、 #在远程主机上执行双引号里的命令,这种方式适合简单的方式,但是对复杂的命令就不方便了。

b、复杂的命令可以使用

其中eeooff是自定义标识符(可以任意指定,只要跟脚本中都变量啥都不冲突就行),由该标志符包括的命令都要在远程主机上执行,起始符要加上

3

写自动部署&上线脚本

自动上线流程

开始备份配置文件备份代码commit-id更新代码和相应的配置重启相应的服务

服务正常?上线成功回滚代码和配置,解决问题

yes

no

4

脚本主要内容

备份脚本

更新代码脚本

重启服务脚本

回滚脚本

代码里有大量冗余,可用循环优化。

题图:2017念拍摄于深圳某场馆外部,忘了是什么场馆了

公众号

echo_zyw

服务器架构、性能分析、大数据分析

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181031G1OMTX00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券