PHP自动化部署原理与简单应用

来源:互联网 时间:2017-06-16

PS:这里的示例代码只做测试用,未加安全验证



一.Windows server 2008 自动部署应用


服务器环境:Windows server 2008 和 Apache,window server 2012需要配置系统环境变量登录用户的个人目录路径,用户变量里新建,变量名 HOME ,值:例如C:/Users/Administrator


制作ssh rsa key

cmd里运行ssh-keygen -t rsa -C “[email protected]


如果不成功,配置下环境变量即可,找到ssh-keygen.exe所在目录,在环境变量Path后面添加上即可


直接存到HOME路径并且不需要到密钥密码,直接三个回车,可以C:/Users/shelter.ssh目录下看到id_rsa、id_rsa.pub两个文件,在生产密钥成功!


配置到远程coding库

将上面制作的id_rsa.pub,配置到项目coding远程仓库的部署公钥上


项目->设置->部署公钥


更改apache服务器的登录用户

因为shell_exec()运行git pull的时候,需要去获取上面制作的ssh密钥,因此需要拥有系统登陆账号的权限才能读到C:/Users/shelter.ssh目录下的id_rsa、id_rsa.pub


修改apache服务的登录用户即可,Apache服务->属性->登录里设置,重启apahce服务器


服务器刚开机的时候,钩子会失效,因为开机自启apache的时候,还是算是SYSTEM账号的。需要自己登陆上去后,重启apache,钩子能用。


编写项目钩子
<?php
//coding会以post请求发送一些认证数据,防止别人恶作剧
//具体数据查看 https://open.coding.net/webhook.html
//这里不能用$_POST接受,无法接收到 RAW_POST_DATA
$json =json_decode(file_get_contents('php://input'), true);
//这里是一个认证的token,下面我们就会设置到
$token = 'test';
if (empty($json['token']) || $json['token'] !== $token) {
exit('error request');
}
$pwd = getcwd();
// '2>$1' 配置管道输出错误,方便调试
// 可以先输出此命令,并在cmd中运行,进行调试。
$command = 'cd ' . str_replace('//', '///', $pwd) . ' && git pull 2>&1';
echo shell_exec($command);
配置coding远程仓库webhook

Coding 设置的WebHook里配置好Url


PS:安装完git需要重启下服务器


二.Linux 自动部署应用


相关阅读:
Top