项目发布流程:
后端:
1、在ides工具中打jar包
2、连接服务器,查看端口:netstat -lanp;根据端口杀死进程:kill -9 进程号;上传命令rz或者工具,将jar上传到服务器上
3、运行jar包:nohup java -jar>edlog.out2>&1&
4、查询日志:tail -n 50 nohup.out,查看运行日志
前端:
1、工具7zip生成tar.gz文件
2、上传到服务器,命令rz
3、复制进docker容器中对应的文件:docker cp /root/dist.tar.gz 容器id:docker内文件路径
4、进入容器内:docker exec it bf19a0a /bin/bash(bf19a0a为容器id,docker ps查看)
5、删除原文件:rm -rf 文件名,(保留tar.gz文件);解压复制进去的.tar.gz文件:tar -zxcf .tar.gz文件
6、退出容器:exit;重启docker容器:docker start 容器id;停止容器:docker stop 容器id
docker打包
后端是开发工具idea打成jar包直接放到服务器运行的
前端打成后缀为gz的包复制到docker相应的文件中然后 进去docker解压 退出docker然后重新启动docker
一、环境
- Java 8
- Maven 3.3+
- idea 2018(个人)
环境要先安装好。
1、关于 maven 配置
配置本地仓库
官网下载好 zip 包后解压,然后里面新建一个仓库目录 repository
。
打开 conf 目录下的 配置文件 settings.xml
。
在第 55 行的位置号,配置上你的repository
路径。
配置阿里云镜像
继续在配置文件里,配置阿里云的镜像。
<mirrors>
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>central</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>jdk-1.8</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.8</jdk>
</activation>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
</properties>
</profile>
</profiles>
这里的profiles
是指定使用 jdk 1.8进行编译,以防开发中出现一些其他的问题。找个空位置粘贴即可。
二、编写 helloworld
1. idea 设置 maven
打开 idea 的 Settings,把本地的 maven 设置好。
2. 创建 maven 项目
下一步:
点击 finish 结束。
3. pom 中导入父工程
打开pom.xml
在<project>
中导入。
<!--导入父工程-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.4.RELEASE</version>
</parent>
4. 添加依赖
之前开发个 web 要导一大堆,现在只要在<project>
添加一个依赖即可。仍然是在pom.xml
中:
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
导入完成后,点开这里的库,会发现该有的都有了。
如果没有依赖,原因可能是:IDEA内置了Maven环境,默认采用Maven解决项目依赖问题。在新建项目后,项目的路径中会生成pom.xml文件和项目名.iml文件。新建项目后,IDEA不会自动刷新Maven的依赖。
刷新Maven配置的方法为:右键单击项目,在弹出菜单中选择Maven》》》》Reimport菜单项。
5. 编写代码
目录结构如下图:
(1)主程序类
package com.pingguo.boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
// 标记这是一个 springboot应用,这个类是主程序类,所有启动的入口
@SpringBootApplication
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}
(2)controller
接下来就跟以前一样了,写一个控制器:
package com.pingguo.boot.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello() {
return "Hello SpringBoot2";
}
}
@RestController
是一个复合注解,表示@Controller + @ResponseBody
。这些知识已经在前面springMVC
相关内容中学习过了。
6. 运行程序
直接运行上面写好的主运行程序即可(run MainApplication)。
点击运行:
就是这么简单。
7. 访问请求
打开浏览器访问http://localhost:8080/hello
:
请求成功。
8. 简化配置
springboot可以最大化简化配置,比如我们可以将未来要使用到的一些配置,全部抽取到一个配置文件里application.properties
。
在这里,可以修改关于tomcat的一些设置、springMVC相关的设置等等,比如修改tomcat端口号:
server.port=8888
重新启动应用:
这里具体能写哪些配置,详见官方文档 https://docs.spring.io/spring-boot/docs/current/reference/html/
已经安排的明明白白的。
9. 简化部署
在之前要部署应用,先得把应用打成 war 包。
现在只要引入一个依赖,就可以直接把项目打成一个可执行的 jar 包,里面包含了运行环境,所以可以直接在目标服务器运行。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
双击右侧maven》lifecycle》package,打包。
打包完成。
项目目录中的target,已经有了 jar 包(boot-01-helloworld-1.0-SNAPSHOT.jar)。
现在停止刚才运行的服务,直接用 java 运行这个 jar 包尝试一下:
java -jar boot-01-helloworld-1.0-SNAPSHOT.jar
启动成功。