这几天尝试了利用github的webhook,当代码更新到github,咱们的测试服务器自动更新最新的gitbub仓库代码。php
先列几个大概步骤,有时间再补充详细nginx
1 . 服务器生成ssh key,通常在我的的家目录下,root用户在 /root/.ssh/id_rsa.pub。配置到githubgit
2 . php.ini配置开启 shell_exec 函数(能够在php中执行shell脚本)github
3. 查看php的运行用户,下一步要用。在nginx配置文件中查看。通常是www或者nginxweb
4.在咱们部署代码的服务器写一个php接口 ,配置到github的webhook。shell
<?php
dump(shell_exec('sudo /home/wwwroot/deploy.sh'));
?>
5.写一个git更新代码的脚本(deploy.sh)。注意,git要写绝对路径。能够用 which git 命令查看。bash
#!/bin/bash WEB_PATH='/home/wwwroot/PHPMailer/' WEB_USER='www' WEB_USERGROUP='www' echo "Start deployment" cd $WEB_PATH echo "pulling source code..." /usr/local/git/bin/git reset --hard origin/master /usr/local/git/bin/git clean -f /usr/local/git/bin/git pull /usr/local/git/bin/git checkout master echo "changing permissions..." chown -R $WEB_USER:$WEB_USERGROUP $WEB_PATH echo "Finished."
6.最后一步,由于咱们是php脚本调用shell脚本。php是php运行的,php的执行用户通常缺乏一些权限,直接运行shell脚本可能会权限不够。能够经过修改 /etc/sudoers,服务器
使普通用户能够经过 sudo + 命令 ,临时获取root权限。具体设置请百度ssh