linux部署SpringBoot项目

小白第一次使用Linux部署springboot项目,期间遇到一些问题,通过这篇文章记录下来。
SpringBoot部署有两种方式一是打包成jar文件运行,另外是打包war文件放到tomcat下运行。本文记录了运行jar文件方式进行部署(打包动作在Eclipse下进行)。

项目打包

首先对application.properties文件进行配置:
设置开发配置,默认为"dev"。打包时改为“prod”,启用生产配置。

#Profile设置
spring.profiles.active=dev

SpringBoot中内置tomcat,配置内置tomcat端口,注意不与已被占用端口号冲突,并且Linux中防火墙允许该端口

#内置tomcat端口配置
server.port=8081

application.properties文件需要添加的东西不多,然后在pom.xml上添加相关插件和依赖:

<!-- 给maven指定jdk版本编译 -->
 	  <plugin>  
            <artifactId>maven-compiler-plugin</artifactId>  
             <version>3.1</version>  
              <configuration>  
                    <source>1.8</source>  
                    <target>1.8</target>  
                    <encoding>utf8</encoding>   
               </configuration>  
        </plugin>  
 	 
 	 <!-- maven单元测试 -->
 	 	<plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
            	<skip>true</skip>
            </configuration>
        </plugin>
 	 
 	 <!--maven打包Spring项目为jar文件或war文件  -->
    	<plugin>
    		<groupId>org.springframework.boot</groupId>
    		<artifactId>spring-boot-maven-plugin</artifactId>
    	</plugin>

打包方式也要修改成jar文件

<packaging>jar</packaging>

然后,对启动类进行修改,我的项目启动类为Application.class,给启动类继承SpringBootServletInitializer类,并重写configure方法。一开始我没有做这个操作,打包成jar文件后,jar文件内的MANIFEST.MF中缺少主清单属性,在linux下运行是会报错“no main manifest attribute, in xxxx.jar”:

public class Application extends SpringBootServletInitializer {

	public static void main(String[] args) {
		SpringApplication.run(Application.class,args);
	}
	
	@Override  
	 protected SpringApplicationBuilder configure(SpringApplicationBuilder application){
        return application.sources(Application.class);
    }
}

接下来通过maven对项目进行打包生成jar文件,打包有两种方式:1.项目—运行方式—Maven build,输入执行代码“clean package -Dmaven.test.skip=true”; 2.项目—运行方式—Maven install;顺利的话,打包成功,jar文件在项目target文件夹下。

但在打包过程中,我遇到一些问题。

第一个是报错“[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?”,这个错误就是需要你改jdk编译环境,在Eclipse上 Window—Preference—Java—installed JREs,然后选择jdk。

spring项目局域网 spring项目部署_Linux

修改后,原来的错误解决了,但还有新的错误,控制台报错找不到包和符号,百度一通也没解决,就将它报出缺少的包在pom.xml上都添加上,运行成功。不过这些包有些也是不需要的,需要自己一个一个试然后删除,否则生成的jar文件运行会出现包冲突情况。

linux导入sql文件

想要jar文件正常运行,得在Linux下创建对应的数据库,并将数据库内的数据结构,数据导入。外部sql文件生成就不说了,说下怎么将sql导入Linux下:
将sql文件传输到linux下,存在哪个目录自定义,以“/usr/sql”为例;
mysql -u root -p 进入mysql;
.>create database xxx(数据库名);
.>use xxx(数据库名)
.>source /usr/sql/xxx.sql
完成导入

Linux运行jar文件

首先把jar文件拉入Linux里面,目录自定义,以“/usr/project”为例;
cd /usr/project 进入jar文件所在目录
java -jar xxx.jar
运行成功!