内容指引
SpringBoot 项目介绍;
打包 SpringBoot 项目:
1.pom.xml;
2.application.properties 配置;
3.application-dev.properties 配置;
4.application-prod.properties 配置;
5.data.sql;
6. 打包设置
将 jar 包部署到 linux 服务器:
1. 将 jar 包从 Mac 上传到远程 linux 服务器;
2. 在 Mysql 中创建数据库实例;
3. 以生产配置的方式运行 jar 包
相关技巧
1. 删除数据库;
2. 查看进程;
3. 根据端口查进程;
4. 杀死指定进程
一 SpringBoot 项目介绍
本例用于演示打包部署的 java 项目有如下特点:
1. 采用 jar 包 (而不是 war 包的方式) 的方式打包;
2. 双配置: 开发环境采用内置的内存数据库 h2, 生产环境采用 Mysql 数据库前两篇已经在服务器中用 Docker 的方式安装了 Mysql
二打包 SpringBoot 项目
1.pom.xml
需要特别说明的配置如下:
打包方式
<packaging>jar</packaging>
数据库相关依赖
依赖 JPAh2 数据库 Mysql 数据库
- <dependency>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-starter-data-jpa</artifactId>
- </dependency>
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- </dependency>
- <dependency>
- <groupId>mysql</groupId>
- <artifactId>mysql-connector-java</artifactId>
- <scope>runtime</scope>
- </dependency>
编译插件
- <build>
- <plugins>
- <plugin>
- <groupId>org.springframework.boot</groupId>
- <artifactId>spring-boot-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
以上配置都在云开发平台生成项目初始化代码时设定好了, 无须额外修改
2.application.properties 配置
默认启用开发配置 "dev" 这里云开发平台生成项目初始化代码时设定好了, 无须额外修改
- #Profile 设置
- spring.profiles.active=dev
需要补充的是, 开发环境用的是内置的内存数据库 h2, 这里默认启用开发配置打包能成功, 如果换成 "prod"(生产环境配置), 则可能导致打包失败可能跟我的 Mac 上没安装 Mysql 有关
3.application-dev.properties 配置
开发配置保持默认即可, 无特殊说明
4.application-prod.properties 配置
需要注意的配置如下:
JPA 配置
与前面 Docker 中运行的 Mysql 容器一致, 这里设置数据库名为 pscms, 用户名为 root, 密码为 123456
- #JPA
- spring.datasource.driver-class-name=com.mysql.jdbc.Driver
- spring.datasource.url=jdbc:mysql://localhost:3306/pscms?useUnicode=true&characterEncoding=utf8
- spring.datasource.username=root
- spring.datasource.password=123456
- spring.jpa.hibernate.ddl-auto=update
端口
Tomcat 端口 (server.port) 以及应用监控端口 (management.port) 不要与目标服务器上已用的端口号冲突了(必要的情况下, 还需要在目标服务器的防火墙中允许这两个端口).
其它配置不用修改, 保持云开发平台初始化的生产配置即可
5.data.sql
这里是为 Spring Security 初始化两个用户的 sql 脚本, 注意, 表名一律用小写字母, 否则可能发布时会报找不到表的异常
6. 打包设置
在 "IntelliJ IDEA" 的顶部右边选择 Edit Configurations:
添加一个 Maven 配置:
取一个名称, 如 cms, 然后在 Command line 中输入 clean package, 如下图所示:
如下图, 点击运行按钮, 执行打包:
会生成一个名为 "cms-0.0.1.SNAPSHOT.jar" 的 jar 包, 其中 cms 是本示范项目的项目名:
三将 jar 包部署到 linux 服务器
1. 将 jar 包从 Mac 上传到远程 linux 服务器
可以先将本项目 target 目录中的 jar 包重命名为 "cms.jar":
右键拷贝 jar 包本地地址:
本例不上传到远程服务器, 而是 CentOS 虚拟机
查询指导虚拟机的 ip 是 192.168.10.121, 用户名是 "parallels", 桌面地址是 / home/parallels/Desktop, 在 Mac 终端中用 scp 拷贝 jar 包到虚拟机中(从虚拟机的 linux 终端上传 jar 包到远程 linux 服务器的方法相同)
指令语法: scp -r 本地 jar 包路径 远程服务器用户名 @服务器 IP: 远程存放 jar 包的路径
指令:
scp -r /Users/mac.manon/workspace/JavaProjects/mobi_weiapp_cms/target/cms.jar parallels@192.168.10.121:/home/parallels/Desktop
现在虚拟机桌面就有了 cms.jar:
2. 在 Mysql 中创建数据库实例:
在 SpringBoot 的生产配置中, 我们需要连接的 Mysql 数据库实例为 pscms, 这里, 我们在虚拟机中, 登录 docker 创建数据库, 否则运行 jar 报无法连接的异常步骤如下:
登录容器:
docker exec -it first-mysql bash
登录 Mysql:
mysql -u root -p
输入密码:
创建数据库:
CREATE DATABASE IF NOT EXISTS `pscms`;
创建成功后退出 mysql(quit)退出容器(exit)
3. 以生产配置的方式运行 jar 包
指令:
java -jar /home/parallels/Desktop/cms.jar --spring.profiles.active=prod
现在可以在 CentOS 本地火狐浏览器中用 http://localhost:8888 访问了, 如果在 Mac 中访问则将 localhost 换为虚拟机的 ip(如无法访问, 则可能是防火墙的原因)
四相关技巧
1. 删除数据库
指令:
DROP DATABASE `pscms`;
2. 查看进程
如查看 java 的相关的进程
指令:
ps -ef|grep java
如下图, 我们看到 cms.jar 的进程为 30894
3. 根据端口查进程
如果用方法 2 查询没找到 cms.jar 的进程时, 我们可以根据该程序占用的端口 8888 查询
指令:
netstat -lntp 8888
4. 杀死指定进程
指令:
kill -9 进程号
杀死进程后, 发布的 SpringBoot 项目就无法访问了
来源: https://www.cnblogs.com/cloud-dev/p/linux-xiao-bai-cheng-zhang-zhi-lu9da-bao-bu-shuSpr.html