Java Web 应用自动化部署实践

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/jinjiankang/article/details/95631260

在公司内部,有大量的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

猜你喜欢

转载自blog.csdn.net/jinjiankang/article/details/95631260