• SpringBoot部署jar与war


    jar部署与启动/关闭

    1.打包

    clean 清理已有target目录

    package 重新打包

    获取打包路径,通过 scp命令发送到服务器端,scp -P ${port} ${.jar} ${user}@${ip}:/${target-absolote-path}。 此处无需密码,已登记公钥于服务器端。
    2.服务端启动关闭脚本

     启动脚本:

    #!/bin/sh
    
    rm -f tpid_summary
    
    nohub java -jar server/rosetta-0.0.1-SNAPSHOT.jar > /dev/null 2>&1 &
    
    echo $! > tpid_summary
    
    echo Start Success!

    : jar 启动时,注意命令前追加 nohub 指令 ,  即 不挂断的执行命令. 避免,shell关闭造成Java应用的关闭

    关闭脚本:

    #!/bin/sh
    tpid=`cat tpid_summary | awk '{print $1}'`
    tpid=`ps -aef | grep $tpid | awk '{print $2}' | grep $tpid `
    if [ ${tpid} ]; then
             kill -9 $tpid
         fi

    3.执行测试

    启动及运行相关错误可通过日志查看。重点在于SpringBoot 2.0.*需要JDK1.8以上版本,/etc/profile中的JAVA_HOME路径需指向8及以上版本的JDK。

    查看配置:echo $JAVA_HOME

    推荐profile修改,不推荐直接export。

    修改完毕后,source 重载配置

    jar的部署较为简单,无需赘述。

    war于Tomcat下的部署与启动

     1.配置tomcat无需多写,一般只需修改 conf/server.xml相关端口即可

    2.打war包

    2.1 pom.xml中packaging jar>war

        <groupId>net.rosetta</groupId>
        <artifactId>rosetta</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <packaging>war</packaging>    

    2.2 打包时剔除tomcat组件

    <dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-tomcat</artifactId>
    <scope>provided</scope>
    </dependency>

    2.3 原main方法启动类无需变更,同级目录新增下述 SpringBootStartApplication 类即可

    public class SpringBootStartApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder){
            // 指向用main方法执行的application启动类
            return builder.sources(TextclfApplication.class);
        }
    }

    2.4 clean package 发送war包至tomcat /webapps下

    2.5 command

    2.5.1 jar转war的核心在于应用入口的变更 , 只需继承SpringBootServletInitializer类,并实现起configure方法即可,此处也可以不用新建启动类,在原启动类的基础上新增上述代码即可.

    2.5.2 由于SpringBoot的自动装配功能,提高了开发效率的同时,也回造成麻烦,如下异常:

    org.springframework.beans.factory.BeanCreationException:
       Error creating bean with name 'dataSource' defined in class path resource
        [org/springframework/boot/autoconfigure/jdbc/DataSourceConfiguration$Tomcat.class]:
          Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
          Failed to instantiate [org.apache.tomcat.jdbc.pool.DataSource]: Factory method 'dataSource' threw exception;
          nested exception is org.springframework.boot.autoconfigure.jdbc.DataSourceProperties$DataSourceBeanCreationException:
            Failed to determine a suitable driver class

    这一问题的关键在于,springboot项目启动默认会去寻找dataSource的配置,而很多时候应用中不必有与关系型数据库的交互,此时需要在auto-config时取消 DataSourceAutoConfiguration类的调度,代码如下:

    @SpringBootApplication(exclude ={DataSourceAutoConfiguration.class} )
    public class ImageRetrievalApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {
            return builder.sources(ImageRetrievalApplication.class);
        }
    
        public static void main(String[] args) {
            SpringApplication.run(ImageRetrievalApplication.class, args);
        }
    }

    注意 : 有些博客提示为添加 EnableAutoConfiguration注解,然而SpringBoot 1.2就已在SpringBootApplication整合了该注解,其对应的功能已包含,无需画蛇添足.

    3.启动tomcat

    bin/startup.sh 启动

    bin/shutdown.sh 关闭

    再次强调,JDK版本为1.8+

    启动日志可于 /logs/catalina.out中查看。

    注意:默认访问路径为:ip:port/project-name/request-mapping。同时,页面调用路径需设为相对路径,即去除 "/"

    ps:Ubuntu下开发,windows大同小异

  • 相关阅读:
    ASP.NET MVC案例——————拦截器
    Windows Azure Virtual Network (10) 使用Azure Access Control List(ACL)设置客户端访问权限
    Windows Azure Storage (20) 使用Azure File实现共享文件夹
    Windows Azure HandBook (5) Azure混合云解决方案
    Windows Azure Service Bus (6) 中继(Relay On) 使用VS2013开发Service Bus Relay On
    Azure PowerShell (9) 使用PowerShell导出订阅下所有的Azure VM的Public IP和Private IP
    Windows Azure Service Bus (5) 主题(Topic) 使用VS2013开发Service Bus Topic
    Azure China (9) 在Azure China配置CDN服务
    Windows Azure Storage (19) 再谈Azure Block Blob和Page Blob
    Windows Azure HandBook (4) 分析Windows Azure如何处理Session
  • 原文地址:https://www.cnblogs.com/nyatom/p/9110469.html
Copyright © 2020-2023  润新知