搭建Git服务器环境----Git hooks代码自动部署
引言:自己想搭一套git的服务端环境,不想用github码云等。经多方资料整合,实验总结,以下是亲测有效的方式。可用于公司日常开发
一.搭建Git环境
① 安装 Git
Linux 做为服务器端系统,Windows 作为客户端系统,分别安装 Git
服务器端:
#yum install -y git
安装完后,查看 Git 版本
[root@localhost ~]# git --version
git version 1.7.1
② 服务器端创建 git 用户,用来管理 Git 服务,并为 git 用户设置密码
[root@localhost home]# id git
id: git:无此用户 [root@localhost home]# groupadd git
[root@localhost home]# useradd git
[root@localhost home]# passwd git
注:新增用户,useradd -g git 新用户名(新用户也就是linux的用户)
③ 服务器端创建 Git 仓库
设置 /opt/sample.git 为 Git 仓库
然后把 Git 仓库的 owner 修改为 git
[root@localhost home]# mkdir -p /opt/sample.git
[root@localhost home]# git init --bare /opt/sample.git
Initialized empty Git repository in /opt/sample.git [root@localhost home]# cd /opt
[root@localhost git]# chown -R git:git sample.git/
至此git搭建完毕(没有使用RAS认证) 此搭建步骤参考 https://www.cnblogs.com/dee0912/p/5815267.html
二.利用git hook自动进行部署代码同步
1.创建项目目录
mkdir /data/sample
2.克隆远程仓库
git clone /opt/sample.git

3.在仓库sample.git hooks目录中,创建post-receive文件,内容如下
#!/bin/sh
DEPLOY_PATH=/data/sample
date | tee log.txt
unset GIT_DIR #这条命令很重要
cd $DEPLOY_PATH
git reset --hard
git pull | tee log.txt # tee记录脚本日志
#chown www:www -R $DEPLOY_PATH
注意:1.若代码不能自动同步,多半是权限问题
解决办法:每次脚本执行最后,重新chown或chmod项目目录
2.若客户端push失败
解决办法:每次脚本执行最后,重新chmod sample.git/objects/ 权限
客户端:
下载 Git for Windows,地址:https://git-for-windows.github.io/
安装完之后,可以使用 Git Bash 作为命令行客户端。
安装完之后,查看 Git 版本
$ git --version
git version 2.8.4.windows.1
克隆远程仓库 git@Ip:/opt/sample.git(注意 此处git为你的git用户名)
提交代码测试
注意:push失败、部署失败注意权限
sudo 以管理员身份运行脚本--tee方式记录脚本日志
说明:当运行脚本时,常遇到权限不足等,可以用以上方法来以管理员权限运行
1.编辑/etc/sudoers (注意,这里使用 visudo 而不是 vi 来设置。)
2.visudo或 给与/etc/sudoers写权限 vi方式打开
3.%wheel ALL=(ALL) ALL ##这行默认是注释掉的。如果取消注释,则群组为 wheel 的人就可以进行root 的身份工作!这个 wheel 是系统预设的 group!因此,如果想要让这部主机里头的一般身份使用者具有sudo 的使用权限,那么就必需将该 user 放入支持 wheel 这个群组里头!
4.git ALL=(ALL) ALL
搭建Git服务器环境----Git hooks代码自动部署的更多相关文章
- git的安装使用和代码自动部署
1.安装 http://www.cnblogs.com/sunada2005/archive/2013/06/06/3121098.html http://www.cnblogs.com/zhcncn ...
- Jenkins+Maven+Svn搭建持续集成环境持续集成和自动部署
Jenkins和Hudson有很深的渊源,Jenkins目前更新频繁,目前选用Jenkins为持续集成工具和自动部署 Jenkins的使用有很多的介绍,主要记录如下要点: 192.168.1.240: ...
- 做了一个简易的git 代码自动部署脚本
做了一个简易的git 代码自动部署脚本 http://my.oschina.net/caomenglong/blog/472665 发表于2个月前(2015-06-30 21:08) 阅读(200 ...
- Mac 搭建 SVN 服务器环境
Mac 搭建 SVN 服务器环境 一.创建svn repository svnadmin create /path/svn/pro //仓库位置,svn是svn的目录,pro是一个版本库的目录 PS: ...
- 在linux服务器上装svn版本管理,自动部署代码到项目
在linux服务器上装svn版本管理,自动部署代码到项目 http://bbs.aliyun.com/read/9715.html?spm=5176.7114037.1996646101.1.W3zw ...
- 在linux服务器上装svn版本管理,自动部署代码到web项目
在linux服务器上装svn版本管理,自动部署代码到项目 1.安装svn服务器端 yum install subversion 从镜像下载安装svn服务器端 中间会提示是否ok,输入y,确认 ...
- pm2命令,端口查询,mongodb服务启动,nginx服务启动,n模块的使用,搭建nodejs服务器环境,搭建oracledb服务器环境 linux的环境搭建
pm2命令 pm2 ls //查询pm2 启动的列表 pm2 start app.js //启动文件 pm2 restart app //重启项目 pm2 logs app //监控项目执行日志打印 ...
- 【svn】Centos搭建svn服务器环境
1.需求描述 在Centos系统中搭建svn服务器环境 2.搭建过程 2.1 yum安装svn [root@localhost /]# yum install svn 2.2 新建目录存储svn目录 ...
- Mac搭建svn服务器环境
Mac搭建svn服务器环境 svn是Subversion的简称,是一个开放源代码的版本控制系统, Mac系统自带了svn的服务端和客户端功能, 因此不需要下载第三方软件,就可以支持svn进行版本的管控 ...
随机推荐
- 洛谷 题解 UVA12661 【有趣的赛车比赛 Funny Car Racing】
[题意] 在一个赛车比赛中,赛道有\(n(n<=300)\)个交叉点和\(m(m<=50000)\)条单向道路.有趣的是,每条道路都是周期性关闭的.每条道路用5个整数\(u,v,a,b,t ...
- 【作业】Mental Rotation (模拟)
题目链接:https://vjudge.net/contest/345791#problem/L [问题描述] Mental rotation is a difficult thing to mast ...
- publish dotnet core angular spa app to docker
公司一个使用Angular开发的应用准备下个版本使用.Net Core开发后台, 刚好可以用到.Net Core Angular Spa模板, 而且最近也在学习Docker, 于是就想把它融汇贯通, ...
- crontab每小时运行一次
先给出crontab的语法格式 对于网上很多给出的每小时定时任务写法,可以说绝大多数都是错误的!比如对于下面的这种写法: 00 * * * * #每隔一小时执行一次 00 */1 * * * #与上面 ...
- 无法解析的外部符号 ___argc nafxcw.lib(appcore.obj)
参考 https://blog.csdn.net/wfree/article/details/44171157 MFC的使用: 由"在静态库中使用 MFC" 改成 "在共 ...
- 一次实战CTF-WEB(多重登录机制中的缺陷)
要求登录admin账号 1.登录界面 我们发现有找回密码这个易受攻击点 2.直奔找回密码 通过观察前两个阶段url(reset1.htm1 reset2.html),我们推测出了第三个阶段的url(r ...
- Django Rest framework的限流实现流程
目录 一 什么是throttle 二 Django REST framework是如何实现throttle的 三 Django REST framework中throttle源码流程 一 什么是thr ...
- 关于下载gitbash客户端
gitbash的安装包找不到了,最近又在准备新机器的环境,需要安装git客户端. https://www.git-scm.com/,网址找到了,但是下载非常缓慢.搜了一下,都是改host,但是改了也没 ...
- Hbuilder中配置cmd
步骤: 1. ①运行——>外部工具——>外部工具 配置2. 新建一个名为cmd(随意命名)的外部工具: 名称:cmd 要执行的命令或文件:C:\Windows\System32\cmd. ...
- 有用的vscode快捷键大全+自定义快捷键
VS Code是前端的一个比较好用的代码编辑器,但是我们不能老是局限于鼠标操作呀,有时候很不方便,所以呢,快捷键大全来啦,有的可能会和你们电脑自带的快捷键冲突呢,这时候,你自己设置一下就好了呀 一.v ...