基于git系统发布网站代码

网站的开发版本管理系统从svn切换到了git,之前更新网站的代码方法是ssh到服务器上,然后sudo svn update即可,但采用git后,若采用git clone的方法更新代码,会导致每个网站都是一个完整的代码系统,不是太合适。

从网上搜索了几个基于git发布网站代码的文章,多数都是采用的这个blog里提供的方法:

http://sebduggan.com/blog/deploy-your-website-changes-using-git/

但是这个blog的方法测试下来也有问题,即通常网站代码的发布的用户会是www-data,而此blog的方法会产生写权限问题。

继续搜索到另一个blog,解决了这个问题:

https://halfthetruth.de/2011/09/13/using-git-to-deploy-a-website/

即将git放到sudo里,让其可以自动指定用户进行更新,最终按照这个blog的方法进行了部署。

主要方法记录如下:

1. Web服务器端

建立一个空git目录,

mkdir website.git && cd website.git
git init --bare

并创建hook脚本:

$> cat website.git/hooks/post-receive
#!/bin/bash
GIT_WORK_TREE=/var/www/domain.com/ git checkout master -f 
$> chmod +x website.git/hooks/post-receive

同时也要修改sudoers文件:

username ALL=(ALL) NOPASSWD: /usr/bin/git

2. 本地机器

在git版本库中指定一个remote,并push某一个branch到web服务器。

git remote add web ssh://webserver/path/to/website.git
git push web master

 

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注