用git部署php站点

在小站点上,直接用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服务器上设置这个目录不可见。

作者: 发表于March 29, 2011 at 11:26 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,,

11 条评论

  1. seven 于 2011-06-12 @ 01:26:22 留言

    我喜歡你的blog,可否交換一下友情鏈接?
    我已經幫你做好了,我的連接信息是:

    Seven的blog
    http://hi.baidu.com/see7di/home

  2. 石头 于 2011-06-28 @ 17:18:21 留言

    ooso你好,我对你的博客内容非常感兴趣,我目前也在学习php和linux,在一家小型公司做php,虽然已经能用php解决目前工作中的绝大多数问题,不过我始终觉得自己会的还太于肤浅,希望能与你交个朋友。我的gtalk:cnstou@gmail.com

  3. 我是洞悉 于 2011-07-21 @ 17:04:55 留言

    看了几篇你的日志,好佩服啊!!交个朋友吧!!我的qq:1018595261

  4. 砖家 于 2011-08-19 @ 22:28:49 留言

    这个方法不错,用了那么久git,我怎么就没想到使用hook来自动pull呢,日了。。。

    我之前的做法是先 git push server, 然后在ssh到server上去手动 git pull,累。。。

  5. wannianchuan 于 2012-03-10 @ 14:42:26 留言

    用了博主的这个方法,确实很方便。不过在使用过程中遇到一个问题,我是在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,这样就不会丢失修改了。另外如果版本库是直接建在分区下的话,不存在这个问题。
    希望对遇到类似问题的朋友有所帮助。

  6. daijie 于 2013-12-19 @ 16:55:01 留言

    上面的 utsl.gen.nz 已经不存在了。

  7. Volcano 于 2014-03-11 @ 17:09:17 留言

    @daijie 已经到gist上

  8. 陈佳 于 2014-03-19 @ 14:57:57 留言

    每次提交的时候,都需要输入密码,这个文件怎么解决呢?

  9. Volcano 于 2014-03-20 @ 13:21:50 留言

    搜索ssh-keygen这个关键词,生成公钥和私钥对,配置好了就不用输入密码了

  10. 陈佳 于 2014-03-20 @ 14:19:49 留言

    谢谢,搞定了,我的是Windows客户端,麻烦了一点。

  11. 幻水梦天 于 2014-05-07 @ 16:15:22 留言

    git push完了如果目录是空的,就执行 git reset –hard

RSS 为此帖反馈评论