Git服务器搭建及自动化部署

 

 Git简单易用,为了方便自己,满足好奇心,我学习了下如何搭建git服务器并实现自动化部署,在这里将自己遇到的坑跟大家分享一下。

  系统说明

  · 服务器: 阿里云ECS服务器

  · 操作系统:CentOS 7.2 64位

  · 操作说明:熟悉 linux 基本操作——yum安装,vim编辑,chown权限设置等.

  搭建步骤

  1. 在服务器上安装 git

  yum install git

  注:如果权限不够,可加sudo.

  2. 添加git用户

  此处git用户是指系统中的 git 应用程序,而不是项目的组员。可执行命令:

  sudo adduser git

  也可添加用户密码

  sudo passwd git

  3. 禁止 shell 登录

  用vim打开/etc/passwd目录,修改

  git:x:1000:1000::/home/git:/usr/bin/bash

  改成

  git:x:1000:1000::/home/git:/usr/bin/git-shell

  说明:出于安全考虑,我们需要禁止他人登录shell,但我们的组员仍可通过 ssh 正常使用git.

  4. 初始化git远程仓库

  在你服务器上创建一个 git 远程仓库并初始化:

  git init --bare test.git

  例如,选择/usr/src/app 文件夹,初始化创建仓库test.git,结果如下:

  5. 修改远程仓库用户所有权

  由于初始化创建的时候,文件所有权归属当前用户(如下图,我当前使用的是root),为了是git程序有操作权限,我们将所有权改为git拥有.

  sudo chown -R git:git test.git

  结果如下:

  6. 添加用户ssh登录权限

  将项目组员的ssh公钥依次存储到/home/git/.ssh/authorized_keys文件中,一行一个。如果人多的话,可以采用gitosis进行管理,配置可参考官方文档,此处暂不作介绍。

  7. 本地 clone 远程仓库

  前面6步均在服务器上进行操作,这一步就可以在本地进行了,执行命令拉取代码:

  git clone git@server:/usr/src/app/test.git

  说明:server是你服务器的公网 ip ,/usr/src/app/test.git是上面创建的远程仓库路径.

  自动化部署

  git hook 会在接收到 push 之后触发特定事件。我们可以利用该特性,使用 bash 脚本来进行自动化部署。

  1. 创建脚本

  现在我们进入/usr/src/app/test.git目录下的hooks文件夹,编辑脚本:

  vim post-receive

  具体内容如下:

  #!/bin/sh

  # 删除 GIT_DIR 环境变量,避免干扰

  unset GIT_DIR

  # 增加生产环境项目路径环境变量

  WORKPATH=/usr/share/nginx/test

  # 进入生产目录

  cd $WORKPATH

  git add . -A git stash

  git pull origin master

  echo 'done!!!'

  说明:此处我将项目部署在/usr/share/nginx/test目录下,可先进入`/usr/share/nginx目录clone代码.

  2. 修改权限

  3. chown -R git:git post-receive

  chmod +x post-receive

  说明:chmod +x用来增加执行权限

  踩坑说明

  期间遇到的坑大多是权限问题导致的,用chown和chmod修改所有权和操作权限即可。

  git 在不同系统上的安装可以自行搜索,各类系统都有自己的包管理工具。

  

你可能感兴趣的:(个人技术分享)