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即可!
 

Gitlab配置webhooks实现自动化部署的更多相关文章

  1. gitlab与jenkins的自动化部署(通过webhook与ansilble)

    gitlab与jenkins的自动化部署(通过webhook与ansilble) 1.部署介绍 gitlab服务器:192.168.1.49:80jenkins服务器:192.168.1.49:818 ...

  2. 【Devops】【docker】【CI/CD】3.Jenkins+GitLab+docker+springboot 实现自动化部署

    ==================================================================================================== ...

  3. CentOS 7 Gitlab+Jenkins持续集成+自动化部署

    基于上次的环境<部署Gitlab+Jenkins持续集成环境> 来实现自动化部署 系统管理–>插件管理–>安装以下插件: Credentials Plugin(默认已经安装) ...

  4. gitLab服务器搭建+ rundeck自动化部署

    git服务器搭建 https://blog.csdn.net/gx_1_11_real/article/details/79406427 rundeck   部署 https://blog.csdn. ...

  5. Jenkins+maven+gitlab+shell实现项目自动化部署

    确认jdk , maven,git这些已经在服务器上搭建成功,gitlab使用的是公司服务也没有进行搭建 下面是jenkins的两种搭建方式 1.      第一种比较简单下载对应jenkins.wa ...

  6. github使用Webhooks实现自动化部署

    参考: https://blog.csdn.net/u013764814/article/details/85240752 -------------------------------------- ...

  7. Jenkins+Gitlab+Ansible自动化部署(六)

    Pipeline Job实现Nginix+MySQL+PHP+Wordpress实现自动化部署交付(Jenkins+Gitlab+Ansible自动化部署(五)https://www.cnblogs. ...

  8. Linux-GitLab+Jenkins持续集成+自动化部署

    GitLab+Jenkins持续集成+自动化部署 什么是持续集成? (1)Continuous integration (CI) 持续集成是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个 ...

  9. Gitlab Runner实现NetCore自动化持续集成

    目录 1.开发工具 2.GitLab服务器搭建 3.新建webapi 4.Dockerfile配置 5.配置docker-compose.yml 6.配置.gitlab-ci.yml 7.在GitLa ...

随机推荐

  1. SDN实验---Ryu的源码分析

    一:安装Pycharm https://www.cnblogs.com/huozf/p/9304396.html(有可取之处) https://www.jetbrains.com/idea/buy/# ...

  2. Collections--ChainMap

    一个 ChainMap 类是为了将多个映射快速的链接到一起,这样它们就可以作为一个单元处理.它通常比创建一个新字典和多次调用 update() 要快很多. class collections.Chai ...

  3. SDKMAN一个基于命令行界面的SDK用户环境管理程序

    1.背景 使用过Python开发的朋友,应该了解到Python2和Python3语法的差异,有时候从网上下载了基于不同解释器的代码,要来回切换版本, 使用起来不是很方便,有时候甚至很麻烦.于是有人发明 ...

  4. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器开放平台利用 webpack 打包压缩后端代码

    需求背景 javaScript的用途是解决页面交互和数据交互,最终目的是丰富客户端效果以及数据的有效传递. 并且具有良好的用户体验. javaScript可以快速实现页面交互,即js操作html的do ...

  5. EasyDSS高性能流媒体服务器开发RTMP直播同步输出HLS(m3u8)录像功能实现时移回放的方案

    EasyDSS商用流媒体服务器解决方案是由EasyDarwin开源团队原班人马开发的一套集流媒体点播.转码与管理.直播.录像.检索.时移回看于一体的一套完整的商用流媒体服务器解决方案,支持RTMP推流 ...

  6. 一步一步FLASK(一)

    简介: 本文是记录本人建立一个flask项目的完整过程. 涉及FLASK的诸多实用技术. 一:基本FLASK pycharm建立FLASK项目即可运行. 代码如下: from flask import ...

  7. java修改文件所有者及其权限

    1.设置所有者 管理文件所有者 Files.getOwner()和Files.setOwner()方法 要使用UserPrincipal来管理文件的所有者 (1)更改文件的所有者 import jav ...

  8. vue 项目不显示样式 排版错乱

    vue中的css 样式都在index.html中 看这里是否有导入css

  9. 如何修改通过Anaconda安装的jupyter notebook的工作目录

    通过Anaconda安装jupyter notebook,对新手来说是一个非常明智的选择,可以避免很多不必要的麻烦! jupyter notbook默认情况下的工作目录是c:\user\...,接下来 ...

  10. 第4课,python 条件语句if用法

    主题: 智能对话程序的设计 前言: 在编程中存在三大逻辑结构:顺序结构,分支结构(用条件语句if构成),循环结构.其中循环结构能完成,重复次数多,庞大的工作: 分支结构优势不在完成的多,但占有重要位置 ...