以jar包方式啟動


 

 

嗨,大家好~ ,在工作中,一個項目要部署到服務器上,我自己在工作中常見的部署tomcat和jar包方式部署的兩種方式。(其他的有待挖掘)

啊啊啊,公司正在做一個新的平台,所以最近瘋狂在服務器上部署項目~

今天介紹的是一個以vertx體系寫的maven項目,將項目以jar包的方式啟動 部署到服務器上面

歡迎大家留言呀~~~~~~~~~~~~~~~~~~~~~

 


 

部署步驟:

1.首先要在服務器上將項目所需要的環境安裝好,例如 jdk, redis,mqtt, zookpper, vertx 等等等....

2.回到項目上,需要改動  pom.xml   和  log4j2.xml   文件

 pom.xml

<plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <!-- MUST ADD -->
                    <archive>
                        <manifestEntries>
                            <Main-Class>io.vertx.core.Launcher</Main-Class>
                            <Main-Verticle>com.seaway.open.value_added_server.open_value_added_agent.Runner</Main-Verticle>   <!-- 項目的入口路徑-->
                        </manifestEntries>
                        <manifest>
                            <addClasspath>true</addClasspath>
                            <classpathPrefix>/home/open/resources/libs/</classpathPrefix>      <!--服務器上jar的路徑-->
                        </manifest>
                    </archive>
                    
                    <excludes>
                        <exclude>log4j2.xml</exclude>
                        <exclude>open_value_mobiledata.yaml</exclude>      <!--自己的配置文件名稱-->
                    </excludes>
                </configuration>
</plugin>

log4j2.xm

<configuration status="error">

<properties>
        <property name="LOG_HOME">/home/open/resources/open_value_added_agent_mobiledata/logs/</property>      <!--在服務器中日志路徑-->                      
        <property name="BACKUP_HOME">/home/open/resources/open_value_added_agent_mobiledata/logs/backup</property>   <!--在服務器中的日志路徑-->
        <property name="SERVER_NAME">open_pay_front_agent</property>       <!--在服務器中日志名稱-->
</properties>

 

 

3. 將項目打jar包,在下用的工具是eclipse

右鍵項目----》Run  As ----》Maven  clean ----》Maven  install

(可以將jar文件用好壓打開,然后把不需要的文件刪掉,不刪也行)

 

 

4.在服務器上面mkdir 一個和項目名稱一樣的文件夾。然后在文件夾下建立以下幾個目錄

config   存放項目配置文件 ,(一些軟件的路徑端口,要填服務器上安裝的。例如:mqtt,redis等)
bin      存放執行文件(bin里面的文件要用 touch命令創建. eg: touch xxxx.sh)
logs     存放日志
jar      存放項目打成的jar
libs     項目所需要的所有的jar包( 把maven上的jar包復制到本地,然后rz到服務器上libs。
eg: run as
-->maven build dependency:copy-dependencies ,輸入命令 觀察控制台可以查看jar都復制到本地哪里了 )

 

 

5. bin下面的啟動腳本(要會寫,下面的例子)。寫完以后啟動項目,觀察日志,報錯就檢查下。結束~

eg:簡單的啟停例子 之一

cat   startAndstopxxx.sh  

if [ $# -lt 1 ] 
then
        echo "Usage: <$0> start/stop" 
        exit 1 
fi

if [ "$1" == "start"  ] ; then        <!-- java -jar /項目jar路徑   start /log4j2.xml路徑   -cfg /配置文件   ,copy的時候,本條注釋刪掉-->
        java -jar /home/open/open_task/jar/original-get_taopiaopiao_soonShows-1.0.jar  start -Dlog4j.configurationFile=/home/open/open_task/config/get_taopiaopiao_soonShows/log4j2.xml -cfg /home/open/open_task/config/get_taopiaopiao_soonShows/taobao_soon_shows_server.yaml
elif [ "$1" == "stop"  ] ; then
        PROCESS=`ps -ef|grep "get_taopiaopiao_soonShows"|grep -v grep|grep -v PPID|awk '{ print $2}'`
        for i in $PROCESS
        do
                echo "Kill the get_taopiaopiao_soonShows process [ $i ]"
                kill -9 $i
        done
else
        echo "Usage: <$0> start/stop"
        exit 1
fi

 

eg:簡單的stop的例子 之二

cat   stopxxx.sh  

 

#NAME=$1
NAME=get_taopiaopiao_soonShows       <!--項目名稱,copy的時候,本條注釋刪掉-->
echo $NAME
ID=`ps -ef | grep "$NAME" | grep -v "$0" | grep -v "grep" | awk '{print $2}'`
echo $ID
echo "---------------"
for id in $ID
do
kill -9 $id
echo "killed $id"
done
echo "---------------"

 

eg: 簡單的啟停的例子 之三

cat   startAndstopxxx.sh  

#!/bin/sh

DateTime=`date "+%Y%m%d%H%M%S"`
AppName='open_value_added_agent'

JAVA_HOME=/home/open/jdk8u172-b11
HOME=/home/open/resources

#MAIN_PATH=com.seaway.dept3.kc.main.ZjpayProcess

#classpath=''
#for jarpath in `ls $HOME/libs/*.jar` 
#do 
#classpath=$classpath:$jarpath
#done
#CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

case "$1" in
start)

echo "start $AppName"

#java -jar -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=100M -Xloggc:/home/zjpaySvr/zjpay_process_svr/logs/gcc.log  -XX:+UseParNewGC  -XX:+UseConcMarkSweepGC  -XX:+UseTLAB  -XX:NewSize=128m  -XX:MaxNewSize=128m  -XX:MaxTenuringThreshold=0  -XX:SurvivorRatio=1024  -XX:+UseCMSInitiatingOccupancyOnly  -XX:CMSInitiatingOccupancyFraction=60 -cwd $HOME/$AppName/service -user $USER -home $JAVA_HOME -pidfile $PID_FILE -errfile $TMP_DIR/$AppName$DateTime.err -cp $CLASSPATH  $MAIN_PATH  
java -jar  -Xms256m -Xmx256m -XX:CompressedClassSpaceSize=128m -XX:MetaspaceSize=64m -XX:MaxMetaspaceSize=128m $HOME/$AppName/$AppName-1.0.0.jar -Dlog4j.configurationFile=$HOME/$AppName/log4j2.xml -cfg $HOME/$AppName/$AppName.yaml &
 
echo "Result: $?"
exit $?
;;

stop)

echo "stop $AppName"
for i in `ps -ef |grep java | grep "$AppName" | grep -v grep | awk '{print $2}'`
do
echo $i
if [ ! -n $i ];then
# rm -rf $PID_PATH_NAME
echo -e "\033[32m $i has been killed \033[0m"
# return 0;
else
echo -e "\033[33m $i will be killed by force! \033[0m"
kill -9 $i
# rm -rf $PID_PATH_NAME
# return 0;
fi
done

echo "Result: $?"
exit $?
;;

*)
echo "Usage ./$AppName.sh start/stop"
exit 1;;
esac

 

日后的補充

eg:簡單的啟停的例子之四

#!/bin/sh

case "$1" in
start)

java -jar /home/open/jar/open_pay_gate_demo-1.0.0.jar start -Dlog4j.configurationFile=/home/open/conf/open_pay_gate_demo/log4j2.xml -cfg /home/open/conf/open_pay_gate_demo/open_pay_gate_demo.yaml
;;

stop)

shellkill.sh [o]pen_pay_gate_demo-1.0.0.jar
;;

*)
echo "Usage open_pay_gate_demo.sh start/stop"
exit 1;;
esac

 

 

多加嘗試,加油~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM