码云WebHooks自动化部署

目的:不用每次代码git提交以后,再去服务器pull一次。
比设置定时任务的好处是:不用一直请求,而是push时触发

具体步骤

1. 码云上建库

2. 服务器上git配置
2.1安装git
2.1.1、yum install curl-devel expat-devel gettext-devel \
openssl-devel zlib-devel
安装必备库
2.1.2、yum -y install git-core
安装git核心版
2.1.3、git --version
查看是否安装成功
2.2 配置git
2.2.1、git config --global user.name "xxx"
2.2.2、git config --global user.email xxx@xxx.com

2.3. 切换到要存放项目是目录
cd /home/wwwroot
2.4. 克隆代码
2.4.1、git clone git@gitee.com:xxx/xxx.git mytest.xxx.com-test
ps: 地址分为HTTPS和SSH,如果用SSH需要生成公钥,然后添加到码云的公钥列表里
默认创建的项目文件夹是码云上的项目名称,需要修改要在地址后面加一个空格和要自定义的名字
git clone git@gitee.com:xxx/xxx.git mytest.xxx.com
2.4.2、生成公钥
ssh-keygen -t rsa -C "xxx@xxx.cn"
执行完命令会输入存放公钥的文件夹,如:/root/.ssh/

3. 参考链接
Gitee码云通过WebHooks实现自动同步代码部署

4. 问题解决
PHP shell_exec或exec执行权限问题

设置让php能够以root权限来执行exec() 或者 shell_exec()
将 PHP 的执行用户加到 sudo 免密输入的列表中

主要还是权限的问题,最好用 sudo git pull

修改配置以后需要重启 php-fpm 或 Nginx

chmod -R 777 /home/cookiex/abc

其他参考
PHP shell_exec或exec执行权限问题

实际上执行的命令:
cd /home/wwwroot/mytest.xxx.com/ && git pull

重启Nginx
service nginx start

重启PHP-fpm
kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`
service php-fpm restart

如果遇到手动执行git pull 报错 Please, commit your changes or stash them before you can merge

使用这个命令

git reset --hard

git pull

解决问题的思路和思考

PHP代码执行不成功,手动通过xshell执行命令,看是否提示错误

如果没有错误,查看是否用户权限问题,PHP执行默认www用户或别的,xshell是root用户

写日志错误,文件夹没有权限

shell_exec函数执行错误, 修改PHP配置文件,默认是禁用此类函数

多查资料多尝试多比较多总结多思考,量变引发质变

参考代码:

码云WebHooks自动化部署

http://t.cn/RnoGJC0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值