1 打包
1.1 打包前处理代码中所有路径,设置Linux的路径,用if和new File().exists()判断,将路径设置为存在的路径.如果是相对路径,只需要放在合适的位置,判断则可以省略.(如果开发和部署的网址不一样,除了需要把portal2-leyou:即前端中的原网址leyou.com全部替换为部署网址yyyang.nat300.top,后端ly-page服务中的模板item .html中的网址也要替换, 数据库中的网址也要全部替换,索引库重新生成,search页面用的索引库数据.)
1.2 所有打包module的pom文件中都需要插件
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
1.3 在顶级的module中用Lifecycle中的install,安装所有jar包到本地仓库中.(注:用低级module打包需要自己理清依赖,先要install依赖包才能打包.比较麻烦)
2 上传jar包
在linux中输入命令ip addr或者ifconfig.得到虚拟机的ip地址,根据ip,虚拟机用户名,密码,使用工具连接虚拟机,将jar包上传至虚拟机.
3 执行命令
多个jar包需要用shell脚本联合启动:
需要安装查看进程工具lsof
yum install lsof -y;
如果提示有语法错误
解决办法:安装一个dos2unix
- [root@localhost agent]# yum install -y dos2unix
- [root@localhost agent]# dos2unix memory.sh
- dos2unix: converting file memory.sh to Unix format ...
- [root@localhost agent]#
#!/bin/sh
export EUREKA=fire-eureka-1.0-ALPHA.jar
export CONFIG=fire-config-1.0-ALPHA.jar
export GATEWAY=fire-gateway-1.0-ALPHA.jar
export AUTH=fire-auth-service-1.0-ALPHA.jar
export EUREKA_port=8761
export CONFIG_port=4001
export GATEWAY_port=9999
export AUTH_port=3001
case "$1" in
start)
## 启动eureka
echo "--------eureka 开始启动--------------"
nohup java -jar $EUREKA >/dev/null 2>&1 &
EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`
until [ -n "$EUREKA_pid" ]
do
EUREKA_pid=`lsof -i:$EUREKA_port|grep "LISTEN"|awk '{print $2}'`
done
echo "EUREKA pid is $EUREKA_pid"
echo "--------eureka 启动成功--------------"
## 启动config
echo "--------开始启动CONFIG---------------"
nohup java -jar $CONFIG >/dev/null 2>&1 &
CONFIG_pid=`lsof -i:$CONFIG_port|grep "LISTEN"|awk '{print $2}'`
until [ -n "$CONFIG_pid" ]
do
CONFIG_pid=`lsof -i:$CONFIG_port|grep "LISTEN"|awk '{print $2}'`
done
echo "CONFIG pid is $CONFIG_pid"
echo "---------CONFIG 启动成功-----------"
## 启动gateway
echo "--------开始启动GATEWAY---------------"
nohup java -jar $GATEWAY >/dev/null 2>&1 &
GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
until [ -n "$GATEWAY_pid" ]
do
GATEWAY_pid=`lsof -i:$GATEWAY_port|grep "LISTEN"|awk '{print $2}'`
done
echo "GATEWAY pid is $GATEWAY_pid"
echo "---------GATEWAY 启动成功-----------"
## 启动auth
echo "--------开始启动AUTH---------------"
nohup java -jar $AUTH >/dev/null 2>&1 &
AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
until [ -n "$AUTH_pid" ]
do
AUTH_pid=`lsof -i:$AUTH_port|grep "LISTEN"|awk '{print $2}'`
done
echo "AUTH pid is $AUTH_pid"
echo "---------AUTH 启动成功-----------"
echo "===startAll success==="
;;
stop)
P_ID=`ps -ef | grep -w $EUREKA | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "===EUREKA process not exists or stop success"
else
kill -9 $P_ID
echo "EUREKA killed success"
fi
P_ID=`ps -ef | grep -w $CONFIG | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "===CONFIG process not exists or stop success"
else
kill -9 $P_ID
echo "CONFIG killed success"
fi
P_ID=`ps -ef | grep -w $GATEWAY | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "===GATEWAY process not exists or stop success"
else
kill -9 $P_ID
echo "GATEWAY killed success"
fi
P_ID=`ps -ef | grep -w $AUTH | grep -v "grep" | awk '{print $2}'`
if [ "$P_ID" == "" ]; then
echo "===AUTH process not exists or stop success"
else
kill -9 $P_ID
echo "AUTH killed success"
fi
echo "===stop success==="
;;
restart)
$0 stop
sleep 2
$0 start
echo "===restart success==="
;;
esac
exit 0
脚本文件和jar包要放在同一个文件夹中.,进入这个文件夹,执行命令
脚本命令: sh xxx.sh start
也可以将jar包路径改为全路径名,脚本文件就不需要指定放置位置了.
如:export EUREKA=fire-eureka-1.0-ALPHA.jar
改为export EUREKA=/leyou/common/fire-eureka/1.0.0-SNAPSHOT/fire-eureka-1.0-ALPHA.jar