beego项目部署脚本
准备上线用beego写的一个小项目,在vultr开了个日本节点,注册送50刀,免费用两个月,哈哈。
之前还真没部署过编译型语言项目(Java白学了),也没去折腾capistrano了。参考beego的文档撸了个简单脚本,先凑合用吧。
发布
发布机项目目录如下:
- project
- app //待上线的二进制文件和静态文件
- src //代码目录
- conf //线上配置文件
- build //编译好的压缩包,归档
发布脚本:
#! /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
#! /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
Read other posts