标题:利用码云webhook自动部署脚本 出处:沧海一粟 时间:Sun, 15 Jul 2018 23:45:50 +0000 作者:jed 地址:http://www.dzhope.com/post/1145/ 内容: 整体思路: git提交本地代码-----码云----自动部署到测试服务器,这样就可以即时看到项目演示效果。 第一步: 测试服务器检查git版本 centos自带得git版本是1.7.*的,在克隆的时候有bug,如果是1.7.0请升级至2.7.0+。 # 版本测试 git --version 升级git,不需要的请略过 Development tools 没装的要装上,不然GCC编译时会出错 yum -y groupinstall Development tools GCC 用于编译安装包 yum install gcc perl-ExtUtils-MakeMaker 再卸载CentOS自带的老版本git yum -y remove git 下载git并安装 cd /usr/src wget https://www.kernel.org/pub/software/scm/git/git-2.12.0.tar.gz tar xzf git-2.12.0.tar.gz 安装注意事项: cd git-2.12.0 make prefix=/usr/local/git all 此时报错 /usr/src/git-2.12.0/utf8.c:463:对‘libiconv’未定义的引用 libgit.a(utf8.o):在函数‘reencode_string_len’中: /usr/src/git-2.12.0/utf8.c:524:对‘libiconv_open’未定义的引用 /usr/src/git-2.12.0/utf8.c:535:对‘libiconv_close’未定义的引用 /usr/src/git-2.12.0/utf8.c:529:对‘libiconv_open’未定义的引用 collect2: 错误:ld 返回 1 make: *** [git-credential-store] 错误 1 原方案: make prefix=/usr/local/git all make prefix=/usr/local/git install 解决方案: 可替换为 ./configure --without-iconv make CFLAGS=-liconv prefix=/usr/local/git all make CFLAGS=-liconv prefix=/usr/local/git install 最后将git加入环境变量 echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc source /etc/bashrc 大功告成!查看一下git的版本 git --version >> git version 2.12.0 在完成升级后一定要记住git的文件路径,按照如上的教程git的最终路径为/usr/local/git/bin,这个在后面配置有用到。 第二步: 打开PHP禁用函数 在这个自动部署程序中主要用到的函数为shell_exec(),但是在默认情况下是被禁止的,需要去php.ini中修改配置,具体做法如下: 1、找到php.ini文件 2、查询disable_function 3、删除shell_exec, 4、保存 5、重启PHP 第三步: 配置WWW用户 首先要检查www是否有权限,打开/etc/passwd,查看www用户,如果是/sbin/nologin需要改为/bin/bash 第一次配置成功也是采用的公钥,是在切换到www用户下创建的,可是在码云那,再提交相同的公钥,提示已经存在,可是,如果我们项目很多的话,每次都创建新的公钥也很麻烦,于是就放弃在www下创建公钥的思路,但是www的权限,仍然需要改。 第四步: 配置webhook脚本 webhook脚本如下: &1"); $res_log = "[ PULL START ]".PHP_EOL; $res_log .= $result; $res_log .= PHP_EOL . PHP_EOL; file_put_contents("$logName.log", $res_log, FILE_APPEND); echo $result; } } else { file_put_contents("$logName.log", 'Password is Incorrect!', FILE_APPEND); echo 'Password is Incorrect!'; } 第五步: 克隆项目 在要部署的目录下进行克隆。 git clone 项目地址 /data/websitel/ Generated by Bo-blog 2.1.1 Release