Gitlab 自动化部署
原理介绍
  1. 配置gitlab当push动作的时候,访问服务器上的一个链接比如www.shenke.group/hook.php
  2. hook.php里面写着一行代码,会让服务器git pull相应项目的代码到web目录。
  3. pull结束,代码就在web目录了,我们只要重新访问网站就可以了。
    核心就是push的时候,gitlab会调用服务器上的脚本,服务器上的脚本就会从git重新拉取项目文件。同时还需要加入安全性的设计。
 
配置ssh秘钥
    首先查看nginx和php的默认执行用户,分别查看对应的文件nginx.conf和php-fpm.conf即可,一般是www用户,以www用户为例。修改/etc/passwd文件,使www用户具有可登录权限,如下:
由上图中的配置改为:
当自动化部署完成后,要该回到原来的配置,因为www用户默认是不允许登录服务器的。
按以下步骤操作:
  1. 执行 su www 命令切换为www用户。
  2. 执行 ssh-keygen 命令,将生成的公钥(位置在/home/www目录下),添加到gitlab中的项目中
注意:
1. 这里一定要是www用户的秘钥!
2. 进入到项目根目录所在目录,cd /var/www  ,更改项目目录web所属用户和用户组,执行命令
chown -R www:www web
 
服务器脚本
    编写hook.sh 内容如下(这是简单版本):
使用www用户进行测试,执行 bash hook.sh 命令,测试能否进行拉取代码。如果成功,下一步就是通过钩子执行此脚本。
 
PHP执行脚本
    php通过exec函数执行脚本代码hook.php。需要调用exec函数,如果发现不成功,有可能php.ini配置中禁用了exec函数,重新开启即可。具体操作可自行百度。
    hook.php:
访问后,如果能返回git执行的信息,就表示成功了。接下来就是配置gitlab的webhooks。
为支持多个项目 配置了project参数,可以部署多个项目。只需要在gitlab钩子中配置时,使用不同的project参数。
 
Gitlab配置钩子
触发一般选择合并请求事件
部署完成后,修改/etc/passwd文件,将www用户修改为nologin即可!
 

最新文章

  1. Nodejs学习笔记(二)--- 事件模块
  2. C# 实现酒店房态图
  3. String常用方法测试
  4. android 使用httpclient访问网络
  5. Web 开发最有用的50款 jQuery 插件集锦——《综合篇》
  6. android----Java DES加密算法工具类
  7. Android 定制下拉刷新头部 Ultra Pull To Refresh
  8. mysql-5.6.15_winX64在win764位系统下的安装操作步骤总结
  9. hdoj 1068 Girls and Boys【匈牙利算法+最大独立集】
  10. ajax切换明星头像!
  11. libvirtsAPI
  12. SpringMVC——数据校验
  13. VUE 多页面配置(二)
  14. UserControl VS TemplatedControl
  15. 15个优秀的开源项目,让你轻松应对Android开发
  16. BAT及各大互联网公司2014前端笔试面试题--Html,Css篇(昨天有个群友表示写的简单了点,然后我无情的把他的抄了一遍)
  17. Java多线程(三)
  18. bootstrop-datatime参数配置
  19. curl工具
  20. bzoj 2749 杂题

热门文章

  1. LocalDateTime
  2. npm和yarn常用调试命令
  3. pytorch 中conv1d操作
  4. iOS - 搜索关键字在结果中高亮显示
  5. 基于Spring Boot架构的前后端完全分离项目API路径问题
  6. [分享会] 微服务框架设计 (基于Swoole)
  7. F# 4.6 预览版正式公布
  8. es查询和更新 语句示例
  9. Node.js实现PC端类微信聊天软件(四)
  10. K8S+GitLab+.net core-自动化分布式部署-3