嗨,大家好~ ,在工作中,一个项目要部署到服务器上,我自己在工作中常见的部署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
多加尝试,加油~