天天看點

部署Springboot項目到阿裡雲伺服器序正文

目錄

  • 正文
    • 1. springboot連接配接伺服器資料庫
      • 1.1 資料庫遷移
      • 1.2 遠端連接配接測試
    • 2. springboot打包釋出到伺服器
      • 2.1 開放遠端端口
      • 2.1 打包本地項目
      • 2.2 釋出項目
    • 3. 總結及源碼

【前言】:

本地跑一個springboot(IDEA)、vue(HBuilder),都是超占記憶體,且傷感的一件事,雖然筆記本性能還可以,拖得起,但是狂暴模式散熱影響敲代碼的心情;今天計劃:

  1. 資料庫:把資料庫弄到阿裡雲上,springboot遠端連阿裡雲的

    mysql5

    資料庫

    (需要和本地mysql8做一下相容,把本地sql建表也移動上去)

  2. 部署後端:把

    springboot

    項目打成

    war

    包丢在阿裡雲的

    Apache-tomcat

    (springboot内置tomcat要處理一下,因為将會用到外部tomcat)

  3. 前端部署: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資料庫
    部署Springboot項目到阿裡雲伺服器序正文

本次隻需要把本地mysql8導出sql建表,在雲伺服器運作建表語句就可以了,很友善。

步驟1:本地導出sql(左圖)

步驟2:雲資料庫,建立同名資料庫,導入建表語句(右圖)

部署Springboot項目到阿裡雲伺服器序正文
部署Springboot項目到阿裡雲伺服器序正文

步驟3:重新連接配接資料庫(重新整理),表與資料均建好了,超級友善:

部署Springboot項目到阿裡雲伺服器序正文

參考配置:

為了解決:伺服器Mysql5.7【中文字元亂碼】問題

1.2 遠端連接配接測試

因為前端配置的

mysql-connector

運作版本為

runtime

,這裡不必要過多考慮jar包問題。

<dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <scope>runtime</scope>
        </dependency>
           
  1. 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
    
               
  2. 運作測試:

    http://localhost:8090/user/findUserById?id=12

    傳回内容:
    {“address”:“上海”,“age”:21,“id”:12,“name”:“wang”,“password”:123}

springboot遠端連接配接伺服器資料庫就算完成了! ?

2. springboot打包釋出到伺服器

2.1 開放遠端端口

  1. 強調因為釋出在外部tomcat中,我們

    application.properties

    檔案配置是8090無效,
  2. 在運控制台開放視窗(阿裡雲步驟如下,其他平台需要自己百度)

    找到雲服務執行個體-》更多-》網絡和安全組-》安全組配置-》配置規則-》添加安全組規則

    我在雲tomcat 開放的端口号是8080,0.0.0.0/0是允許所有網址通路:
    部署Springboot項目到阿裡雲伺服器序正文
    配置完成效果:
    部署Springboot項目到阿裡雲伺服器序正文

2.1 打包本地項目

參考:部署springboot項目到雲伺服器的兩種方式(jar+war)

1、jar包部署方式使用Spring Boot 自帶的Tomcat,因為Spring Boot 應用自帶Tomcat,是以可直接在伺服器運作jar檔案

2、war包部署方式則使用雲伺服器裡的Tomcat,此時需要移除Spring Boot 自帶的Tomcat插件

這裡用

war

方式部署,需要在本地确認或修改一些配置:

  1. pom中打包規則為

    war

    形式:
    部署Springboot項目到阿裡雲伺服器序正文
    主要依賴:(2.移除嵌入式tomcat、3.添加servlet-api的依賴)
    部署Springboot項目到阿裡雲伺服器序正文
  2. 移除嵌入式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>
               
  3. 添加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>
    
               
  4. 修改啟動類,并重寫初始化方法
    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);
        }
    
    }
    
               
  5. 四步打包生成war包

    (1)打開右側

    maven

    (2)找到

    Lifecycle

    (3)輕按兩下運作

    package

    (5)在項目下target檔案夾下找到同名

    war

    部署Springboot項目到阿裡雲伺服器序正文

2.2 釋出項目

參考:[阿裡雲伺服器] war包遠端釋出到阿裡雲Tomcat伺服器
  1. 在項目下target檔案夾下找到同名

    war

    包,右鍵

    copy Path

    複制路徑

    參考路徑:

    D:\myworkspace\1GitHub_cungudafa\demothree\target\three-0.0.1-SNAPSHOT.war

  2. 将本地war用xftp上傳到伺服器Tomcat/webapps/目錄下:
    參考路徑:

    /usr/local/apache-tomcat-9.0.16/webapps

    強拽即可上傳:
    部署Springboot項目到阿裡雲伺服器序正文
  3. 在xhell中重新開機tomcat伺服器,
    cd ~
    cd /usr/local/apache-tomcat-9.0.16/bin
    ./startup.sh
               
  4. 在浏覽器運作:

    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

    運作效果:

    部署Springboot項目到阿裡雲伺服器序正文
    我是直接在xftp中改名,改名後通路:

    http://cungudafa.top:8080/springboot/user/list

    部署Springboot項目到阿裡雲伺服器序正文
    部署Springboot項目到阿裡雲伺服器序正文

    這樣自定義伺服器api接口就釋出成功了!?

    後期管理:

    (1)Navicat直接管理資料,

    (2)Vue 前端修改api位址:

    本地測試api接口 改為 伺服器api接口:

    原:

    axios.defaults.baseURL="http://localhost:8090"

    修改為:

    axios.defaults.baseURL="http://cungudafa.top:8080/springboot"

    部署Springboot項目到阿裡雲伺服器序正文

3. 總結及源碼

Github

後端:https://github.com/cungudafa/Springboot ----Day9

前端:https://github.com/cungudafa/Vue/

繼續閱讀