PS:这里的示例代码只做测试用,未加安全验证
一.Windows server 2008 自动部署应用
服务器环境:Windows server 2008 和 Apache,window server 2012需要配置系统环境变量登录用户的个人目录路径,用户变量里新建,变量名 HOME ,值:例如 C:\Users\Administrator
制作ssh rsa key
cmd里运行 ssh-keygen -t rsa -C “youremail@example.com”
如果不成功,配置下环境变量即可,找到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 自动部署应用
sudo -u user ssh-keygen -t rsa -C "xxx@xxx.com"
生成公钥,复制粘贴