用 git 来部署你的web项目

Git Hook 是 Git 提供的一个钩子,能被特定的事件触发后调用。其实,更通俗的讲,当你设置了 Git Hook 后,只要你的远程仓库收到一次 push 之后,Git Hook 就能帮你执行一次 bash 脚本。

# Pre

# Deploy User

useradd -m web

# SSH 密钥免登录

可以参考https://linsir.org/post/manage-multi-ssh-keys

# Remote Server

mkdir /home/web/blog.git
cd /home/web/blog.git
git init --bare

在 hooks/post-receive 文件中写入以下内容:

#!/bin/sh
#
WEB_DIR=/home/www/deploy-blog

# remove any untracked files and directories
git --work-tree=${WEB_DIR} clean -fd
# force checkout of the latest deploy
git --work-tree=${WEB_DIR} checkout --force

chown www:www -R /home/www/deploy-blog

最后加权限:

chmod +x hooks/post-receive

这里可以新建多个仓库,比生产环境,及测试环境(略).

# Local

git remote add prod deploy_server:/var/web/blog.git
git remote add test deploy_server:/var/web/blog-test.git
git add * 
git commit -m 'new post'
# 提交到测试服务器
git push test master
# 提交到生产环境
git push prod master

# 部署

fabric 实现服务重启,数据库备份更新,清除缓存等操作,当然也可以写在 hooks/post-receive 文件中。


# 参考链接

  1. https://segmentfault.com/a/1190000000385705
  2. https://dearb.me/archive/2015-03-30/automate-deploy-your-websites-with-git-hook/

--EOF--


>看不到评论?GFW!!!