一、介紹
實際項目中爲了將java程序部署到服務器上,服務器的環境和開發者在自己的電腦上運行程序是不一樣的,開發期間程序的運行一般依賴於IDE上面集成好的環境,只要在軟件上面直接運行main方法一般即可驗證,然而Linux服務上面一般除了我們安裝的jdk就沒有別的環境,在不考慮有各種集成好的發佈獨立程序的平臺的情況下,一般需要我們自己編寫運行腳本等各種運維腳本了
二、服務器環境搭建
1、安裝jdk、搭建java運行環境,配置JAVA_HOEM到環境變量中
2、規範部署程序目錄結構
├── project
│ ├── bin 運維腳本存放目錄
│ ├── config 配置文件存放目錄
│ ├── lib jar包存放目錄
│ └── logs 運行日誌存放目錄
3、將代碼排除依賴包和配置文件打包存放進相應目錄
可使用各種ant maven甚至直接使用ide進行編譯打包,注意排除依賴的jar以及相應配置文件,以便於在服務器根據需求進行配置
- 依賴包以及編譯打包好的程序存放lib目錄
- 配置文件存放於config目錄
三、運維腳本
start.sh
#!/bin/bash
#############################################################
#
# start.sh create by [email protected]
#
#############################################################
#############################################################
#
# base_dir -配置程序目錄
# base_dir="/soft/project"
#
#############################################################
base_dir="/home/bingchenglin/project"
#############################################################
#
# java_home -配置使用的JAVA_HOME地址
# java_home=${JAVA_HOME}
#
#############################################################
java_home=${JAVA_HOME}
if [ -z "${java_home}" ]
then
echo "JAVA_HOME is empty!"
exit 0
fi
for i in `find ${base_dir}/lib -name "*.jar"`
do
CP=$CP:$i
done
if [ -z "${CLASSPATH}" ]
then
CLASSPATH = .:${JAVA_HOME}/lib:$JAVA_HOME/jre/lib
fi
CLASSPATH=${CLASSPATH}:${CP}:${base_dir}/config
export CLASSPATH
echo "\n"
echo "CLASSPATH=${CLASSPATH}"
#啓動程序
echo "nohup ${java_home}/bin/java -Dfile.encoding=UTF-8 com.modelsystem.Main >> ${base_dir}/logs/console.log 2>&1 &"
nohup ${java_home}/bin/java -Dfile.encoding=UTF-8 com.modelsystem.Main >> ${base_dir}/logs/console.log 2>&1 &
echo "\n"
echo "啓動完成,請查看日誌"
stop.sh
#!/bin/bash
#############################################################
#
# stop.sh create by [email protected]
#
#############################################################
#############################################################
#
# PROCESS_NAME -Main程序類名
# PROCESS_PARM -Main參數
# USER -進程所有者用戶名
#
#############################################################
PROCESS_NAME="com.modelsystem.Main"
PROCESS_PARM=""
USER="bingchenglin"
ps -ef|grep ${PROCESS_NAME} |grep ${PROCESS_PARM} |grep ${USER} | grep java | grep -v grep | awk '{print $2}' |while read pid
do
kill ${pid} 2>&1 >/dev/null
echo "進程名稱:${PROCESS_NAME},參數:${PROCESS_PARM},PID:${pid} 成功停止"
done
可以根據其他需求添加各種監控和清除日誌的腳本