主頁 > 軟體設計 > SpringBoot+Vue專案部署到Linux服務器

SpringBoot+Vue專案部署到Linux服務器

2021-12-09 07:57:11 軟體設計

SpringBoot+Vue專案部署到Linux服務器

Note:

1、Linux服務器選用的是CentOS7.7,其他型別也可以
2、需要在服務器配置jdk,服務SpringBoot專案
3、后端打包型別為jar包,war包需要自行修改后端配置
4、需要在服務器配置Nginx,服務Vue專案
5、暫未部署Docker,后續更新

1、服務器配置

1.1 安裝寶塔

  • 參考寶塔官方教程即可,首先登錄服務器,設定安全組放行埠,把8888放開,然后使用終端執行命令(以CentOS為例)

    yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh 2c87998c
    
  • 安裝完成后記錄終端處的登錄入口、賬號、密碼,然后登錄

  • 登錄后需要注冊個賬號,注冊系結后即可正常使用寶塔

1.2 安裝并配置MySQL、Redis、Nginx

  • 使用寶塔安裝Mysql、Redis、Nginx,便于管理
  • 在寶塔的軟體商店中搜索Mysql、Redis、Nginx并快捷安裝

1.3 創建資料庫并匯入資料

  • 進入寶塔的資料庫界面,添加資料庫,填寫資料庫名、選擇字符集、設定訪問權限為所有人(這樣才能使用其他終端訪問),完成后提交,提示添加成功即為創建成功
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-fkjp1sk8-1638865326066)(C:\Users\Q\AppData\Roaming\Typora\typora-user-images\image-20211206191659514.png)]
  • 創建成功后,點擊匯入,把本地資料庫的測驗資料匯入到服務器中的資料庫,提示匯入資料庫成功即可,在這里插入圖片描述
    在這里插入圖片描述在這里插入圖片描述

1.4 安裝并配置jdk

1.4.1 官網下載JDK并上傳到服務器

  • 從官網下載可用于Linux的jdk包,通過寶塔上傳到服務器

  • 建議上傳到/www/server下

    PS:/www/server是寶塔軟體的默認安裝目錄,把軟體都放到一起,方便查找

  • 然后使用終端,進入jdk的上傳目錄,使用解壓命令,把上傳的jdk檔案解壓到當前目錄,然后把解壓后的檔案夾重命名為jdk8

    tar -zxvf jdk-8u311-linux-x64.tar.gz
    mv jdk1.8.0_311 jdk8
    

1.4.2 配置環境變數

  • 1.打開 /etc/profile 檔案

    vim profile
    
  • 2.在 profile 檔案末尾,配置jdk環境

    export JAVA_HOME=/www/server/jdk8
    export CLASSPATH=$:CLASSPATH:$JAVA_HOME/lib/
    export PATH=$JAVA_HOME/bin:$PATH
    export JRE_HOME=$JAVA_HOME/jre
    
  • 3.使 profile 生效

    source profile
    
  • 4.查看jdk是否配置成功

    java -version 
    

    顯示版本號即為配置成功

1.5 安全組配置、放行埠配置

1.5.1 安全組配置

  • 登錄云服務器,在控制臺處找到服務器,然后對安全組規則進行更改

  • 以華為云為例,在入方向規則處添加前后端使用的埠(如8080和8081)
    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-zB2nM8g3-1638865326069)(C:\Users\Q\AppData\Roaming\Typora\typora-user-images\image-20211207141808228.png)]

1.5.2 放行埠配置

  • 在寶塔的安全功能中放行前后端專案需要使用的埠,如8080和8081在這里插入圖片描述

2、SpringBoot專案配置

2.1 配置修改

  • 后端拆分application.yml組態檔,可拆分出本地dev和生產pro兩個(也可以多拆出test)在這里插入圖片描述

  • application.yml檔案中保留通用配置在這里插入圖片描述

  • application-dev.yml檔案中配置本地運行專案所用的配置在這里插入圖片描述

  • application-pro.yml檔案中配置服務器中運行專案所用的配置,其中服務器資料庫名稱,即為1.3節中添加的資料庫名,密碼從寶塔界面點擊復制即可,注意不是使用root密碼,而是使用剛創建的資料庫的密碼(下圖有誤,redis的host保持127.0.0.1即可)在這里插入圖片描述在這里插入圖片描述

  • dev和pro的不同之處主要是MySQL的配置,

    • pro中需要按照服務器的IP和資料庫配置來填寫,可在application.yml檔案中修改active指向pro,來測驗是否能夠成功連接服務器中的資料庫

2.2 打包

  • 修改application.yml檔案中的active:pro,然后執行maven clean,清除本地測驗時生成的jar包在這里插入圖片描述
  • 執行maven package,后端專案打包完成在這里插入圖片描述

2.3 上傳到服務器

  • 找到專案路徑下打包出的檔案 target,找到target下的打包檔案,后綴名是 .jar,即可運行的jar包,然后使用寶塔將其從本地路徑中上傳到服務器,路徑可以為 /www/wwwroot/project_name,末尾的project_name檔案夾可按照自己需求新建

    PS:/www/wwwroot路徑是寶塔默認建站目錄,放到此處便于查找

    [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-lvcAnWm8-1638865326074)(C:\Users\Q\AppData\Roaming\Typora\typora-user-images\image-20211207142402694.png)]

2.4 后端專案服務器配置

  • 只需確保jdk安裝成功,且jar包上傳成功即可

2.5 運行測驗

2.5.1 運行后端jar包

在Linux系統下有多種運行jar包的方式,建議使用方法d,保留專案運行日志,日志檔案會生成到專案同級路徑下,

  • a.當前終端被鎖定,可按CTRL + C打斷程式運行,或關閉視窗退出程式

    java -jar xxx.jar  
    
  • b.當前終端不被鎖定,但是當視窗關閉時,程式中止運行

    java -jar xxx.jar &
    
  • c.不掛斷運行命令,當賬戶退出或終端關閉時,程式仍然運行

    nohup java -jar xxxx.jar &
    
  • d.指定輸出日志檔案,不掛斷運行命令,退出或終端關閉時程式仍然運行

    nohup java -jar xxx.jar > project.log
    

2.5.2 查看日志檔案

  • 建議使用動態查看命令,查看實時更新的日志,打開一個新的終端,輸入如下命令:

    tail -f project.log
    

2.5.2 停止運行后端jar包

  • 若使用2.5.1種的方法a、b,直接關閉終端即可

  • 若使用2.5.1種的方法c、d,需要查找后端使用埠(這個埠號是填寫在SpringBoot專案的application.yml檔案中server項中的)占用的行程號,然后關閉行程,即可停掉jar包的運行,命令如下:

    netstat -tunlp | grep 埠號
    
    // 得到行程號
    
    kill -9 行程號
    
  • 操作如圖,8081是我的后端專案占用的埠號,13061是行程ID
    在這里插入圖片描述

3、Vue專案配置

3.1 配置修改

  • axios.js檔案的URL配置為 服務器公網IP:埠號

  • axios.defaults.baseURL = "http://服務器公網IP:埠號"
    // axios.defaults.baseURL = "http://localhost:埠號" 本地使用localhost
    

3.2 打包

  • 打包命令

    npm run build
    
  • 打包后的檔案名為dist,可在專案路徑下查看

3.3 上傳到服務器

  • 通過寶塔可直接上傳dist檔案夾,如果沒有寶塔,可以將dist檔案夾壓縮后上傳到服務器
  • 建議上傳到與2.3節中提到的后端專案上傳路徑中,相同一個需求的前后端專案放到同一個檔案夾中便于查找:/www/wwwroot/project_name

3.4 前端專案服務器配置

  • 需要對服務器的Nginx進行配置,以滿足前端專案的運行

  • 通過寶塔安裝Nginx,其默認的組態檔會被備份為 nginx.conf.default,且生成一份新的組態檔 nginx.conf,

  • 如果是使用寶塔安裝的Nginx,則檔案存放路徑為/www/server/nginx/conf

  • 首先從 nginx.conf.default 中復制一份以 server 為標簽的代碼,如下圖:在這里插入圖片描述

  • 真正需要修改檔案的是 nginx.conf,此檔案可以通過寶塔界面的“軟體商店”—“Nginx”—“設定”—“配置修改”來修改,在此處修改時如果修改的格式有誤等錯誤會被提示無法保存
    在這里插入圖片描述

  • 上一步復制的server代碼段復制到檔案中的 include 標簽上方(組態檔中會有一個已經存在的server 標簽,不需要覆寫,順著它粘貼代碼段A即可,不會沖突)

  • 洗掉代碼段中所有注釋,保留四個未被注釋的標簽(listen、server_name、location / 、error_page)即可

  • 修改上述四個標簽

    • (1)listen標簽后填寫前端專案要使用的埠號

    • (2)server_name標簽填寫服務器公網IP

    • (3)location標簽的root標簽填寫vue專案的打包檔案dist的路徑

    • (4)location標簽的添加一行代碼標簽防止重繪出現404

      try_files $uri $uri/ /index.html; 
      
    • (5)error_page標簽不需要變動
      + 修改后內容如圖[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-N1RjvpYY-1638865326076)(C:\Users\Q\Desktop\螢屏截圖 2021-12-07 152729.png)]

  • 多載Nginx配置并重新啟動即可,在寶塔的界面操作很方便在這里插入圖片描述

3.5 運行測驗

  • 確保已經多載Nginx配置并重新啟動
  • 在瀏覽器輸入服務器公網IP:埠,查看是否能夠進入vue專案首頁

4、部署到服務器的前后端聯調測驗

4.1 運行后端專案

  • nohup java -jar xxx.jar > project.log

4.2 運行前端專案

  • 啟動Nginx

4.3 訪問與功能測驗

  • 瀏覽器輸入服務器公網IP:埠,測驗能否進入專案
  • 測驗專案功能是否完整可用
  • 測驗是否有功能與本地測驗效果不符

5、后續部署Docker(待完成)

6、可能存在的問題:

1、打包失敗

  • 保錯:

    Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project XXX: There are test failures.

    Please refer to D:\IDEAWorkSpace\vueblog\target\surefire-reports for the individual test results.
    Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.

  • 解決

    使用命令,跳過測驗打包

    mvn clean package -Dmaven.test.skip=true
    

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/377029.html

標籤:其他

上一篇:Dockerfile(Dockerfile的詳細使用、通過Dockerfile構建apache鏡像)

下一篇:【期末不掛科】計算機網路 物理層

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 面試突擊第一季,第二季,第三季

    第一季必考 https://www.bilibili.com/video/BV1FE411y79Y?from=search&seid=15921726601957489746 第二季分布式 https://www.bilibili.com/video/BV13f4y127ee/?spm_id_fro ......

    uj5u.com 2020-09-10 05:35:24 more
  • 第三單元作業總結

    1.前言 這應該是本學期最后一次寫作業總結了吧。總體來說,對作業的節奏也差不多掌握了,作業做起來的效率也更高了。雖然和之前的作業一樣,作業中都要用到新的知識,但是相比之前,更加懂得了如何利用工具以及資料。雖然之間卡過殼,但總體而言,這幾次作業還算完成的比較好。 2.作業程序總結 相比前兩個單元,此單 ......

    uj5u.com 2020-09-10 05:35:41 more
  • 北航OO(2020)第四單元博客作業暨課程總結博客

    北航OO(2020)第四單元博客作業暨課程總結博客 本單元作業的架構設計 在本單元中,由于UML圖具有比較清晰的樹形結構,因此我對其中需要進行查詢操作的元素進行了包裝,在樹的父節點中存盤所有孩子的參考。考慮到性能問題,我采用了快取機制,一次查詢后盡可能快取已經遍歷過的資訊,以減少遍歷次數。 本單元我 ......

    uj5u.com 2020-09-10 05:35:48 more
  • BUAA_OO_第四單元

    一、UML決議器設計 ? 先看下題目:第四單元實作一個基于JDK 8帶有效性檢查的UML(Unified Modeling Language)類圖,順序圖,狀態圖分析器 MyUmlInteraction,實際上我們要建立一個有向圖模型,UML中的物件(元素)可能與同級元素連接,也可與低級元素相連形成 ......

    uj5u.com 2020-09-10 05:35:54 more
  • 6.1邏輯運算子

    邏輯運算子 1. && 短路與 運算式1 && 運算式2 01.運算式1為true并且運算式2也為true 整體回傳為true 02.運算式1為false,將不會執行運算式2 整體回傳為false 03.只要有一個運算式為false 整體回傳為false 2. || 短路或 運算式1 || 運算式2 ......

    uj5u.com 2020-09-10 05:35:56 more
  • BUAAOO 第四單元 & 課程總結

    1. 第四單元:StarUml檔案決議 本單元采用了圖模型決議UML。 UML檔案可以抽象為圖、子圖、邊的邏輯結構。 在實作中,圖的節點包括類、介面、屬性,子圖包括狀態圖、順序圖等。 采用了三次遍歷UML元素的方法建圖,第一遍遍歷建點,第二、三次遍歷設定屬性、連邊,實作圖物件的初始化。這里借鑒了一些 ......

    uj5u.com 2020-09-10 05:36:06 more
  • 談談我對C# 多型的理解

    面向物件三要素:封裝、繼承、多型。 封裝和繼承,這兩個比較好理解,但要理解多型的話,可就稍微有點難度了。今天,我們就來講講多型的理解。 我們應該經常會看到面試題目:請談談對多型的理解。 其實呢,多型非常簡單,就一句話:呼叫同一種方法產生了不同的結果。 具體實作方式有三種。 一、多載 多載很簡單。 p ......

    uj5u.com 2020-09-10 05:36:09 more
  • Python 資料驅動工具:DDT

    背景 python 的unittest 沒有自帶資料驅動功能。 所以如果使用unittest,同時又想使用資料驅動,那么就可以使用DDT來完成。 DDT是 “Data-Driven Tests”的縮寫。 資料:http://ddt.readthedocs.io/en/latest/ 使用方法 dd. ......

    uj5u.com 2020-09-10 05:36:13 more
  • Python里面的xlrd模塊詳解

    那我就一下面積個問題對xlrd模塊進行學習一下: 1.什么是xlrd模塊? 2.為什么使用xlrd模塊? 3.怎樣使用xlrd模塊? 1.什么是xlrd模塊? ?python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫。 今天就先來說一下xl ......

    uj5u.com 2020-09-10 05:36:28 more
  • 當我們創建HashMap時,底層到底做了什么?

    jdk1.7中的底層實作程序(底層基于陣列+鏈表) 在我們new HashMap()時,底層創建了默認長度為16的一維陣列Entry[ ] table。當我們呼叫map.put(key1,value1)方法向HashMap里添加資料的時候: 首先,呼叫key1所在類的hashCode()計算key1 ......

    uj5u.com 2020-09-10 05:36:38 more
最新发布
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:20:47 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:20:25 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:20:17 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:20:10 more
  • 【中介者設計模式詳解】C/Java/JS/Go/Python/TS不同語言實作

    * 中介者模式是一種行為型設計模式,它可以用來減少類之間的直接依賴關系,
    * 將物件之間的通信封裝到一個中介者物件中,從而使得各個物件之間的關系更加松散。
    * 在中介者模式中,物件之間不再直接相互互動,而是通過中介者來中轉訊息。 ......

    uj5u.com 2023-04-20 08:19:44 more
  • 露天煤礦現場調研和交流案例分享

    他們集團的資訊化公司及研究院在一個礦區正在做智能礦山的統一平臺的 試點,專案投資大概1億,包括了礦山的各方面的內容,顯示得我們這次交流有點多余。他們2年前開始做智能礦山的規劃,有很多煤礦行業專家的加持,他們的描述是非常完美,但是去年底應該上線的平臺,現在還沒有看到影子。他們確實有很多場景需求,但是被... ......

    uj5u.com 2023-04-20 08:19:07 more
  • 《社區人員管理》實戰案例設計&個人案例分享

    設計是一個讓人夢想成真程序,開始編碼、測驗、除錯之前進行需求分析和架構設計,才能保證關鍵方面都做正確 ......

    uj5u.com 2023-04-20 08:18:57 more
  • 軟體架構生態化-多角色交付的探索實踐

    作為一個技術架構師,不僅僅要緊跟行業技術趨勢,還要結合研發團隊現狀及痛點,探索新的交付方案。在日常中,你是否遇到如下問題 “ 業務需求排期長研發是瓶頸;非研發角色感受不到研發技改提效的變化;引入ISV 團隊又擔心質量和安全,培訓周期長“等等,基于此我們探索了一種新的技術體系及交付方案來解決如上問題。 ......

    uj5u.com 2023-04-20 08:18:49 more
  • 05單件模式

    #經典的單件模式 public class Singleton { private static Singleton uniqueInstance; //一個靜態變數持有Singleton類的唯一實體。 // 其他有用的實體變數寫在這里 //構造器宣告為私有,只有Singleton可以實體化這個類! ......

    uj5u.com 2023-04-19 08:42:51 more
  • 【架構與設計】常見微服務分層架構的區別和落地實踐

    軟體工程的方方面面都遵循一個最基本的道理:沒有銀彈,架構分層模型更是如此,每一種都有各自優缺點,所以請根據不同的業務場景,并遵循簡單、可演進這兩個重要的架構原則選擇合適的架構分層模型即可。 ......

    uj5u.com 2023-04-19 08:42:41 more