首页 文章 精选 留言 我的

精选列表

搜索[java],共10000篇文章
优秀的个人博客,低调大师

利用ansible-playbook从测试环境获取tomcat中java项目新版本发布到生产环境

一、环境描述 安装有ansible的服务器:192.168.13.45 测试环境服务器:192.168.13.49 /home/app/api-tomcat/webapps/api.war为测试环境新版本war包位置 生产环境服务器:192.168.13.51 /home/app/api-tomcat/webapps/api.war为生产环境war包位置 /home/app/api-tomcat/webapps/api为生产环境项目位置 /home/app/tomcat.bak/api/webapps-时间戳,为老版本webapps备份位置 /home/app/newwar/api.war为从测试环境获得的新版本war包临时存放位置 /home/app/newwar/api为新版本war包解压后临时存放的位置 全部以app用户执行 二、编写ansible-playbook用的yml文件 1、升级 这里所有的#开头的注释文字在使用的时候都要去掉,因为yml是没有注释的 #生产环境主机的ip,这里也可以是/etc/ansible/hosts定义的组名 -hosts:192.168.13.51 #变量,在yml文件中使用变量可以使整个文件可以用在不同的主机上升级,变量的使用方法是,如果task中的变量在冒号后则一定要将冒号后整句加上双引号"",因为yml文件自动把冒号后的大括号的内容识别为列表,如shell:"/bin/startup.sh" vars: #测试环境IP地址 testIP:192.168.13.49 #测试环境中项目的位置 testhome:/home/app/api-tomcat/webapps #测试环境中项目war包的名字 warname:api.war #生产环境中项目的tomcat所在的位置 oldhome:/home/app/api-tomcat #生产环境中老版本项目所在webapps备份目录的位置 backupwebapps:/home/app/tomcat.bak #从测试环境获取的新版本war包所在的位置 newwar:/home/app/newwar #新版本war包解压后目录的名字 zipname:api #整个远程自动化操作中所使用的账户,这里整个从生产环境到测试环境的操作都是用app用户执行的 remote_user:app #具体操作 tasks: -name:生产环境删除/home/app/newwar目录,若目录不存在则忽略错误(删这个目录的原因是因为之后要新建这个目录,确保整个yml文件可以多次执行,ignore_errors为是否忽略错误返回值) file:path=state=absent ignore_errors:yes -name:生产环境创建/home/app/newwar目录,改权限,(其中recurse是递归创建目录,state是文件类型为目录) file:path=recurse=yesmode=775owner=appgroup=appstate=directory -name:从测试环境192.168.13.49复制新版本/home/app/api-tomcat/webapps/api.war包到生产环境192.168.13.51的/home/app/newwar目录下,此处之后的操作都是在生产环境下 shell:scpapp@:/ -name:给/home/app/newwar递归改权限(因为整改操作都是以app用户身份执行的,所以一定要保证权限为app的权限) file:dest=recurse=yesmode=775owner=appgroup=app -name:解压/home/app/newwar/api.war包在/home/app/newwar/api目录 shell:unzip-oq/-d/ -name:再次给/home/app/newwar递归改权限(确保新版本为app的权限) file:dest=recurse=yesmode=775owner=appgroup=app -name:创建用来备份老版本webapps的目录/home/app/tomcat.bak/api并改递归权限 file:path=/recurse=yesmode=775owner=appgroup=appstate=directory -name:备份/home/app/api-tomcat/webapps到目录/home/app/tomcat.bak/api/webapps-时间戳(这个备份目录是用来回滚的) shell:cp-a/webapps//webapps-`date+%Y%m%d%H%M` -name:kill进程方式停止服务.忽略错误返回值(用这种方式才能确保老版本停止运行,否则会出现冲突) shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:kill进程方式停止服务.忽略错误返回值(再次确保老版本不再运行) shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:再次kill进程方式停止服务.忽略错误返回值 shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:查看停止服务的结果,进程是否还在 shell:ps-ef|grep -name:删除老版本的/home/app/api-tomcat/webapps/api.war包 file:path=/webapps/state=absent ignore_errors:yes -name:删除老版本的/home/app/api-tomcat/webapps/api程序目录 file:path=/webapps/state=absent ignore_errors:yes -name:复制新版本目录/home/app/newwar/api到/home/app/api-tomcat/webapps目录下 shell:cp-a//webapps/ -name:复制新版本war包/home/app/newwar/api.war包到/home/app/api-tomcat/webapps目录下 shell:cp-a//webapps/ -name:启动服务/home/app/api-tomcat/bin/startup.sh(source是为了载入jdk的环境变量,nohup是为了保证yml跑完了进程依然不退出) shell:"source/etc/profile;nohup/bin/startup.sh&" -name:查看进程中是否存在启动的服务 shell:ps-ef|grep 2、回滚 #生产环境主机地址 -hosts:192.168.13.51 #变量和升级的相同 vars: testIP:192.168.13.49 testhome:/home/app/api-tomcat/webapps warname:api.war oldhome:/home/app/api-tomcat backupwebapps:/home/app/tomcat.bak newwar:/home/app/newwar zipname:api #远程操作依然使用app用户 remote_user:app #以下操作都是在生产环境中进行 tasks: -name:kill进程方式停止服务.忽略错误返回值 shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:kill进程方式停止服务.忽略错误返回值 shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:再次kill进程方式停止服务.忽略错误返回值 shell:ps-ef|grep|grep-vgrep|xargskill ignore_errors:yes -name:查看停止服务的结果.进程是否还在 shell:ps-ef|grep -name:删除/home/app/api-tomcat/webapps目录 file:path=/webappsstate=absent -name:显示/home/app/tomcat.bak/api/中最新备份的webapps目录,目录名应该是webapps-最近时间戳 shell:ls-r/|head-1 -name:复制备份的/home/app/tomcat.bak/api/webapps-最新时间戳,到项目并改名/home/app/api-tomcat/webapps shell:cp-a//$(ls-r/|head-1)/webapps -name:启动服务/home/app/api-tomcat/bin/startup.sh shell:"source/etc/profile;nohup/bin/startup.sh&" -name:删除刚才回滚的备份文件 shell:rm-rf//$(ls-r/ -name:查看进程中是否存在启动的服务 shell:ps-ef|grep 三、升级操作和注意事项 1、升级前免密钥操作 ansible所在主机192.168.13.45 #在app用户下生成密钥 ssh-keygen-trsa #发送公钥到测试环境 ssh-copy-id-i.ssh/id_rsa.pubapp@192.168.13.49 #发送公钥到生产环境 ssh-copy-id-i.ssh/id_rsa.pubapp@192.168.13.51 生产环境主机192.168.13.51 #在app用户下生成密钥 ssh-keygen-trsa #发送公钥到测试环境 ssh-copy-id-i.ssh/id_rsa.pubapp@192.168.13.49 为了业务安全,ansible所在主机和生产环境主机、测试环境主机是互通的。生产环境主机能连上测试环境主机,但测试环境主机不能连上生产环境主机,所以这里测试环境主机不需要将密钥发送给生产环境主机 2、升级和回滚 升级 ansible-playbook/home/app/api.yml-v 回滚 ansible-playbook/home/app/api-rollback.yml-v ansible-playbook后面跟上之前写的yml文件路径,-v是为了显示详细执行信息 3、注意 如果在jenkins中执行升级和回滚的yml文件,一定要将在jenkins用户的公钥发送给生产环境主机和测试环境主机,否则会报权限错误 要操作的主机一定要填入/etc/ansible/hosts中 两个yml文件已在生产环境中验证

优秀的个人博客,低调大师

Java 开源办公开发平台 O2OA V6.4 发布,三员管理、SmartBI 报表上线!

O2OA V6.4版本新增了内置应用「三员管理」。该应用支持以系统管理员,安全管理员,安全审计员三员分责分权的方式进行系统安全管理。启动三员管理后会解除xadmin用户及权限同时启用系统的审计日志记录。 日志界面如下: 点击具体的条目可以查看详情,如下图: 除此之外,还新增了SmartBI报表系统集成功能,可以在流程,内容管理以及门户页面中展示报表。该功能旨在帮助企业快速搭建企业报表平台,将营销、财务、人力等企业内部流转的数据进行整合加工,构造出不同部门的业务模型,帮助快速生成业务报表等数据报告。 另外,目前庆双节活动正在火热进行中(2021.10.24~2021.11.11),兰德网络免费送O2OA技术培训!报名另赠超值8折技术支持服务优惠券,购买技术支持还赠送原价12500元的超值应用开发服务,详情可以移步官网查看:https://www.o2oa.net/ O2OA V6.4还包含其他的功能更新和问题修正,让平台更稳定,用户操作更方便: 功能新增 [流程表单]新增了新HTML编辑器组件:TinyMCE [流程表单]新增了从本地拖动图片、从word复制图片、从html片段中复制图片到CKEditor并上传到服务器的功能 [流程表单]新增了手写板组件,并修改了移动端手写板的界面 [内容管理]栏目设置中增加了默认阅读表单和默认编辑表单的设置 [内容管理]分类设置中增加了文档字段映射的功能 [数据中心]新增了数据中心应用的界面导航配置功能 [用户认证]新增了安全注销功能 [用户认证]新增了基于LDAP认证功能 [平台]新增了三员管理功能 [平台架构]新增了支持vue3进行前端component进行二次开发的支持 [门户管理]新增了Element前端组件支持 功能优化 [流程表单]优化了数字组件允许使用空字符串作为默认值 [流程表单]表单模板中的数据网格组件替换为数据表格 [会议管理]优化了会议申请邀请人选择功能,从只能选择人员变更为可以选择身份、人员、组织和群组。 [会议管理]会议申请保存后可以修改邀请人了。 [人员选择]选人范围优先使用id改为优先使用distinguishedName,避免设计元素迁移造成选人出错的问题。 [平台]禁用api访问的时候同时禁用源代码访问 [系统认证]未登录或权限不足返回特定httpstatus [消息中心]登录后返回的ws消息改为最新10条 [云文件]file模块增加根据url上传文件 [人员组织]优化了职务查询慢的问题 [系统登录]优化了图片验证码,升级为googlecode插件 [平台架构]HttpConnection类增加超时处理 问题修复 [数据中心]修复了设计端列表界面自建表和查询语句的黏贴可能不成功的问题 [数据中心]修复了导入模型excel导入时超过26个英文字母的问题 [流程表单]修复了数据表格和数据模板在拆分情况下的问题 [流程表单]修复了数据表格通用样式优先于单元格样式的问题 [流程表单]修复了数据表格导入时日期列下标不对的问题 [流程表单]修复了数据网格、数据表格、数据模板,queryLoad、load和postLoad会执行两次的问题 [考勤管理]修复了考勤申诉设置报错的问题 [用户认证]记录request请求中擦除密码的记录 [统一搜索]修复了搜索切词报错升级tika到1.27 [流程平台]修复了导入同版本流程被重命名的问题 [流程平台]修复了催办提醒10分钟内可以无限提醒问题 [内容管理]修复了文档查看权限校验错误的问题 [内容管理]修复了栏目icon获取图片主色调内存溢出问题 [流程平台]修复了办公中心待阅筛选条件未去重的问题 [流程平台]修复了待办已办根据标题查询未过滤权限的问题 [流程平台]修复了公文编辑器word转换时,在IE中版记显示页码错误的问题 [门户管理]修复了门户页面设计dom列表无法滚动的问题

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册