利用WebHook实现PHP自动部署Git代码

平时项目代码都托管在Coding,而后每次提交了代码以后都要SSH到服务器上去git pull一次,非常繁琐,在看了OverTrue的《使用PHP脚本远程部署git项目》后就尝试在本身服务器上搞一下自动化部署,下面把部署步骤列出来算是一个分享与备忘。php

首先在Coding上建立一个项目,而后在本地clone一份。html

在服务器上(以Nginx环境为例,Apache请看OverTrue的教程)

1. 生成公钥

公钥有两个:1. git用户公钥,2. 部署公钥:git

git用户公钥web

 

 

部署公钥shell

sudo -Hu www ssh-keygen -t rsa # 请选择 “no passphrase”,一直回车下去json

2. 准备钩子文件

建立和修改目录权限:服务器

 

 

写入钩子文件:app

 

 

 

 

确保你的hook文件能够访问:http://example.com/hook/index.php,钩子准备完成。composer

3.修改git配置和保存git用户名密码

 

 

在Coding网站

1.添加用户公钥

复制/root/.ssh/id_rsa.pub内容到我的设置页的SSH公钥里添加便可(https://coding.net/user/account/setting/keys)框架

2.添加部署公钥

复制/home/www/.ssh/id_rsa.pub的内容并添加到部署公钥:

选择项目 > 设置 > 部署公钥 > 新建 > 粘贴到下面框并确认

3.添加hook

选择项目 > 设置 > WebHook > 新建hook > 粘贴你的hook/index.php所在的网址。好比:http://example.com/hook/index.php, 令牌可选,可是建议写上。

稍过几秒刷新页面查看hook状态,显示为绿色勾就OK了。

初始化

1.咱们须要先在服务器上clone一次,之后均可以实现自动部署了:

 

 

这个时候应该会要求你输入一次Coding的账号和密码,由于上面咱们设置了永久保存用户名和密码,因此以后再执行git就不会要求输入用户名和密码了。

**!!注意,这里初始化clone必需要用www用户**

2.往Coding.net提交一次代码测试:

在本地clone的仓库执行:

 

OK,稍过几秒,正常的话你在配置的项目目录里就会有你的项目文件了。

初始化Laravel框架

1. 下载Composer

在项目目录下执行:

 

 

**!!记得在本地提交的时候在.gitignore中加上composer.phar**

======================================================

以上只是针对我我的服务器环境的一个搭建过程,欢迎你们指正、探讨。

服务器环境:Linux(CentOS) - AMH - Nginx & MySql
WWW用户目录:/home/www
项目目录:/home/wwwroot/Dev/website.com/web/
Hook目录:/home/wwwroot/Dev/m.website.com/web/hook/

相关文章
相关标签/搜索