搭建Git服务器并编写自动部署脚本今天尝试在linux服务器上搭建Git服务器,写了一个简单的自动部署脚本。主要参考廖雪峰-GIT教程-搭建Git服务器现在开始吧!创建git用户运行git服务addusergit创建证书登录收集所有需要登录的用户的公钥,也就是自己的id_rsa.pub文件,将所有公钥导入/home/git/.ssh/authorized_keys文件,每行一个。初始化Git仓库,首先选择一个目录作为Git仓库,假设是/home/git/sample.git,在/home/git目录下输入命令:gitinit--baresample.gitGit会创建一个barewarehouse,barewarehouse没有工作空间,因为服务器上的Git仓库纯粹是为了共享,所以不允许用户直接登录服务器更改工作空间,服务器上的Git仓库通常以.git结尾.然后,将所有者更改为gitchown-Rgit:gitsample.git通过编辑/etc/passwd文件禁用git用户shell登录,找到你的git用户行,例如:git:x:1001:1001:,,,:/home/git:/bin/bash将/bin/bash更改为/usr/bin/git-shell,例如:git:x:1001:1001:,,,:/home/git:/usr/bin/有了git-shell,git用户可以通过ssh正常使用git,但是无法登录shell,因为我们为git用户指定的git-shell会在每次登录时自动退出。克隆远程仓库gitclonegit@server:sample.gitserver是你的服务器域名或者ip地址如果git仓库和web目录在同一台服务器主机上:gitclone/home/git/sample.git如果不在git用户的家创建在目录下,比如/srv/gits/sample.git:gitclonegit@server:/srv/gits/sample.git如果克隆成功,那么你的git服务器已经搭建成功。下一篇:自动同步hook脚本因为我是web目录和git是同一台服务器编辑/home/git/sample.git/hooks/post-receive,post-receive是git服务器接收到代码push之后(push之后已完成)执行脚本。#!/bin/shwhilereadoldrevnewrevrefnamedobranch=$(gitrev-parse--symbolic--abbrev-ref$refname)if["master"=="$branch"];然后#做一些事情echo"post-receiveinbranchmaster">>/tmp/git-sample.logunsetGIT_DIRwwwPath=/var/www/html/samplecd$wwwPath&&/usr/bin/gitpulloriginmasterexit0fidone从脚本内容可以看出,我们在判断当前push分支为master时,执行了gitpulloriginmaster操作。给执行权限:chown-Rgit:git/home/git/sample.git/hooks/post-receivechmod+x/home/git/sample.git/hooks/post-receive因为git仓库和web目录都在在同一平台的服务器主机上,这里使用的clone是:gitclone/home/git/sample.git因为同步脚本的执行用户是git,所以需要保证项目目录有git写权限。也是容易出问题的权限问题。好吧,试试吧~原文链接:搭建Git服务器-编写自动部署脚本更多分享知识点,请扫码关注:
