zoukankan      html  css  js  c++  java
  • springboot -jar部署

    springboot的打包方式有很多种。有打成war的,有打成jar的,也有直接提交到github,通过jekins进行打包部署的。这里主要介绍如何打成jar进行部署。不推荐用war,因为springboot适合前后端分离,打成jar进行部署更合适。 首先需要在application.properties当中配置端口

    1.pom.xml配置

        <groupId>com.web.boot</groupId>
        <artifactId>demo</artifactId>
        <version>0.0.1</version>
        <!--默认为jar方式 -->
        <packaging>jar</packaging> 
        <!--改为war方式 -->
        <!--  <packaging>war</packaging>-->
    <build>
            <!-- 指定打包项目名称 -->
            <finalName>SpringBoot</finalName>
            <plugins>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>${jdk.version}</source><!-- 指定jdk版本 -->
                        <target>${jdk.version}</target>
                        <encoding>${project.build.sourceEncoding}</encoding><!-- 指定编码版本 -->
                    </configuration>
                </plugin>
                <!--该插件的主要功能是进行项目的打包发布处理 -->
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                    <version>1.5.4.RELEASE</version>
                    <configuration> <!--设置程序执行的主类,指定程序入口 -->
                        <mainClass>com.web.boot.ApplicationStart</mainClass>
                    </configuration>
                    <executions>
                        <execution>
                            <goals>
                                <goal>repackage</goal><!-- repackage将jar / war 重新打包为可执行文件-->
                            </goals>
                        </execution>
                    </executions>
                </plugin>
            </plugins>
        </build>

    2.打包 项目右键 --> run as -->Maven clean

    ​ 项目右键 --> run as -->Maven build 出现如下界面

     在Goals后面的框中输入打包命令:

    clean package  
    clean package -D maven.test.skip=true   //不执行测试用例,也不编译测试用例类
    clean package -D skipTests     //不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下。

    确认打包:run

    3.此时将形成“SpringBoot.jar”程序文件,并且这个文件里面包含有全部的依赖支持库文件。

     4.将“SpringBoot.jar”文件随意拷贝到一个路径之中,例如:D盘,而后进入到命令行方式:java -jar SpringBoot.jar

     5.执行完成之后,我们的服务就跑起来了,可以通过浏览器正常访问:

     http://localhost:8200/SpringBoot/testcontroller/testfile

     6.Linux下发布过程,如下:

     6.1 (特殊情况)查看项目端口是否被占用,格式:

    netstat -tunlp | grep 端口号

     可以看到 8200 端口已经被轻 java 服务占用,PID(113670)  

    此种情况的解决办法有如下两种:

    @A   使用kill命令结束占用端口的进程后继续布置项目,格式如:kill -9 PID
    @B   修改项目配置文件application.properties的端口配置,修改一个没被占用的端口,重新打包部署
    @C   换一台没有占用此端口的服务器继续部署项目

    6.2 项目已经部署过了,更新了项目内容后,重新部署替代之前的版本的项目,那么一般则分为以下三个步骤:

    @A  结束上一个版本的进程,不然会冲突:kill -9 $(ps -aef | grep p1upgradeTask-0.0.1-SNAPSHOT.jar | grep -v grep | awk '{print $2}')

    以下对此命令作解释

    ps -aef | grep SpringBoot.jar  
    
    //查询出我们部署的项目的信息(包含有grep本身的进程信息)
    
    包含内容有:UID PID PPID C STIME TTY TIME CMD这几个选项
    
    UID:用户ID
    
    PID:进程ID
    
    PPID:父进程ID
    
    C:CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
    
    STIME:进程启动的时间
    
    TTY:完整的终端名称
    
    TIME:CPU时间
    
    CMD:完整的启动进程所用的命令和参数
    
    
    
    其中的grep -v grep 是干啥的呢 ?
    
    为了去除包含grep的进程行 ,避免影响最终数据的正确性 ,因为grep本身也是一个进程。
    
    
    
     
    awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息
    $2:表示第二个字段
    
    print $2 : 打印第二个字段
    
    awk '{print $2}' : 一行一行的读取指定的文件, 以空格作为分隔符,打印第二个字段

       6.3 备份

     mv SpringBoot.jar SpringBoot__`date '+%Y-%m-%dT%H-%M-%S'`.jar.backups

    注意:“`” 重音符或抑音符,又称反单引号,是西文字符中的附加符号,主要用于计算机相关领域。位置在键盘中数字键“1”的左边,其上档符号是“~ ”,使用Shift键可以换挡输入。由于计算机显示的原因,反单引号非常容易和单引号 ‘ 混淆。

     6.4 导入新版本的jar包

    mv /opt/upfile/SpringBoot.jar  SpringBoot.jar

    这里说明以下,我提前把打好的jar包放入了/opt/upfile/目录下,这一步自己去做,方式有很多种,我用的“rz”命令,传入的。

     6.5 防火墙开放端口,不然项目发布,外部是访问不到的

    vi /etc/sysconfig/iptables

    重启服务:service iptables restart

    测试端口是否开通:Telnet 192.168.95.4 8200

    6.6  项目发布

     后台无窗口发布:nohup java -jar SpringBoot.jar >nohup.out 2>&1 &

    上面的2 和 1 的意思如下:

    0    标准输入(一般是键盘)
    1    标准输出(一般是显示屏,是用户终端控制台)
    2    标准错误(错误信息输出)

    将运行的jar 错误日志信息输出到nohup.out文件中,

    然后(>&1)就是继续输出到标准输出(前面加的&,是为了让系统识别是标准输出),最后一个&,表示在后台运行。

    6.7 访问测试

    http://192.168.95.4:8200/SpringBoot/testcontroller/testfile

  • 相关阅读:
    mysql ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' (using password: YES)
    mysql修改root密码和设置权限
    Navicat Premium 12破解版激活
    获取/设置光标位置
    Go开发工程师
    npm包大全
    war3辅助代码及运行方式
    6.页面绘制-帖子列表页和前端路由
    5.页面绘制-主题列表页(使用ColorUI、uni-app官方组件)
    4.页面绘制-脚本页面和个人中心页面
  • 原文地址:https://www.cnblogs.com/KdeS/p/12092893.html
Copyright © 2011-2022 走看看