目录
序
【前言】:
本地跑一个springboot(IDEA)、vue(HBuilder),都是超占内存,且伤感的一件事,虽然笔记本性能还可以,拖得起,但是狂暴模式散热影响敲代码的心情;今天计划:
- 数据库:把数据库弄到阿里云上,springboot远程连阿里云的
mysql5
数据库
(需要和本地mysql8做一下兼容,把本地sql建表也移动上去) - 部署后端:把
springboot
项目打成war
包丢在阿里云的Apache-tomcat
下
(springboot内置tomcat要处理一下,因为将会用到外部tomcat) - 前端部署:Vue模块有两个方案
(3.1)cnpm run build
打包dist
文件夹直接丢Apache
目录(资源路径匹配可能会有问题,打包时处理)
(3.2)部署到nignx
代理服务上(我的云服务器暂时没有设置,看情况)
【系统】:
- 本地 :win10 + IDEA + MySQL8 + HBuilder
- 连接:Xftp + Xshell + Navicat
- 云服务器:阿里云ETC控制台 + LAMP +MySQL5
- 技术栈:springboot + Vue + Linux
【总结】:
一步一步做就好了,今天不是coder是运维了,哈哈哈哈~
正文
1. springboot连接服务器数据库
1.1 数据库迁移
Navicat优点:远程连接数据库、本地数据库;图中分别是我连接了:
- aliyun数据库、腾讯云数据库
- 本地数据库、本地SQLite数据库
本次只需要把本地mysql8导出sql建表,在云服务器运行建表语句就可以了,很方便。
步骤1:本地导出sql(左图)
步骤2:云数据库,新建同名数据库,导入建表语句(右图)
步骤3:重新连接数据库(刷新),表与数据均建好了,超级方便:
参考配置:
为了解决:服务器Mysql5.7【中文字符乱码】问题
1.2 远程连接测试
因为前端配置的mysql-connector
运行版本为runtime
,这里不必要过多考虑jar包问题。
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
- springboot只修改
application.properties
如下:## 端口号 server.port=8090 ## 数据源配置 ## 本地mysql8 #spring.datasource.url=jdbc:mysql://127.0.0.1:3306/springboot_mysql?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF8 #spring.datasource.username=root #spring.datasource.password=wy123456 #spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver ## 服务器mysql5 spring.datasource.url=jdbc:mysql://47.93.50.90:3306/springboot_mysql?serverTimezone=UTC&useSSL=false&useUnicode=true&characterEncoding=UTF8 spring.datasource.username=root spring.datasource.password=wy123456 spring.datasource.driver-class-name=com.mysql.jdbc.Driver spring.jpa.hibernate.ddl-auto=update spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect spring.jpa.show-sql=true
- 运行测试:
http://localhost:8090/user/findUserById?id=12
返回内容:{“address”:“上海”,“age”:21,“id”:12,“name”:“wang”,“password”:123}
springboot远程连接服务器数据库就算完成了! ?
2. springboot打包发布到服务器
2.1 开放远程端口
- 强调因为发布在外部tomcat中,我们
application.properties
文件配置是8090无效,server.port=8090
- 在运控制台开放窗口(阿里云步骤如下,其他平台需要自己百度)
找到云服务实例-》更多-》网络和安全组-》安全组配置-》配置规则-》添加安全组规则
我在云tomcat 开放的端口号是8080,0.0.0.0/0是允许所有网址访问:
配置完成效果:
2.1 打包本地项目
参考:部署springboot项目到云服务器的两种方式(jar+war)
1、jar包部署方式使用Spring Boot 自带的Tomcat,因为Spring Boot 应用自带Tomcat,所以可直接在服务器运行jar文件
2、war包部署方式则使用云服务器里的Tomcat,此时需要移除Spring Boot 自带的Tomcat插件
这里用war
方式部署,需要在本地确认或修改一些配置:
-
pom中打包规则为
war
形式:
主要依赖:(2.移除嵌入式tomcat、3.添加servlet-api的依赖)
-
移除嵌入式tomcat插件(
provided
:编译、测试时将依赖的包加入本工程的classpath,运行时不加入,可以理解成运行时不使用Spring Boot 自带的Tomcat)<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!-- 移除嵌入式tomcat插件 --> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> </exclusion> </exclusions> </dependency>
-
添加servlet-api的依赖,最新版本点这查看,原理:maven里面在编译阶段是依赖servlet api的,所以当然要包含。但是在运行阶段是放到 tomcat 容器的,所以要设置好servlet依赖的scope。
不建议使用最新版,放正我是遇到bug和spring版本冲突,用的3.1稳定版
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency>
-
修改启动类,并重写初始化方法
package com.springboot.three; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; @SpringBootApplication public class ThreeApplication extends SpringBootServletInitializer {//继承自动启动项 @Override protected SpringApplicationBuilder configure(SpringApplicationBuilder application){ return application.sources(ThreeApplication.class);//你的项目启动类名 } public static void main(String[] args) { SpringApplication.run(ThreeApplication.class, args); } }
-
四步打包生成war包
(1)打开右侧maven
(2)找到Lifecycle
(3)双击运行package
(5)在项目下target文件夹下找到同名war
包
2.2 发布项目
-
在项目下target文件夹下找到同名
war
包,右键copy Path
复制路径参考路径:
D:\myworkspace\1GitHub_cungudafa\demothree\target\three-0.0.1-SNAPSHOT.war -
将本地war用xftp上传到服务器Tomcat/webapps/目录下:
参考路径:
/usr/local/apache-tomcat-9.0.16/webapps
强拽即可上传:
-
在xhell中重启tomcat服务器,
cd ~ cd /usr/local/apache-tomcat-9.0.16/bin ./startup.sh
-
在浏览器运行:
http://cungudafa.top:8080/three-0.0.1-SNAPSHOT/user/list
注意:注意:注意!!!
(1)8080为云外部端口号,application.properties
外部tomcat会用外部tomcat端口号访问,server.port=8090
端口会失效(2)名称对应,导出的war包全名称 (可以随便更改这个名字,直接重命名,访问路径对应改变)
(3)访问:
http://ip地址 : 外部tomcat端口号/war包全名/访问路径
(4)上传war之后,必须重启tomcat
运行效果:
我是直接在xftp中改名,改名后访问:http://cungudafa.top:8080/springboot/user/list
这样自定义服务器api接口就发布成功了!?后期管理:
(1)Navicat直接管理数据,
(2)Vue 前端修改api地址:
本地测试api接口 改为 服务器api接口:
原:axios.defaults.baseURL="http://localhost:8090"
修改为:axios.defaults.baseURL="http://cungudafa.top:8080/springboot"
3. 总结及源码
Github
后端:https://github.com/cungudafa/Springboot ----Day9
前端:https://github.com/cungudafa/Vue/