V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
kayue
V2EX  ›  问与答

Git 的 depolyment 设定

  •  
  •   kayue · 2010-12-11 15:02:47 +08:00 · 4682 次点击
    这是一个创建于 5096 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请问大家有没有用 Git 来 depoly php application 呢?

    我在 permission 的问题上很纠结……

    我的理想设定如下:

    假设:
    ~mysite/www/ - production, web server run as "nobody"
    /var/git/site.git - remote repo

    方案1:Git hook
    每当有人 push 到 remote repo 的时候,自动 cd 到 production 然后 git pull 一下
    这个可以用 git hook 来达成,只是我在用 ssh,生成的档案都不是 nobody 而是上传者。user 甚至打开不了 ~mysite/www/ 这个 folder

    方案2:Cronjob
    我写了如下 job,每分钟执行一次,唯未见成效,也不知道如何 debug ...

    */1 * * * * su -s /bin/sh nobody -c 'cd ~mysite/www && git pull -q'

    如何是好?

    我现在都是用 setfacl 和登入 ssh 手动做 git pull 的,很蠢…
    5 条回复    1970-01-01 08:00:00 +08:00
    n2n3
        1
    n2n3  
       2010-12-11 15:08:16 +08:00
    kayue
        2
    kayue  
    OP
       2010-12-11 16:47:57 +08:00
    问题基本解决:

    */1 * * * * su -s /bin/sh nobody -c 'cd ~dstrt/www && /usr/local/bin/git -q pull origin master'

    需要 /usr/local/bin/git 而不单单是 git

    不过这产生了另一个问题,如何只输出 error 呢? -q 好像完全不会输出任何东西。
    aligo
        3
    aligo  
       2010-12-11 17:54:49 +08:00
    同意@n2n3说的,直接用capistrano比较省事
    如果非要用hook来做这个的话,首先你不应该把prod目录也弄成一个git repo,而应该每次更新prod版本的时候都放到一个新目录里然后最好删除.git(这也是cap的做法),因为产生的runtime文件可能会让下一次pull冲突
    然后把你php执行用户(不要用nobody啊)和git用户(你应该有用gitosis吧)放到同一个用户组里就行了,最后可能还需要+x还有ln -s到固定的logs和uploads目录之类的
    aligo
        4
    aligo  
       2010-12-11 17:56:38 +08:00
    grep一下大概应该可以输出error-0-
    kayue
        5
    kayue  
    OP
       2010-12-11 22:17:52 +08:00
    @aligo 谢谢你的意见
    首先,如果想自动 deploy 的话,把 production 也设定 git 大概是最好的方法。

    当然要好好设定 .gitignore 来避免 runtime 文件的问题。so far so good.
    我在用 Wordpress 和 Magento,算是比较好设定的。

    .git directory is protected by .htaccess

    没有用 gitosis,而且难以保证新上传的档案有正确的设定。
    我的目的是尽可能避免要手动 ssh 设定任何东西。

    谢谢指教。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2848 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 09:20 · PVG 17:20 · LAX 01:20 · JFK 04:20
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.