目錄
- 序
- 正文
-
- 1. springboot連接配接伺服器資料庫
-
- 1.1 資料庫遷移
- 1.2 遠端連接配接測試
- 2. springboot打包釋出到伺服器
-
- 2.1 開放遠端端口
- 2.1 打包本地項目
- 2.2 釋出項目
- 3. 總結及源碼
序
【前言】:
本地跑一個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中,我們
檔案配置是8090無效,application.properties
- 在運控制台開放視窗(阿裡雲步驟如下,其他平台需要自己百度)
我在雲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中打包規則為
形式: 主要依賴:(2.移除嵌入式tomcat、3.添加servlet-api的依賴)war
- 移除嵌入式tomcat插件(
:編譯、測試時将依賴的包加入本工程的classpath,運作時不加入,可以了解成運作時不使用Spring Boot 自帶的Tomcat)provided
<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)打開右側
(2)找到maven
(3)輕按兩下運作Lifecycle
(5)在項目下target檔案夾下找到同名package
包war
2.2 釋出項目
參考:[阿裡雲伺服器] war包遠端釋出到阿裡雲Tomcat伺服器
- 在項目下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為雲外部端口号,
外部tomcat會用外部tomcat端口号通路,application.properties
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/