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大同小异