以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下面的啟動腳步(要會寫,不會就copy下面的,替換掉相應的東西),要寫一下子。寫完以後啟動項目,觀察日誌,報錯就檢查下。結束~
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
多加嘗試,加油~
以jar包方式啟動