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

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"

生成公钥,复制粘贴

 

转载于:https://my.oschina.net/qjd/blog/967454

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值