linux centos git 自动更新,在centos上搭建git服务器并自动同步代码
5k 次阅读 · 读完需要 15 分钟
0
参考文章
简述
1、服务器上安装Git依赖及Git
2、创建Git用户及所属组
3、服务器上初始化Git仓库
4、安装Git客户端并生成公钥
5、创建证书登录
6、使用Git Bash克隆服务器上的空仓库
7、将本地库项目推送到服务器
1、服务器上安装Git以及依赖
1.1安装Git依赖
yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-devel
1.2.安装Git
yum install -y git
2、创建”用户组“和”用户“,用来运行git服务
2.1创建用户组
groupadd git
2.2添加git用户组下的用户
adduser phper -g git
2.3为用户名为phper 的用户设置密码
passwd phper
Changing password for user git.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
3、建立git仓库
mkdir gitroot
chmown phper:git gitroot
cd /gitroot
git init --bare project.git
chmown -R phper:git project.git
chmod 774 -R project.git
cd ../
chmod 750 gitroot
4、安装Git客户端并生成公钥
4.1下载git客户端安装好后右键选择Git GUI Here->Help->Show SSH Key
就能得到私钥和公钥
打开Puttygen
load之前生成好的私钥
得到格式化后的私钥,点击保存私钥
配置小乌龟
4.2创建证书登录
切换到phper目录
cd /home/phper
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
然后将客户端的公钥上传到.ssh目录
cd .ssh
rz
将公钥添加进authorized_keys中
cat id_rsa.pub >> authorized_keys
5、克隆到本地
右键选择git克隆
这样就把服务器的空仓库拉取下来了。
现在我们能够正常的提交代码到服务器的git,但是还不能自动同步,我们还需要修改服务器的hooks/post-receive文件。具体post-receive内容
#!/bin/sh
unset GIT_DIR
DeployPath="/alidata/www/project"
LogPath="/alidata/gitroot/project.git/hooks"
echo -e "\n================= `date +"%Y-%m-%d %H:%M:%S"` ===============\n" >> $LogPath/gitsync.log 2>&1
cd $DeployPath
#git stash
#先拉取再合并
git pull origin master >> $LogPath/gitsync.log 2>&1
#强制与远程服务器同步,不与本地合并,只能通过提交的客户端提交的方式修改代码。
#git fetch --all
#git reset --hard origin/master
#time=`date`
#echo "web server pull at webserver at time: $time."
echo "================================================" >> $LogPath/gitsync.log 2>&1
更改post-receive的所有者和权限
chmod -R 774 post-receive
chown phper:git post-receive
最后在www下
mkdir project
chown -R phper:git project
chmod -R 774 project
cd /alidata/www
git clone /gitroot/project.git
好了git的同步就弄好了
如果同步用不了,打开hooks/gitsync.log查看错误日志
可能预见的错误
1、fatal: /usr/libexec/git-core/git-pull cannot be used without a working tree.
同步的项目文件夹没有建立---------------解决办法:在www下建立project项目文件夹
2、fatal: Not a git repository (or any of the parent directories): .git
项目文件里没有git初始化------------------解决办法:在www路径下执行git clone /alidata/gitroot/project.git
3、error: cannot open .git/FETCH_HEAD: Permission denied
git在项目目录没有写入权限---------------解决办法:修改所有者以及权限 chown -R phper:git project / chmod -R 774 project
4、每次pull push的时候还是要输入密码
秘钥没有起作用-----------------------------解决办法:/var/log/secure查看一下日志,是否是.ssh的权限问题
chmod 700 .ssh
chmod 600 .ssh/authorized_keys
赞 | 0收藏 | 9
linux centos git 自动更新,在centos上搭建git服务器并自动同步代码相关推荐
- centos+7虚拟机web服务器,CentOS7上搭建WEB服务器
mysql 安装 直接yum install mysql-server是不可以的 1 wget http://repo.mysql.com/mysql-community-release-el7-5. ...
- CentOs上搭建git服务器
CentOs上搭建git服务器 首先安装setuptools wget http://pypi.python.org/packages/source/s/setuptools/setuptools-0 ...
- 这可能是东半球最详细的Linux下搭建Jenkins服务器实现自动打包的教程(上)
前言:作为开发者,我们都遇到过这样一个问题,项目在测试期的时候,测试总会找我们打各个环境的包,什么生产包.prd包.pre包,每次都是我们打完包再发给测试.可是打包是要时间的啊,项目小还好,项目大的话 ...
- 利用win10的Linux子系统在PC上搭建git远程仓库
在win10上搭建一个git远程仓库 在win10上安装ubuntu子系统 在控制面板中开启linux子系统 下载安装Ubuntu子系统 在Ubuntu子系统上安装配置git远程仓库 建立一个git仓 ...
- centos dhcp服务器文件,Centos8上搭建dhcp服务器
Centos8上搭建dhcp服务器 首先我的环境是在本地的VMware虚拟机,所以先将VMware中的dhcp服务关闭 关闭防火墙,关闭selinux这些必须关闭: systemctl stop fi ...
- android应用程序的自动更新升级(自身升级,通过tomcat),[SaltStack] Minion-conf自动更新...
minion-conf配置文件自动更新, 加载 minion-conf是每个minion自身以来的配置, 为了方便我们在中心管控机上(Master)统一配置, 然后下发文件, 进而使得Minion能够 ...
- linux服务器上svn的log_Linux服务器上搭建svn服务器
背景 项目开发中需要版本控制,而我们经常使用的是在windows系统上搭建svn服务器,下面介绍在Linux系统(CentOs)上搭建svn服务器. 1. 使用yum安装svn 使用yum安装svn, ...
- 在Windows上搭建Git Server
Git在版本控制方面,相比与SVN有更多的灵活性,对于开源的项目,我们可以托管到Github上面,非常方便,但是闭源的项目就会收取昂贵的费用. 那么私有项目,如何用Git进行代码版本控制呢?我们可以自 ...
- Git学习系列之Windows上安装Git之后的一些配置(图文详解)
不多说,直接上干货! 前面博客 Git学习系列之Windows上安装Git详细步骤(图文详解) 第一次使用Git时,需要对Git进行一些配置,以方便使用Git. 不过,这种配置工作只需要进行一次便可, ...
- 在群晖NAS上搭建 Git Server
概述 事前准备 配置NAS 1 在群晖NAS上安装 Git Server 套件 2 创建用来存放git仓库的共享目录 3 创建用来使用git的普通用户 4 设置 Git Server 允许刚创建的用户 ...
最新文章
- c# 如何让tooltip显示文字换行
- linux 挂载 nfs 权限,linux – 如何允许写入已挂载的NFS分区
- SpringBoot文件上传时提示FileUploadBase$SizeLimitExceed
- rest_framework02:修改数据/校验钩子/read_only和write_only
- java 判断进程状态_获取远程服务器上 Java 进程的运行状态
- java skip函数_【Java必修课】图说Stream中的skip()和limit()方法及组合使用
- c语言中isdigit函数_在C / C ++中使用isdigit()
- 支撑江苏移动百亿级话单实时监控是这样实现的
- codeblock输出中文乱码问题
- HCIA-Storage 存储工程师学习笔记——1. 存储技术趋势
- VS2017离线安装
- word中设置多级标题
- 多元线性回归分析spss结果解读_spss多元线性回归结果解读
- 注册微信公众平台测试账号
- win10浏览器加载很慢_Win10系统打开网页速度很慢的解决办法
- matlab求解不等式方程组解集,matlab求不等式方程组的可行解
- 推荐几个帮你避坑和赚钱的公众号
- 羊城杯2022--Writeup
- Kubernetes kube-proxy 如何与 iptables 完美配合使用
- PMO如何有效搭建项目管理体系︱伯俊软件PMO经理李双燕