准备上线用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_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