您的位置:首页 > 运维架构 > Linux

Java Web项目在Linux服务器自动化部署

2017-12-27 09:05 513 查看

项目介绍

使用Spring+Hibernate开发的Java Web 项目, 在Perforce上做的代码控管, 部署到Linux(Redhat)下的Tomcat服务器上。

手动部署繁琐,如果涉及文件传输有在不同网段的话, 有可能会导致部署的时间较长。

环境准备

安装包文件放在/usr/local/software下, 没有就新建此目录。

1) 安装JDK
这里使用RPM的安装包进行安装
a. 下载jdk的rpm安装包
下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
b. 将jdk-7u4-linux-i586.rpm 移动到/usr/local/software
c. 给安装包赋予运行权限
chmod 755 jdk-7u4-linux-i586.rpm
d..切换到/usr/local/bin, 安装该rpm安装包
rpm   -i  /usr/local/software/jdk-7u4-linux-i586.rpm
e.设置环境变量
[root@localhost opt]# vi /etc/profile                          ;编辑系统配置文件
然后输入i ,最后增加下面内容
==================================================================================
export JAVA_HOME=/usr/java/jdk1.7.0_04
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar 
export PATH=$PATH:$JAVA_HOME/bin

2) 安装Tomcat
 Tomcat 安装到/usr/local/tomcat目录下
 a. 下载tar.gz的安装包:
 http://tomcat.apache.org/download-70.cgi  ,安装包放到 /usr/local/software下
 b.  新建目录并切换到此目录
mkdir /usr/local/tomcat
 c. 安装
 tar -zxvf /usr/local/software/apache-tomcat-7.0.54.tar.gz

3) 安装Ant
a. http://ant.apache.org 上下载tar.gz版ant
b. 放到/usr/local/software
c. 切换到/usr/local/bin
tar -vxzf /usr/local/software/apahce-ant-1.9.2-bin.tar.gz  解压

4) 安装与配置Perforce Client
这个下载就可以了,不需要安装
a.  下载p4 https://www.perforce.com/downloads/helix-command-line-client-p4
b. 将下载的文件放到/usr/local/bin,加上执行权限
chmod u+x p4

u代表所有者,x代表执行权限。 + 表示增加权限

c. 在文件 /etc/bashrc 加入环境变量
export $P4PASSWD = your password
export P4CLIENT= your P4 Client Name
export P4USER= your p4 User
export P4PORT= your P4 IP and port , as (192.168.1.198:1666)
修改后不生效的话, 执行一下source bashrc

d . 登录
命令行输入 p4 login, 接着输入密码就可以登录了

e. 修改Client
登录成功后, 命令行输入:p4 client
修改Root 和View
Root是本地代码的根路径
View 是服务端代码和本地代码的映射

5) 获取代码脚本
使用“p4 sync”就可以获取代码了, 最好是加上 -f 的选项, 强制更新代码。
要注意的是在脚本中要先进行登录。 不然的话,如果在命令行登录的Session 超时, 就会报无连接的错误了。使用如下命令行就可以达成了:
echo $P4PASSWD|p4 login

6)编译脚本
使用Ant 进行编译。
echo "Begin ant Build"
ANT_HOME=/usr/local/bin/apahce-ant-1.9.2
PATH=$PATH:$ANT_HOME/bin 
ant -version
export ANT_HOME PATH
ant
echo "End ant Build Successful!"

对于Ant来,就要配置build.xml和build.properties的文件了。

脚本参考

deploy.sh

echo "Begin Deploy"

echo "stop tomcat"
sh /usr/local/tomcat/bin/shutdown.sh
echo "move old deploy"
rm -rf /usr/local/epm/deploycode/epm

echo "Begin P4 Code"
echo $P4PASSWD|p4 login
p4 sync -f
echo "End P4 Code Successful!"

echo "Begin ant Build"
ANT_HOME=/usr/local/bin/apache-ant-1.6.2
PATH=$PATH:$ANT_HOME/bin
ant -version
export ANT_HOME PATH
ant
echo "End ant Build Successful!"

echo "copy new deploy"
mv /usr/local/epm/deploy/builded/epm /usr/local/epm/deploycode
echo "start tomcat"
sh /usr/local/tomcat/bin/startup.sh

echo "End Deploy Successful!"
build.xml
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
<project name="Web Customization" default="deployFilesToTomcat" basedir=".">

<property file="build.properties" />

<!-- TARGET: INIT
The "init" target initiallized variables for the rest of the ant
targets. Please update the properties below appropriately.
-->
<target name="init"
description="Initialization of variables for rest of ant targets">

<property name="java.source" value="${custom.home}/src" />

<property name="web.dir" value="${custom.home}/WebContent" />

<property name="script.dir" value="${custom.home}/admin" />

<property name="webinf.dir" value="${web.dir}/WEB-INF" />

<property name="java.classes" value="${webinf.dir}/classes" />

<property name="lib.dir" value="${webinf.dir}/lib" />

<property name="build.compiler" value="classic" />

</target>

<target name="prepare" depends="init"
description="Create appropriate directories if they do not exist">
<mkdir dir="${java.classes}" />
</target>

<!-- TARGET: CLEAN
The "clean" target removes directories and files created by any
ant target.
-->
<target name="clean" depends="init"
description="Remove directories and files created by any target">
<delete dir="${java.classes}" quiet="true" />
</target>

<!-- TARGET: COMPILE
The "compile" target is used to compile (or recompile) the Java classes
that are used in this web application. Feel free to adust targets and
classpath as necessary.
-->
<target name="compile" depends="prepare"
description="Compile the java classes used in this web application">
<javac srcdir="${java.source}" destdir="${java.classes}"
debug="on" optimize="off" deprecation="on">
<classpath>
<fileset dir="${lib.dir}">
<include name="*.jar" />
</fileset>
<fileset dir="${tomcat.lib.dir}">
<include name="servlet-api.jar" />
</fileset>
</classpath>
</javac>
<copy todir="${java.classes}">
<fileset dir="${java.source}">
<include name="**/*.xml" />
</fileset>
</copy>
<copy todir="${java.classes}">
<fileset dir="${java.source}">
<include name="**/*.properties" />
</fileset>
</copy>
</target>

<target description="Deploy files Tomcat"
name="deployFilesToTomcat" depends="compile">
<echo>
"Deploying files to web application server Tomcat..."
</echo>
<copy preservelastmodified="true"
todir="${tomcat.deployfiles.dir}">
<fileset dir="${web.dir}">
<include name="**" />
<include name="**/**" />
</fileset>
</copy>
</target>

<target name="mkwar" description="Create the Web ARchive (WAR) file">
<jar jarfile="${custom.home}/${war.filename}" basedir="${web.dir}"/>
</target>

<target name="start-tomcat" description="tomcat starting.....">
<exec executable="${tomcat.home}/bin/startup.bat" spawn="true" vmlauncher="false">
<env key="CATALINA_HOME" value="${tomcat.home}"/>
<arg line="/c start ${tomcat.home}/bin/startup.bat"/>
</exec>

</target>
</project>

build.properties

build.compiler=classic
custom.home=path of workspace
tomcat.home=tomcat path
war.filename=epm.war
tomcat.lib.dir=tomcat lib path

tomcat.deploy.dir=tomcat deploy path

后记

a. 这里的处理比较简单,如果有部署异常的一些判断, 可以使用Shell脚本进行扩充, 类似Pipe相关的功能可以达成。
b. Perfore的password如果保密性较高, 可以不写在环境变量中, 
写在脚本中,安全性可能要好一些, 如有更高的需求可以加密或者需要的时候输入。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: