Golang 專案部署

2021-10-24 04:08:45 字數 3786 閱讀 6884

般部署指令碼應該具有構建、啟動、停止、回滾已經檢視記錄日誌等功能,以下分別將這些功能以單個指令碼的形式給出,當然也可以寫成makefile 的形式。

單個部署指令碼的形式,在乙個目錄下建立如下檔案:

bin # 目錄,用於存放每次 build 之後存放的二進位制檔案

log.sh # 實時檢視日誌

build.sh # 構建

run.sh # 啟動某一次編譯版本

start.sh # 啟動最新版本,並且備份之前前一次執行的版本

shutdown.sh # 停止

rollback.sh # 回滾到上一版本

本例中的 gopath=」/go」

log.sh 具體內容:

build.sh 具體內容:

#!/bin/bash

# 專案位址,/go 在 gopath 裡面

baseprojectdir="/go/src/monitor"

# targetdir 編譯後的二進位制檔案目錄

targetdir="bin"

# branch 編譯的分支

branch="master"

pwd=`pwd`

# targetfile 編譯後的輸出檔名稱

targetfile=`basename $pwd`

# buildpkg 編譯的包名,main.go 所在的包

buildpkg="monitor"

# buildresult 編譯結果

buildresult=""

if [ -n "$1" ]; then

branch="$1"

echo "switch branch to $"

else

echo "building branch: $"

figitpull()

gobuild() /$" "$buildpkg" 2>&1`

if [ -z "$buildresult" ]; then

buildresult="success"

fi}gitpull

gobuild

if [ "$buildresult" = "success" ]; then

cp $/$ $-new

chmod +x $-new

else

echo "build error $buildresult"

exit

fiecho "all complete"

run.sh 具體內容:

#!/bin/bash
start.sh 具體內容:

#!/bin/bash

pwd=`pwd`

target=`basename $pwd`

# kill

pid=`ps -c $ -o pid=`

if [ -n "$pid" ]; then

echo "stopping old version, pid: $"

if [ "$1" = "-f" ]; then

# force shutdown

echo "force shutdown..."

kill -9 $(ps -c $ -o pid=)

else

kill -s 2 $(ps -c $ -o pid=)

fi# wait for program to stop

pid=`ps -c $ -o pid=`

while [ -n "$pid" ]; do

sleep 1

done

fi# upgrade

if [ -f "$-new" ]; then

echo "upgrading..."

if [ -f "$-backup" ]; then

backupdt=`date +%y%m%d-%h`

mv "$-backup" "$-backup-$"

fimv $ $-backup

mv $-new $

echo "upgrade complete"

fi# run

echo "starting..."

./run.sh $

echo "done"

shutdown.sh 具體內容:

#!/bin/bash

pwd=`pwd`

target=`basename $pwd`

# kill

pid=`ps -c $ -o pid=`

if [ -n "$pid" ]; then

echo "stopping old version, pid: $"

if [ "$1" = "-f" ]; then

# force shutdown

echo "force shutdown..."

kill -9 $(ps -c $ -o pid=)

else

kill -s 2 $(ps -c $ -o pid=)

fi# wait for program to stop

pid=`ps -c $ -o pid=`

while [ -n "$pid" ]; do

sleep 1

done

fiecho "done"

需要注意的是 kill -s 2 傳送的是 interrupt 中斷訊號,在專案中要有監聽該訊號的處理程式,eg:

}rollback.sh 具體內容:

#!/bin/bash

pwd=`pwd`

target=`basename $pwd`

# kill running program

pid=`ps -c $ -o pid=`

if [ -n "$pid" ]; then

echo "stopping old version, pid: $"

if [ "$1" = "-f" ]; then

# force shutdown

echo "force shutdown..."

kill $(ps -c $ -o pid=)

else

kill -s 2 $(ps -c $ -o pid=)

fi# wait for program to stop

pid=`ps -c $ -o pid=`

while [ -n "$pid" ]; do

sleep 1

done

fi# rollback

if [ -f "$-backup" ]; then

echo "rolling back..."

if [ -f "$" ]; then

rm "$"

fimv $-backup $

echo "rollback complete"

fi# run

echo "starting..."

./run.sh $

echo "done"

golang 線上專案部署折騰之二

上文中已經把基本需要的軟體都安裝好了,現在是時候來玩玩真的了。為了快速的建立乙個示例的應用程式,我們使用beego 的bee工具。在本示例中,假設gopath在路徑 golang,那麼我們示例專案的路徑應該是 golang src demo test 通過如下命令 cd golang src bee...

三 Linux專案部署之基礎專案部署

2.專案執行依賴於jdk的版本,tomcat可指定jdk版本。linux 指定tomcat專案啟動的jdk版本 教程位址 3.專案打包好後,將專案名修改為自己需要訪問的專案名,使用檔案上傳工具 xftp filezilla rz.上傳所打包好的war檔案。1.啟動tomcat容器,cd 到tomca...

專案部署流程

1 通過ftp將tomcat壓縮包匯入到linux伺服器中 2 通過遠端命令列工具解壓壓縮包 進入到壓縮包目錄 解壓壓縮包 顯示以下則安裝成功 3 啟動 關閉tomcat 進入到bin目錄 啟動tomcat 開啟顯示如下,則代表啟動成功。注 如無法顯示,則有可能埠未開啟,進行 1.1.2步驟 關閉t...