版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
在公司内部,有大量的Java Web应用需要部署到测试环境,如何做到通过Shell脚本就能自动化部署呢?这里介绍一种方法,供参考。
开发人员工作电脑
通过SwitchHosts等软件设置虚假域名:
192.168.71.129 www.taobao.com
192.168.71.129 www.sina.com
这里,假设192.168.71.129是一台测试虚拟机,硬件较好,通常能部署十余个Java Web应用。
测试虚拟机
关键软件
/export/servers/
jdk1.6.0_25
jdk1.7.0_71
jdk1.8.0_66
nginx
tomcat6.0.33
tomcat7.0.61
tomcat8.0.42
这里安装了所需的Nginx、各版本JDK和Tomcat。
Tomcat启动和shutdown脚本
/export/Domains/www.taobao.com/server1/
bin
conf
logs
temp
webapps
work
bin目录下
#!/bin/bash
export CATALINA_HOME=/export/servers/tomcat7.0.61
export TOMCAT_USER="root"
export CATALINA_BASE=/export/Domains/www.taobao.com/server1
###JAVA
export JAVA_HOME=/export/servers/jdk1.8.0_66
export JAVA_BIN=/export/servers/jdk1.8.0_66/bin
export PATH=/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/bin
export CLASSPATH=.:/lib/dt.jar:/lib/tools.jar
export JAVA_OPTS="-Djava.library.path=/usr/local/lib -server -Xms1024m -Xmx1024m -XX:MaxPermSize=256m -Djava.awt.headless=true -Dsun.net.client.defaultConnectTimeout=60000 -Dsun.net.client.defaultReadTimeout=60000 -Djmagick.systemclassloader=no -Dnetworkaddress.cache.ttl=300 -Dsun.net.inetaddr.ttl=300"
export JAVA_HOME JAVA_BIN PATH CLASSPATH JAVA_OPTS
$CATALINA_HOME/bin/startup.sh "-config $CATALINA_BASE/conf/server.xml"
#!/bin/bash
export CATALINA_HOME=/export/servers/tomcat7.0.61
export CATALINA_BASE=/export/Domains/www.taobao.com/server1
$CATALINA_HOME/bin/shutdown.sh -config $CATALINA_BASE/conf/server.xml
ps -aef | grep java|grep "/www.taobao.com/server1/"| grep -v grep | sed 's/ [ ]*/:/g' |cut -d: -f2|kill -9 `cat`
conf目录下
server.xml里指定HTTP端口,这个端口值要和Nginx里的端口一样,如8081,注意:端口不要重复。
conf\Catalina\localhost目录下ROOT.xml
<?xml version="1.0" encoding="UTF-8"?>
<Context path="/" docBase="/export/App/www.taobao.com" >
</Context>
应用程序文件
/export/App/www.taobao.com/
META-INF
WEB-INF
WEB-INF下是大量的jar文件和资源文件。
Nginx配置
主要思路就是通过域名分发请求
nginx\conf
++domains
++++www.taobao.com 注意:这是文件,不是目录
++++www.sina.com 注意:这是文件,不是目录
++++等其他应用的配置
++nginx.conf
++mime.types
++等其他
nginx.conf里的关键配置:
include domains/*;
www.taobao.com这个文件(注意:不是目录)形如:
upstream tomcat_taobao {
server 192.168.71.129:8081; #访问的tomcat的IP
}
server {
listen 80; #监听的对外端口
server_name www.taobao.com; #域名
location / {
proxy_pass http://tomcat_taobao; #必须与服务器上对应的tomcat的upstream tomcat_taobao相对应
index index.html index.htm;
}
}
相比于将war包直接放到Tomcat webapp目录下,这种部署方式更有利于自动化部署,例如和Jenkins等持续集成软件结合使用。
参考资料:
1、https://blog.csdn.net/SeanTandol/article/details/85722147