zoukankan      html  css  js  c++  java
  • 2499-springboot使用jar形式打包在linux上运行

    由于maven使用的种种问题,以前springboot版本变化较快带来的一些不兼容问题,是否考虑下使用jar形式运行web程序,而不是固守于war包与tomcat;

    主要原理有两点:

    1. 使用nohup来运行jar
      nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test &
      最后一个& 是输出日志的意思

    nohup的意思不挂服务,常驻的意思,除非云服务器重启,那就没法了;最后一个&表示执行命令后要生成日志文件nohup.out
    2. 使用脚本在每次重新部署的杀掉旧的进程 并启动新的进程


    参考文献1:
    https://blog.csdn.net/sai739295732/article/details/49444447

    最后就是重头戏了,项目重启的脚本,写个start.sh 的脚本,注意脚本和jar包同级目录 , 如下:

    5、脚本运行
    cd /home (我是把jar包和脚本放在home下面)

    chmod +x start.sh (第一次运行的时候获取一下超级管理员权限)

    然后以后每次运行直接

    ./start.sh 即可

    拷贝脚本的时候运行的时候如果报错,应该是文件格式转换的问题

    报错: bash: ./a.sh: /bin/bash^M: bad interpreter: No such file or directory
    可以 yum -y install dos2unix

    然后 dos2unix start.sh

    重新运行脚本

    脚本:

    #!/bin/sh  
    # 记得修改这里的 resource-0.0.1-SNAPSHOT.jar 这是包名 
    RESOURCE_NAME= resource-0.0.1-SNAPSHOT.jar  
      
    tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
    if [ ${tpid} ]; then  
    echo 'Stop Process...'  
    kill -15 $tpid  
    fi  
    sleep 5  
    tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
    if [ ${tpid} ]; then  
    echo 'Kill Process!'  
    kill -9 $tpid  
    else  
    echo 'Stop Success!'  
    fi  
      
    tpid=`ps -ef|grep $RESOURCE_NAME|grep -v grep|grep -v kill|awk '{print $2}'`  
    if [ ${tpid} ]; then  
        echo 'App is running.'  
    else  
        echo 'App is NOT running.'  
    fi  
       
    rm -f tpid  
    nohup java -jar ./$RESOURCE_NAME --spring.profiles.active=test &  
    echo $! > tpid  
    echo Start Success!  
    

    参考文献2:
    https://blog.csdn.net/sai739295732/article/details/49444447

    接下来就是运行了。
    
    //window 服务器下。
    
    java  -jar  (jar包的包名)cyc.jar 或者是双击,隔一会儿就可以运行了。
    
    //linux 服务器下。
    
    这里我已阿里云的ubuntu 来做实验。
    
    这里其实可以向上面一样直接java -jar ,这样执行。
    
    但是当你关闭了链接这个进程也会删除。
    
    我找到的方法就是使用管道来实现运行,这样就不会因为关闭客户端(xshell),导致的进程也被删除的情况。
    
    首先先用vim创建文件start.sh
    
    vim start.sh
    
    在文件中写入
    
    java -jar cyc.jar
    
    在保存一下:wq!
    
    先给文件 chmod 777 start.sh 权限
    
    其次:
    
    nohup  ./start.sh &
    
    就可以运行了。
    
    最后扩展一下linux 常用命令:
    
    netstat -anp | grep 80     : 查看80端口
    
    kill sid                                :关闭sid的端口
    
    cat start.sh                        :查看start.sh 文件的内容
    
  • 相关阅读:
    canvas绘图详解-10-文字渲染
    canvas绘图详解-09-曲线的绘制原理
    websocket,vue链接
    JS 数组对象根据某一相同key合并成新的数组
    nuxt $axios访问多个服务器地址请求数据
    正则去除字符串中的html标签,但不去除<br>标签
    css多行文本溢出显示省略号(兼容ie)
    input accept
    jquery.toast
    jquery toast
  • 原文地址:https://www.cnblogs.com/starmoon1994/p/9103923.html
Copyright © 2011-2022 走看看