网站的开发版本管理系统从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
发表回复