SpringBoot 部署在linux上
今天中午本来已经在有道云上写好了博客,但是没有代码图片和效果图,那个保存不了,回家打开发现全没了,只有标题。于是重新撸了一遍,所有都是从0开始。很值得学习,也遇到了些问题。不多说开始了,今天主要学习部署项目。
微服务流行的今天,不知道从何时开始每个java后台人员去面试的时候简历上都有一条,熟悉并使用springcloud框架。这也许是微服务大行其道带来的效应,就算你不会去看下博客也能很快上手。大多数如今都会使用,但是极少数会去部署这些微服务,因为只需要负责写接口,然后交给组长或者运维就可以了。如果你学会了部署是不是比他们多一个加分项?部署的方式很多,比如使用docker创建dockerfile文件的形式,这种比较流行,后续有机会搞一下,这里介绍下用脚本启动。
一,项目准备工作
spring boot项目准备
我这里使用的是eclipse,当然你用idea也是差不多的步骤。
新建一个maven项目,因为只是演示,所以不需要太多功能。
下面是我的pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.safe</groupId>
<artifactId>jifeng</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<name>jifeng</name>
<!--依赖版本管理-->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Edgware.SR1</spring-cloud.version>
<projectlombok.version>1.16.18</projectlombok.version>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
<repositories>
<repository>
<id>aliyun</id>
<name>aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</repository>
</repositories>
</project>
需要注意到的是要用到打包的插件,还有阿里的仓库。
然后是一个启动类
package com.safe.jifeng;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@SpringBootApplication //Spring Boot核心注解,用于开启自动配置
public class DemoApplication {
@RequestMapping("/")
String index(){
return "Hello Spring Boot";
}
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
就这些,右键run as java Application控制台就会打印一些信息,默认使用8080端口。
在浏览器输入localhost:8080,就会看到Hello Spring Boot的字样,说明运行成功。
二,打包项目
接下来就需要将项目打包,打包可以打包成war或者jar都可以,自己在pom设置。我一般打包成jar。怎么打包?可以使用命令行,mvn clean 然后mvn install 当然mvn package也可以。我比较懒,采用的插件,直接右键maven run install。第一次打包会去下插件,等下好后就开始打包。
之前打包遇到两个问题,
一个是项目用的jre环境,结果不能打包,改成jdk就好了。
另一个是有的文件字符有问题,极个别,现将文件内容拷出来,删除文件,新建拷进来,重新打包就好了。
这里可以看到打包后的路径,还有打包成功的提示。至此,打包完成。
三,服务端准备
jar要想在服务器上运行,就必须需要java环境支持。首先
还记得上次我说过的mobaxterm吗?这里就体现了他的强大。
只需要连接远程服务器,勾下左下的选项,你cd到哪个目录左边的目录也会随之变化。
首先java -version 发现竟然有openjdk11.我就不用另外配置了,我项目使用的1.8.记住向上兼容于原理,如果你们的没有那就自行安装和项目一致的版本或者更高的。
cd /usr/local/
mkdir web
将jifeng-0.0.1-SNAPSHOT.jar拖拽到左边的目录下就行。
当然你也可以使用ftp上传。
我们看下当前主机的ip
三,项目启动
我们都知道启动一个jar的命令 java -jar xxx.jar
这里我们可以使用java -jar /usr/local/web/jifeng-0.0.1-SNAPSHOT.jar
的确输出了和之前控制台一样的效果。
我们在浏览器输入192.168.220.129:8080
说明项目已经部署好了。但是这样就完事了吗?并没有,因为我们当前是停留在这个界面,如果ctrl+c项目就停止了,而且不能有其他操作,所以我们需要优化。
我这里直接把命令写进脚本,下次直接脚本让他后台启动就行。
touch serstar.sh chmod -R 777 serstar.sh
vim serstar.sh
依次是创建一个脚本 并赋予可执行的权限,编辑脚本
后台执行jar并将结果输出到制定文件,这个目录和文件要提前建好。
如果需要更新jar,需要现将jar停止。
这里只是这样,还不够完善,但是也够用,如果是项目中记得备份,将上一次的备份到一个目录里面,然后再用新的文件覆盖旧的即可。
我按照上面的serstop.sh有点问题,我自己也没学过shell,这是从网上拷的,报的是pid没有和kill使用有问题。我下次琢磨后再修改。