使用sudo在post-receive git hook中重启服务器

时间:2014-07-25 22:02:45

标签: git webserver hook git-post-receive

每次我更改我的.pm文件时都必须重新启动我的网络服务器,所以我试图在post-receive挂钩中设置重启。

#!/bin/sh
GIT_WORK_TREE=/web git checkout -f
rap stop
sleep 5
rap start

当我手动重启时,我必须去root并输入rap stop / start。现在我正在

remote: hooks/post-receive: line 3: rap: command not found 
remote: hooks/post-receive: line 5: rap: command not found

当我推动时。我认为许可阻止了我,我需要一些帮助来解决这个问题。

1 个答案:

答案 0 :(得分:3)

如果您需要以root用户身份使用这些命令,则可以使用“How to execute commands as root in git post-receive hook”:

  
      
  • 创建一个单独的脚本,仅包含以root身份运行的命令。
  •   
    #!/bin/bash
    sudo /full/path/to/rap stop
    sudo /full/path/to/rap start
  
      
  • 在收件后脚本中执行:
  •   
    #!/bin/bash
    export GIT_WORK_TREE=/var/www/current/myapp/
    set -x
    echo "Checking out new files on production and restarting app"
    echo $USER
    git checkout -f
    sudo /home/admin/restart-myapp
  
      
  • 最后在visudo
  •   
    %sudo   ALL=(ALL:ALL) ALL
    admin   ALL=(ALL) NOPASSWD: /home/admin/restart-myapp