beego项目部署脚本

  准备上线用beego写的一个小项目,在vultr开了个日本节点,注册送50刀,免费用两个月,哈哈。
  之前还真没部署过编译型语言项目(Java白学了),也没去折腾capistrano了。参考beego的文档撸了个简单脚本,先凑合用吧。
  

发布

  发布机项目目录如下:

  • project
    • app //待上线的二进制文件和静态文件
    • src //代码目录
    • conf //线上配置文件
    • build //编译好的压缩包,归档

发布脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#! /bin/bash

function log() {
echo -e "\033[32m $1 \033[0m"
}

log "starting deploy"
appname="appname"
path="/deploy/project"
src_path=$path"/src"
version=`date +%Y%m%d%H%M%S`

log "pull code"
cd $src_path

git reset HEAD --hard
git pull origin master

cd $path

log "starting build"

bee pack -p src -o build -ba "-o ${appname}"

log "decomporess"

tar -C app/ -xzf build/src.tar.gz

mv build/src.tar.gz build/$version.tar.gz

log "replace conf"

/bin/cp -rf conf/* app/conf/

log "rsync"

#改成对应的
rsync -avur app/ user@ip:/path -e 'ssh -p port -i id_rsa_file' --delete --compress --no-perms --no-owner --no-group

log "clean"

rm -rf app/*

log "all done"

重启

服务器上可以定期检查二进制文件的md5哈希值,变化了就重启。(也可以用ssh远程执行命令之类的重启,但是感觉不太安全,不知道有没有更优雅的做法)
这里用的supervisor

1
2
3
4
5
6
7
8
9
10
11
12
#! /bin/bash
binary_file=/path/to/binary_file
#存md5值的文件
md5_file=/path/md5
old_md5=`cat $md5_file`
new_md5=`md5sum "${binary_file}" | awk '{print $1}'`

if [ $old_md5 != $new_md5 ]
then
echo $new_md5 > $md5_file
/usr/bin/supervisorctl restart yourapp
fi

Gist上也有

Have fun

请我喝咖啡
liaol WeChat Pay

微信打赏