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. 解决window的bat脚本执行出现中文乱码的问题

    window下通过新建txt文件然后改成.bat的文件,输入内容后,执行出现中文乱码?原因: 批处理文件,是以ANSI编码方式.若以别的方式(如UTF-8)编辑了批处理,转换成ANSI格式即可,正常创 ...

  2. promise 和 async await比较

    async搭配await是ES7提出的,它的实现是基于Promise.这里使用它对比Promise的用法,这里只是简单的适合日常业务的使用场景.   async.await是ES7中的提案,通过同步方 ...

  3. Flutter Plugin开发简单示例

    新建Plugin项目: flutter create --template=plugin -i swift -a javahello lib/hello.dart: 插件包的Dart API. and ...

  4. [问题解决]Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock

    写了一个脚本读取docker日志,发生报错:Got permission denied while trying to connect to the Docker daemon socket at u ...

  5. 为什么0x00400000是可执行文件的默认基址?EXE base address start with 400000H,Why is 0x00400000 the default base address for an executable?

    DLL的默认基址是0x10000000,但EXE的默认基址是0x00400000.为什么EXE特别值?4 兆字节有什么特别之处它与x86上单页目录条目映射的地址空间量和1987年的设计决策有关.对EX ...

  6. 使用pkg打包node.js项目(egg框架)为可执行包

    问题: 公司有个工具型项目使用node.js 开发,需要部署到客户的服务器中,遇到的问题: 1.客户的服务器没有外网.环境配置,依赖安装等都比较麻烦,只能手工上传,最好能一个文件直接搞定: 2.直接包 ...

  7. Maven手动导本地jar到项目

    第一步:先把目标jar安装在本地,下面是安装到本地的步骤:在cmd命令中,输入:mvn install:install-file -Dfile=C:\Users\Ter\Desktop\jqd_doc ...

  8. 【sqlserver】【mysql】用NavicatPremium12把sqlserver的数据迁移到mysql上

    1.在NavicatPremium的mysql,选择到迁移到的表,然后右键[导入向导]

  9. javascript两种循环写法

    var i=0,len=cars.length; for (; i<len; ) { document.write(cars[i] + "<br>"); i++; ...

  10. netty自定义解码器

    在socket传输通信中容易丢包问题,什么半包问题,这些都是很正常的问题,处理方法就是定义自己的编解码规则了,让每次接收按定义好的规则为一个完整包作为数据源即可. 下面个例子就是netty自定义的一个 ...