1、首先要到https://gitee.com/注册一个帐号,并建立一个项目。php
2、把本地和服务器公钥添加到码云公钥管理nginx
3、到webHooks下添加webHooks设置git
而后添加一个触发钩子的url,当开发者提交主分支的时候,首先是把版本信息提交到码云,而后码云主动请求该url,并携带版本信息及密码过去,进行验证后触发钩子,钩子再执行版本更新web
4、分别在客户端和服务器端克隆项目下来apache
git clone git@gitee.com:timelink/project.git
5、搭建钩子json
建立第三步配置的url访问的php文件,我在此命名为gitCode.php文件,编辑数组
<?php $post=file_get_contents('php://input');//获取请求携带的参数 $post=json_decode($post ,true);//将json转换成数组 //验证密码 保证请求安全性 if($get['password'] == '12345'){ exec('sudo -u root git pull origin master 2<&1', $output); echo json_encode($output); }else{ echo '失败'; }
而后再webhooks管理能够进行测试,出现相关成功信息,即说明配置成功安全
注意:在此处有个小坑服务器
(1)若是出现报错:sudo no tty present and no askpass program specified,则由于对于apache,因为其执行权限通常为apache:apache,用户和组都是apache, apache用户的特色是无密码,不能登陆,无环境变量等。post
解决方法:
1. 为sudoer文件开启w权限
chmod u+w /etc/sudoers
2. 执行visudo命令, 给apache用户分配sudo权限
visudo
a. 注释掉1行:
#Defaults requiretty
b. 增长2行:
Defaults visiblepw
apache ALL=(ALL) NOPASSWD:/usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg
我这里容许在cgi中调用 /usr/bin/sudo, /usr/local/bin/MP4Box, /usr/local/bin/ffmpeg三个命令,您能够根据须要修改
注意上面这2行的做用相当重要,不可随意修改其格式
c. 保存退出visudo,退出跟vi命令同样
:wq
3. 关闭sudoer文件w权限
chmod -w /etc/sudoers
4.重启nginx
nginx -s reload
6、在客户端提交版本便可实现项目的自动化部署了