资讯专栏INFORMATION COLUMN

搭建Git服务器、编写自动部署脚本

jollywing / 3221人阅读

摘要:搭建服务器编写自动部署脚本今天试了下在服务器上搭建服务器,并且编写一个简单的自动部署脚本。好了,试试吧原文连接搭建服务器编写自动部署脚本更多分享知识点请扫码关注

搭建Git服务器、编写自动部署脚本

今天试了下在linux服务器上搭建Git服务器,并且编写一个简单的自动部署脚本。

主要参考 廖雪峰-GIT教程-搭建Git服务器

现在开始吧!

创建一个git用户,用来运行git服务

adduser git

创建证书登录

收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。

初始化Git仓库

先选定一个目录作为Git仓库,假定是/home/git/sample.git,在/home/git目录下输入命令:

git init --bare sample.git

Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git

chown -R git:git sample.git

禁用git用户shell登录

通过编辑/etc/passwd文件完成,找到你的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每次一登录就自动退出。

克隆远程仓库

git clone git@server:sample.git

server是你的服务器域名或ip地址

如果git仓库和web目录在同一台服务器主机上:

git clone /home/git/sample.git

如果不是在git用户的家目录中创建的,比如/srv/gits/sample.git:

git clone git@server:/srv/gits/sample.git

如果clone成功,那么你的git服务器就搭建成功了。

接下来:

自动同步钩子脚本

因为我是web目录和git是同一台服务器

编辑 /home/git/sample.git/hooks/post-receive, post-receive就是在git服务器收到代码推送后(push完成之后)执行的脚本。

#!/bin/sh

while read oldrev newrev refname
do
    branch=$(git rev-parse --symbolic --abbrev-ref $refname)
    if [ "master" == "$branch" ]; then
        # Do something
        echo "post-receive in branch master" >> /tmp/git-sample.log
        unset GIT_DIR
        wwwPath=/var/www/html/sample
        cd $wwwPath && /usr/bin/git pull origin master
        exit 0
    fi
done

从脚本内容可以看出,我们在判断当前push的分支是master时执行git pull origin master操作。

给执行权限:

chown -R git:git /home/git/sample.git/hooks/post-receive
chmod +x /home/git/sample.git/hooks/post-receive

因为是git仓库和web目录在同一台服务器主机上,这里clone使用的是:

git clone /home/git/sample.git

因为同步脚本的执行用户是git,所以要保证项目目录要赋予git写权限。容易出问题的也是权限问题。

好了,试试吧~

原文连接:

搭建Git服务器-编写自动部署脚本

更多分享知识点,请扫码关注:

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/31579.html

相关文章

  • 从 0 到 1 再到 100, 搭建编写、构建一个前端项目

    摘要:从到再到搭建编写构建一个前端项目选择现成的项目模板还是自己搭建项目骨架搭建一个前端项目的方式有两种选择现成的项目模板自己搭建项目骨架。使用版本控制系统管理源代码项目搭建好后,需要一个版本控制系统来管理源代码。 从 0 到 1 再到 100, 搭建、编写、构建一个前端项目 1. 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种:选择现成的项目模板、自己搭建项目骨架。 ...

    call_me_R 评论0 收藏0
  • 从 0 到 1 再到 100, 搭建编写、构建一个前端项目

    摘要:从到再到搭建编写构建一个前端项目选择现成的项目模板还是自己搭建项目骨架搭建一个前端项目的方式有两种选择现成的项目模板自己搭建项目骨架。使用版本控制系统管理源代码项目搭建好后,需要一个版本控制系统来管理源代码。 从 0 到 1 再到 100, 搭建、编写、构建一个前端项目 1. 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种:选择现成的项目模板、自己搭建项目骨架。 ...

    wzyplus 评论0 收藏0
  • 从 0 到 1 再到 100, 搭建编写、构建一个前端项目

    摘要:从到再到搭建编写构建一个前端项目选择现成的项目模板还是自己搭建项目骨架搭建一个前端项目的方式有两种选择现成的项目模板自己搭建项目骨架。使用版本控制系统管理源代码项目搭建好后,需要一个版本控制系统来管理源代码。 从 0 到 1 再到 100, 搭建、编写、构建一个前端项目 1. 选择现成的项目模板还是自己搭建项目骨架 搭建一个前端项目的方式有两种:选择现成的项目模板、自己搭建项目骨架。 ...

    aristark 评论0 收藏0
  • git webhooks 实现自动拉取代码

    摘要:而利用的功能,能够让我们省去这一步,下面我就以码云的为例,实现服务端的代码自动同步部署。查看是哪个用户执行该命令参考文章使用脚本远程部署项目利用实现自动部署代码码云通过实现自动同步代码部署执行系统外部命令函数 当进行开发的环境在本地,而运行的环境要在服务端时,每一次提交代码都需要在服务端pull一次。而利用git的hooks功能,能够让我们省去这一步,下面我就以码云的webhooks为...

    marek 评论0 收藏0
  • hudson +gradle+git+maven(非必选)持续集成一 打包自动

    摘要:持续集成正是针对这一类问题的一种软件开发实践。持续集成的原则业界普遍认同的持续集成的原则包括需要版本控制软件保障团队成员提交的代码不会导致集成失败。 第一集 hudson+gradle+git+maven(非必选)持续集成编译,打包,发布到仓库集成 前言 什么是持续集成 随着软件开发复杂度的不断提高,团队开发成员间如何更好地协同工作以确保软件开发的质量已经慢慢成为开发过程中不可回避的...

    xietao3 评论0 收藏0

发表评论

0条评论

jollywing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<