部署JAR包到linux

部署JAR包到linux

  1. 查看运行环境:
    centos版本:

    # cat /etc/redhat-release
    
    CentOS Linux release 7.7.1908 (Core)
    

    java版本:

    # java -version
    
    java version "1.8.0_152"
    Java(TM) SE Runtime Environment (build 1.8.0_152-b16)
    Java HotSpot(TM) 64-Bit Server VM (build 25.152-b16, mixed mode)
    

命令启动:

  1. 启动命令
    nohup java -jar -Xms1024m -Xmx1536m -XX:PermSize=128M -XX:MaxPermSize=256M stxzApi.jar --spring.profiles.active=prod 2>&1 &

    ( 其中 2> 表示把标准错误(stderr)重定向,尖括号后面可以跟文件名,或者是&1, &2,分别表示重定向到标准输出和标准错误。)

  2. 查看进程
    ps -ef|grep java 、jps -v

  3. 终止线程
    kill -9 xxxx

编写启动shell脚本
在/etc/init.d/目录下创建stxzApi.sh脚本如下:
(#保证该脚本能被chkconfig识别,如果使用chkconfig 配置启动,需要放到此目录下 )

#!/bin/sh
#chkconfig: 2345 85 15 
#description:auto_run

#需要指定java环境变量

export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#程序名
RUN_NAME="stxzApi.jar"

#jar 位置
JAVA_OPTS=/usr/local/app_jar/stxzApi.jar
LOG_OPTS=/usr/local/app_jar/logs/stxzApi_main.log
 
#开始方法
start() {
	#测试环境使用这个 设置编码为utf-8
	#nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS >$LOG_OPTS 2>&1 &
	#生产环境指定为prod 
	nohup java -jar -Dfile.encoding=utf-8 --spring.profiles.active=prod $JAVA_OPTS >$LOG_OPTS 2>&1 &
        echo "$RUN_NAME started success 进程已启动成功,正在打开日志文件($LOG_OPTS),退出后将在后台运行:"
	tail -f $LOG_OPTS	
}
 
#结束方法
stop() {
        echo "stopping $RUN_NAME ..."
        kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
	echo "stoped $RUN_NAME ...(已停止 $RUN_NAME)"		
}
 
case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        *)
                echo "Userage: $0 {start|stop|restart}"
                exit 1
esac

设置执行权限
将stxzApi.jar和stxzApi.sh加上执行权限:

chmod +x /etc/init.d/stxzApi.sh
chmod +x /etc/init.d/stxzApi.jar #根据jar包存放位置进行相应更改

添加到chkconfig(Centos7下测试未果,使用下面的【添加开机启动】正常)

添加到chkconfig作为系统服务,并设置开机启动:

chkconfig --add /etc/init.d/stxzApi.sh   (添加为系统服务)
chkconfig stxzApi.sh on  (开机自启动)
service stxzApi.sh start(启动服务)

执行完成后重启,查看启动日志,可以看到该jar包程序已经作为守护进程在系统后台运行

附: Linux下chkconfig命令详解即添加服务以及两种方式启动关闭系统服务

添加开机启动

编辑
vi /etc/rc.d/rc.local
 
在最后一行添加你的脚本的绝对路径
 
touch /var/lock/subsys/local
/etc/rc.d/init.d start
 
设置rc.local 可执行权限
centos7下rc.local的权限被降低,需要手动为其赋予可执行权限

chmod +x /etc/rc.d/rc.local
 
reboot	重启下服务器看下结果,是否自动启动了jar包
  
Centos7查看已开启开机自动启动服务: chkconfig --list / systemctl list-dependencies

实际测试时用的启动jar脚本贴在此处参考:

#!/bin/sh
# chkconfig: 2345 85 15 
# description:auto_run

export JAVA_HOME=/usr/local/java/jdk1.8.0_152
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

#程序名
RUN_NAME="stxzApi.jar"

#jar 位置
JAVA_OPTS=/usr/local/app_jar/stxzApi.jar
LOG_OPTS=/usr/local/app_jar/logs/stxzApi_main.log
 
#开始方法
start() {
	#测试环境使用这个
	nohup java -Dfile.encoding=utf-8 -jar $JAVA_OPTS >$LOG_OPTS 2>&1 &
	#生产环境指定为prod
	#nohup java -jar -Dfile.encoding=utf-8 --spring.profiles.active=prod $JAVA_OPTS >$LOG_OPTS 2>&1 &
        echo "$RUN_NAME started success 进程已启动成功,正在打开日志文件($LOG_OPTS),退出后将在后台运行:"
	tail -f $LOG_OPTS
}
 
#结束方法
stop() {
        echo "stopping $RUN_NAME ...(正在停止 $RUN_NAME...)"
        kill -9 `ps -ef|grep $JAVA_OPTS|grep -v grep|grep -v stop|awk '{print $2}'`
	echo "stoped $RUN_NAME ...(已停止 $RUN_NAME)"		
}
 
case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        *)
                echo "Userage: $0 {start|stop|restart}"
                exit 1
esac



版权声明:本文为weixin_42412858原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。