加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

通过ssh主机互信打通内、外网,使用shell脚本自动部署测试环境

发布时间:2020-12-15 16:13:26 所属栏目:安全 来源:网络整理
导读:一、背景介绍 svnServer在内网环境,测试环境搭建在阿里云公网上,分为DBServer和WebServer。每次手动部署时都需要诸多步骤,开启多个终端操作,可谓耗时又繁琐,再加上新人经验不足,部署过程时常出现问题。 手动部署测试环境的步骤: 服务器 操作步骤 svnS

一、背景介绍

svnServer在内网环境,测试环境搭建在阿里云公网上,分为DBServer和WebServer。每次手动部署时都需要诸多步骤,开启多个终端操作,可谓耗时又繁琐,再加上新人经验不足,部署过程时常出现问题。


  • 手动部署测试环境的步骤:


服务器 操作步骤
svnServer(内网)
  1. 使用maven命令打包;

  2. 将版本提交至svn;

本地PC
  1. 将提测版本使用WinSCP工具get到本地;

  2. 通过WinSCP工具将提测版本,分别上传到DBServer和WebServer

DBServer

(公网)

  1. 登录DBServer,删除原有的release内容;

  2. Drop database;

  3. 赋予Mysql_SetUp.sh执行权限;

  4. 执行Mysql_SetUp.sh,重新建库,测试脚本的正确性;

WebServer

(公网)

  1. 停止应用服务;

  2. 备份各子系统应用;

  3. 删除过期日志;

  4. 部署各个子系统;

  5. 启动各个子系统


二、解决方案

长此以往下去,终究是不可行的!

如果用shell固化所需执行的步骤、执行的命令,对新手而言是不是简易多了呢?

如果只在一台server上就将所有的步骤执行完了,是不是更完美了呢?


既然svnServer作为部署工作的入口,那就把它作为console。

定下console之后,问题又来了,它如何与公网的server“沟通”呢?ssh主机互信来帮忙!通过主机互信,打通内外网,跨起一座沟通的桥梁。

按照部署步骤,可归纳为4个阶段:

  1. 升级前的准备工作:停止web应用服务;删除旧文件;

  2. 分别提测内容的上传;

  3. 部署DBServer;

  4. 部署WebServer;


  • 使用shell脚本部署的步骤:

服务器 操作步骤
svnServer(内网)
  • 1pre_env.sh

  • 2copy_build.sh

  • 3deploy_db.sh

  • 4deploy_web.sh

通过shell脚本来部署,感觉要操作的内容减少了,这个过程简单了、顺畅了!


三、脚本编写及调试

有了以上的解决方案,就开始实践,毕竟实践出真知!

3.1 ssh主机互信

1.在3台server生成各自的创建RSA密钥和公钥;

ssh-keygen -t rsa

2.整合公钥文件,将所有的key文件汇总到内网server的认证文件中;

sshsvnServercat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshDBServercat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

sshWebServercat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3.分发整合的key认证文件,到各server上;

scp ~/.ssh/authorized_keysDBServer:~/.ssh/

scp ~/.ssh/authorized_keys WebServer:~/.ssh/

4.验证互信

ssh DBServer

OK,主机互信搞定,各台server已经可以“免签”了。


3.2 编写脚本

脚本分为两层,svnServer上的脚本远程调用DBServer、WebServer 上的脚本,进行环境准备、安装部署。

wKiom1nSItuA03ekAAAlbJs2y4g119.png

1pre_env.sh,远程调用shell脚本,实现停止web应用服务;删除旧文件;

wKiom1nSI8vzYw3hAAB_ADA8wPo616.png


2copy_build.sh,通过scp命令,将应用直接从svnServer上传到web和DBserver上;

wKioL1nSJPGALAYlAABeyJPoBdo004.png

3deploy_db.sh、4deploy_web.sh

wKiom1nSKCbSlqR3AABp8w2am6o285.png


四、总结

通过编写该脚本,规避了误操作的风险,提高了部署的效率。同时也实现了学有所用!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读