基于 Jpom 搭建应用部署系统
# 0、部署示意图
# 1、安装Jpom的Server、Agent
Server部署在公司内网服务器,能访问外网;
Agent部署在需要管理的服务器节点,比如A服务器需要部署Java应用就安装Agent。
这是安装完成后的Server端界面:
# 2、代理服务器安装Nginx并代理Agent
Nginx需要安装在具有公网IP,和Agent所在的服务器在同一个网络环境的服务器
修改nginx.conf代理Agent
server {
listen 83;
server_name localhost;
#每个agent服务器定义一个唯一的代理规则
location /16803/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://ip:2123/;
}
location /168019/ {
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_pass http://ip:2123/;
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 3、在Server初始化系统信息
# 1、根据部署环境建立对应的工作空间
# 2、在节点管理添加节点
- 节点地址:填Nginx代理的agent的地址
- 节点账号和密码安装Agent的时候有输出,查看路径:/agent安装目录/data/agent_authorize.json
# 3、在节点下添加项目
# 4、进入项目上传jar包
# 5、点击“控制台”启动项目
至此已经完成了项目部署的基本功能,以后每次只需要重新上传jar包,再进行重启操作完成部署。
# 4、配置在线构建
# 1、配置仓库地址
- 仓库地址:填写需要构建的项目地址
- 账号、密码:填写公司分配的SVN的账号密码
# 2、填写构建规则
构建命令:打包的mvn命令,不同的空间配特定的打包环境,通过
-P
参数指定;产物目录:匹配打包后的文件进行发布。这里的是相对路径,相对的是根目录是
/yyyy/jpom-server/data/build/xxx/source
发布操作:对于匹配的文件如何进行处理。
不发布:仅仅打包,不进行其他操作,产物目录匹配到的文件会生成到
/yyyy/jpom-server/data/build/xxx/history/#n/result
xxx是一个随机字符串,每个构建规则会生成一个这样的特定字符串
n是序号,每次打包都会递增1生成目录
节点分发
项目:如果项目打包后只有一个jar包就可以直接选择这种方式
SSH:将匹配到的文件发布指定的服务器的指定目录
本地命令:自定义命令操作匹配到的文件。
cp -rp ${BUILD_RESULT_FILE} /yyyy/deploy/test
这个就可以把打包完成的文件拷贝到指定的目录。${BUILD_RESULT_FILE}:jpom提供的环境变量,可以获取本次打包生成的匹配文件放入的目录
即
/yyyy/jpom-server/data/build/xxx/history/#n/result
Docker镜像
# 3、进行构建
- 分支:选择构建的分支
此时可以叉掉弹框去做其他的事情,打包将在后台进行
在构建历史列表也可以看到本次构建的进度以及历史的构建日志
# 5、配置脚本列表
可以针对每个服务写一个脚本用于将打好的jar包上传到指定的服务器的指定目录
既可以在【SSH管理-命令管理】也可以在【脚本管理-脚本列表】添加要编写的脚本。
两者的区别是,前者编写的脚本可以在指定的服务器上执行,但要先添加SSH信息,后者直接就在部署Jpom Server的服务器上执行命令。
# 1、在SSH管理-命令管理添加脚本
# 1、添加ssh信息
如果发现连接添加的SSH服务器信息经常超时连接不上,需要在上面的其他配置里面配置超时时间,这样能保证程序不会因为在指定时间内没连上导致超时。
# 2、编写服务上传脚本
echo "准备上传文件..."
scp -C -P 应用服务器ssh端口号 -o 'ProxyJump 登录用户名@代理机器IP -p 代理机器ssh端口号' 构建生成jar的绝对路径 登录用户名@应用服务器ip:文件上传指定目录
echo "上传成功!"
2
3
这里演示的是通过代理服务器上传文件到应用服务器,因为很多情况下有些服务器是没有外网ip的,如果有的话就直接scp上传。
# 3、添加ssh key
因为scp命令拷贝时需要ssh秘钥认证,需要提前把ssh key的认证配置好。
如果是通过代理服务器上传文件到应用服务器,一共需要配置两处地方的ssh key认证
- 在构建服务器上生成的
id_rsa.pub
添加到代理服务器 - 在代理服务器上生成
id_rsa.pub
,将构建服务器和代理服务器的id_rsa.pub
同时添加到应用服务器
ssh public key认证免密码登录 (opens new window)
# 4、测试脚本是否能顺利执行
# 2、在脚本管理-脚本列表添加脚本
和上面的方式同理,只是不用选择SSH节点。
# 6、配置服务告警邮件监控
# 1、管理员配置好邮件初始信息
# 2、配置监控规则
联系人要配置了邮箱才能被选择
# 3、测试启停被监控的服务
邮件报警记录