般部署指令碼應該具有構建、啟動、停止、回滾已經檢視記錄日誌等功能,以下分別將這些功能以單個指令碼的形式給出,當然也可以寫成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/bashshutdown.sh 具體內容: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"
#!/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...