在小站点上,直接用git来部署php代码相当方便,你的远程站点以及本地版本库都有一个版本控制,追踪问题或者回滚是很轻松的事情。下面介绍用git部署时的设置步骤
在远程服务器的设置
假定你需要部署的代码在/var/www/yoursite
cd /var/www/yoursite
git init .
git config receive.denyCurrentBranch ignore
git config --bool receive.denyNonFastForwards false
cd .git/hooks
wget https://gist.githubusercontent.com/volca/9482044/raw/344a590af350b997db3819fa21426dfe8bc140f4/post-update
chmod +x post-update
在本地git库中新增配置
[remote "prod"]
url = your-ssh-username@your-host:/var/www/yoursite/
这样就算设置完成了。
如果你想把本地的代码推送到远程服务器,下面简单的步骤就可以做到
git pull
git push prod
注意事项
如果远程服务器上git的配置目录.git暴露在外部可访问的位置,请在web服务器上设置这个目录不可见。
11 responses to “用git部署php站点”
我喜歡你的blog,可否交換一下友情鏈接?
我已經幫你做好了,我的連接信息是:
Seven的blog
http://hi.baidu.com/see7di/home
ooso你好,我对你的博客内容非常感兴趣,我目前也在学习php和linux,在一家小型公司做php,虽然已经能用php解决目前工作中的绝大多数问题,不过我始终觉得自己会的还太于肤浅,希望能与你交个朋友。我的gtalk:cnstou@gmail.com
看了几篇你的日志,好佩服啊!!交个朋友吧!!我的qq:1018595261
这个方法不错,用了那么久git,我怎么就没想到使用hook来自动pull呢,日了。。。
我之前的做法是先 git push server, 然后在ssh到server上去手动 git pull,累。。。
用了博主的这个方法,确实很方便。不过在使用过程中遇到一个问题,我是在windows2003上用msysgit和cygwin部署的,当服务器上的版本库里有未提交的改动时,本地push的时候会提示:
remote: error: unable to create directory for /cygdrive/f/wwwroot/mydir/.git/HEAD
remote: fatal: Cannot lock the ref ‘HEAD’.
remote: trapped 2292
这样的错误,
但是能提交成功,服务器上未提交的改动会被覆盖,而不是进缓冲区。
后来研究了一下,发现是因为服务器上的git账户对版本库所在账户的外层目录没有访问权限造成的,如在我上面这个例子里,给wwwroot目录添加上git用户并赋予该用户修改权限后,再从本地push就不会报错了,未提交的修改会被stash,这样就不会丢失修改了。另外如果版本库是直接建在分区下的话,不存在这个问题。
希望对遇到类似问题的朋友有所帮助。
上面的 utsl.gen.nz 已经不存在了。
@daijie 已经到gist上
每次提交的时候,都需要输入密码,这个文件怎么解决呢?
搜索ssh-keygen这个关键词,生成公钥和私钥对,配置好了就不用输入密码了
谢谢,搞定了,我的是Windows客户端,麻烦了一点。
git push完了如果目录是空的,就执行 git reset –hard