Express配合Coding实现tomcat热部署

简介

Coding是我们平时开发中常用的版本控制工具,不同于Github,Coding中提供私有的仓库,而且Coding还提供5个免费的项目空间,对于一般的用户来说应该够用了(不够可以删除没有的项目嘛),因此,我们可以将不想公开的项目放入到Coding的私有仓库中。当然,这片文章的重点不是教你如何使用Coding,如果你还不会使用Coding或者Git,建议可以先去学习一下Git的使用。


相信很多写Java Web或者从事后台开发的童鞋,在项目很多的情况下,经常会苦恼于频繁的部署项目。像一些大公司如阿里、腾讯、京东、亚马逊等,他们每天都可能要进行上百次的部署。那他们是如何实现的呢?像这些大公司内部都会有很一套完善的部署工具,从开发到集成部署,全部都是自动化流水线,不需要人工干预,因此才能完成成百上千次的发布部署。笔者最近开始写Java后台,使用tomcat进行发布程序,相信很多童鞋和我最开始一样,是手动将war文件上传到webapp目录下进行发布,每次都需要重启tomcat,而tomcat在服务器上有重启的特别慢,我的服务器上一般在1-2分钟左右,当项目多了,有时候就更长了。如果每次都重启项目,那其它项目也会被重新加载,会影响其它项目的正常使用。就在这种情况,我就想能不能不每次重启tomcat就能实现发布部署呢?这样可以帮我节省不少时间,在公司里,可以帮运维节省不少时间。下面就是我要介绍的如何实现tomcat自动部署:


用到的工具

 - Express
 - Coding 
 - Forever
 Express 是一种保持最低程度规模的灵活 Node.js Web 应用程序框架。
 Coding 国内的版本控制工具
 Forever nodejs项目后台运行工具

基本原理

Express是运行在服务器上的server,Coding使用存放我们的项目,当我们使用push提交项目到Coding时,会触发Coding中的WebHook,WebHook会发送一条消息到server上,当Express收到Coding中WebHook的消息时便会执行git pull命令,更新项目,同时部署到tomcat 中。原理图如下:
这里写图片描述

实现步骤

Coding端

1 配置Coding 中的WebHook

这里写图片描述
这里写图片描述

URL:这里为http://ip/webhook
token: 可以不写,也可以写,是一种验证方式,如果写了,那么Express项目中要进行匹配

服务器端Server:

1 安装nodejs
apt-get install nodejs
2 在指定目录中安装express(我是在创建的webhook文件中)
npm install express

这里写图片描述

3 安装express-generator apt install node-express-generator
4 创建express项目,我这里叫codingWebHook

这里写图片描述

创建好项目后提示要配置环境

这里写图片描述

配置项目环境 npm install

这里写图片描述

5 安装node apt install nodejs-legacy
6 写Express服务,这也是最重要的一步,在进入项目的routes目录,创建webhook.js文件

这里写图片描述

webhook.js 中代码如下:

var express = require('express');
var router = express.Router();

const exec = require('child_process').exec;

router.post('/webhook', (req, res) => {
  if ('project' === req.body['token']) {
    exec('git pull', {'cwd': '服务器下的项目所在位置,如/root/project'},
      (error, stdout, stderr) => {

        if (error !== null) {
          res.send('<pre> pull fail!\n' + stdout + error + '</pre>');
        } else {
          res.send('<pre>pull done!\n' + stdout + '</pre>');
        }
      });
  } 
  else {
    console.log(' failed token ');
    res.send('<pre>token不正确?</pre>');
  }
});

module.exports = router;

7 配置app.js中的路由,这一步也非常关键,就是URL中的/webhook这个路径

这里写图片描述

修改 app.js中的代码:

这里写图片描述

8 Express 启动 npm start
9 安装forever sudo npm install -g forever
10 通过forever启动express forever start ./bin/www

这里写图片描述

以为到这路就全部结束了?

上面的步骤只是将项目从coding中pull下来,而要完成热部署,还需要配置tomcat,如果项目是在tomcat的webapps路径下或ROOT目录下,那么就不要配置tomcat
了,但是如果项目不在tomcat中,就需要配置虚拟路径,充实开启热部署功能,如下:

Context docBase="/root/project/path" reloadable="true" autoDeploy="true" debug="1"/>

到这里才是真正的完成了,后面可以安心撸代码了~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值