本文参考连接https://blog.csdn.net/shi851051279/article/details/95250402/
服务器环境: 阿里云 centOS 7.2 64位
1、服务器上安装git
yum install git -y #安装git -y可以免去中途的一些提示
git --version #查看git版本 ,显示版本信息,说明安装成功,现在yum 源上最新的应该是1.8.3.1版本
2、 创建用于运行gitlab 的用户git
adduser git #建立git用户
groupadd git #建立git用户组
usermod -G git git #将git用户加入git用户组同时从其他组移除
usermod -a -G root git #将git用户加入root用户组,有-a参数不从其他组移除,此时git用户同时属于git组和root组
passwd git #为git用户设置登录密码(这里回车以后会提示输入两次密码,两次密码都相同的话,设置密码成功)
3、创建git仓库目录
cd /home/git #进入git用户目录(/home下的git目录是我们在第二步创建完git用户以后自动在/home目录下生成的)
#确保git目录拥有者是git用户,不是就修改chown git:git /home/git -R
mkdir test.git #创建git仓库目录
cd test.git #进入目录
git init --bare #初始化仓库目录
cd ../ #返回上层目录
chown git:git test.git -R #修改git仓库目录拥有者为git
4、创建服务器上web项目目录
由于是用宝塔安装的,直接到/www/wwwroot目录就行
cd /www #我的环境是宝塔安装的,可以自行选择
chown git:git wwwroot -R #拥有者改为git
chmod 755 wwwroot -R #权限设为755
5、生成git公钥私钥
su - git
cd /home/git #进入git目录
ssh-keygen -C 'your@email.com' -t rsa #为你生成rsa密钥,可以直接一路回车,执行默认操作
修改权限
chmod 700 /home/git/.ssh # 700是只git用户有读、写、执行权限。
6、免密码验证链接
vim /etc/ssh/sshd_config #有可能会出现空白文件,是由于权限原因引起的,我是切换root用户修改后改回来的
确保打开一下三个配置
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys #我的这个默认是打开的
修改完成后重新启动
systemctl restart sshd
同理,后边我们在客户端(自己开发的电脑上)克隆项目的时候也会让输入密码,所以我们也要在客户端生成一下rsa秘钥,(生成git 秘钥方法网上有很多,这里不再多赘述),我们需要把生成的id_rsa.pub (这个文件是公钥)里的内容拷贝出来放到接下来创建的 authorized_keys 文件中
vim /home/git/.ssh/authorized_keys #创建authorized_keys文件
###将生成的id_rsa.pub中的内容全部粘贴进去,保存包含客户端的
chmod 600 /home/git/.ssh/authorized_keys #修改权限 600是只有拥有者有读写权限。
7、创建git钩子(hooks)web项目目录下代码自动同步
cd /home/git/test.git/hooks #进入hooks目录
vim post-receive #创建post-receive文件
#####填入如下内容
#!/bin/bash
DIR=/www/wwwroot/test #指定代码自动检出目录
git --work-tree=${DIR} clean -fd
git --work-tree=${DIR} checkout --force #直接强制检出
DIR 变量对应的目录就是 放置web项目代码的目录,也是线上git仓库的工作区
修改权限:
chmod +x post-receive #赋予执行权限
8、在web项目目录下克隆git仓库
cd /www/wwwroot #进入www目录
git clone git@{服务器公网ip}:test test #克隆线上仓库到test目录
9、客户端克隆项目
git clone git@192.168.0.103:/home/git/test.git #192.168.0.103 是服务器的公网ip ,这里是随便写的,请自行改正
10、测试
git add .
git commit -m "第一次提交"
git push origin master
push成功以后,去服务器上查看是否有index.html 文件,并vim index.html 打开此文件查看内容是否完整。
至此,整个代码同步功能就完成了!以后就不用再去服务器端的web项目目录下手动去pull 代码了