首页 > 代码库 > java服务器浅入浅出之简略的java程序发布

java服务器浅入浅出之简略的java程序发布

本篇将记录下一个简单的java程序在linux上的部署设置,以及发布脚本的编写。粗糙、简略。  //神奇!勿动

1.首先写了一个简单的java程序,一个死循环,不停地输出一句话。


2.把工程共享到svn上。


3.编写publish_test.sh脚本,实现svn源码的检出,调用ant编译、打包,以及其他准备操作。

<span style="font-size:18px;">. /home/testjava/publish/config.sh

mkdir -p ${PUBLISH_TEST_SVN_ROOT}
if [ `ls -la ${PUBLISH_TEST_SVN_ROOT} | wc -l` == 3 ]
then
        svn checkout ${URL_SVN_TEST_ROOT} ${PUBLISH_TEST_SVN_ROOT}
else
        svn update ${PUBLISH_TEST_SVN_ROOT}
fi

ant -buildfile ${PUBLISH_TEST_ROOT}/build.xml clean
ant -f ${PUBLISH_TEST_ROOT}/build.xml
mkdir -p ${PUBLISH_TEST_LOGS_ROOT}
touch ${PUBLISH_TEST_LOG}</span>
其中config.sh中是预先声明好的一些路径信息。


4.利用ant将工程编译、打包。这里要编写配置文件。我用的默认名字build.xml。

<span style="font-size:18px;"><?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="test">
        <property environment="env"/>
        <property name="root.path" value=http://www.mamicode.com/"/home/testjava/publish"/>>
这里的clean可以设置为build的依赖,我没有这么写而已。 javac将源码编译成class,jar将class打包成jar包。


5.编写以服务器形式运行jar包工程的脚本。start.sh

<span style="font-size:18px;">java -Dserver_name=/home/testjava/publish/testjava/output -Djava.net.preferIPv4stack=true -server -Xmx1g -Xmn512m -cp /home/testjava/publish/testjava/output/jar/* test.system.Main</span>


6.建立一个系统服务testjava,目标是运行start.sh。

首先在/etc/init.d 下写服务脚本testjava.sh。

<span style="font-size:18px;">#!/bin/sh
#chkconfig: 35 20 80
#description: testjava server

EXEC_PATH=/home/testjava/publish/testjava/output
EXEC=start.sh
pid=""

if [ -x $EXEC+path/%EXEC ]; then
echo "project not found..."
exit 1
fi

getpid()
{
pid=`ps axjf | grep "Dserver_name=${EXEC_path}" | grep -v "grep" | awk '{print $2}'`
}

stop()
{
getpid
if [ -z ${pid} ]
then
        echo "ERROR : server has not been started..."
else
        echo "server is stoping..."
        kill -15 ${pid}
fi
}

start()
{
getpid
if [ -z ${pid} ]
then
        echo "server is starting..."
        cd ${EXEC_PATH}
        ./${EXEC} >>logs/log 2>&1 &
else
        echo "ERROR : server has been started already..."
fi
}

restart() {
  stop
  start
}

case "$1" in
        start)
        start
        ;;
        stop)
        stop
        ;;
        restart)
        restart
        ;;
        status)
        status
        ;;
  *)
    echo "Usage: service $EXEC {start|stop|restart|status}"
    exit 1
esac

exit 0</span>

其中log重定向时 2>&1 是将错误信息转作普通信息输出到标准输出  &是将这条语句在后台运行。

最后 chkconfig --add autoruntest 添加服务。


7.编写最终的启动、停止脚本。

startall.sh

service testjava.sh start
stopall.sh

service testjava.sh stop


至此,一个简单的发布流程就完成了。每当版本更新需要发布时,如果服务器在运行中,先运执行stopall.sh。然后执行publish_test.sh发布。最后执行startall.sh启动。运行时log在预先重定向的logs/log文件中查看。

====================================================================  -- end

java服务器浅入浅出之简略的java程序发布