零、前言
第一次給系統上線,雖然團隊內已經有其他同學寫過部署文件https://segmentfault.com/a/11...,但本文中我們需要補充一些細節,使操作更簡便
本文主要是補充內容,所以假設伺服器上已經部署了執行環境、資料庫和nginx。
一、連線伺服器
我們通常使用SSH連線Linux伺服器,使用scp命令在本地和伺服器之間傳輸檔案。
那麼有沒有更方便的方法呢?答案是有的。
可以藉助SFTP工具,來實現圖形化傳輸檔案,就像在自己電腦操作上一樣。
Windows -> WinSCP
官網地址: https://winscp.net/eng/index.php
這個工具可以與伺服器建立SSH連線,並且圖形化瀏覽伺服器上的檔案,並支援拖拽。
MacOS -> Termius
官網地址: https://www.termius.com/
與WinSCP功能相同,既能管理檔案,也能執行Bash命令。
並且Termius支援MacOS、Linux、Windows、Android,網上能找到和諧版本。
有了這種視覺化SFTP工具後,拷貝檔案就不需要再用命令列了。
二、編譯專案
Angular:
// 編譯Angular專案
ng build
然後就可以生成dist資料夾,angular程式碼全部編譯成了原生JavaScript程式碼。
稍後需要用到dist中的所有檔案
SpringBoot:
// 編譯SpringBoot專案
mvn clean package
我們只需要用到target中的appName.jar這個檔案。
需要注意的是,編譯過程會把包括配置檔案在內的所有檔案封裝,這意味著編譯後就不能隨意更改埠號、資料庫等各種配置資訊,因此在編譯前,需要把各個引數調整至與生產環境一致。
三、複製檔案
開啟SFTP工具,找到原來的程式碼位置。
為了穩妥起見,不要直接刪除上個版本的程式碼,而是將它們重新命名(萬一出錯了還能恢復)。
然後直接把資料夾拽過去即可。
四、關閉歷史專案的程式,啟動新程式
Angular
由於前端使用的HTML三件套、伺服器是Apache或Nginx負責,當伺服器上的程式碼檔案變更時,一重新整理就能載入新的程式碼,所以不需要重啟服務。
SpringBoot
但Java專案一旦執行,是不能自動檢測變更的,所以必須重啟這個Java程式。
// 檢視埠占用情況
sockstat -4l | grep 後端的埠號
// 舉例
sockstat -4l | grep 8093
// 返回值(本例中,2279為程式號)
// log java 2279 26 tcp46 *:8080 *:*
// 關閉程式
sudo kill 程式號
// 舉例
sudo kill 2279
再次檢查埠占用,已經沒有程式佔用此埠了。
此時才可以在專案根目錄輸入
// 在伺服器後臺執行jar包,不會隨著終端退出而停止執行
nohup java -jar test.jar
執行成功後,控制檯不會輸出任何資訊。
但在jar包的同級目錄會有一個nohup.out
檔案,之前在終端上看到的那些日誌資訊改為寫入到這個檔案中,只需要檢視此檔案就能知道專案是否啟動成功了。