git服务器搭建过程以及遇到的问题

发布时间 2023-04-03 13:50:29作者: Nhenk

git 自动化部署

在 Git 服务器上为用户配置 SSH 公钥

git@Linux:~$ mkdir .ssh
git@Linux:~$ touch .ssh/authorized_keys
git@Linux:~$ chmod 600 .ssh/authorized_keys 
git@Linux:~$

authorized_keys 文件可以保存多个用户的 SSH 公钥,所有公钥被添加到这个文件中的用户,就都可以使用 SSH 公钥的方式进行身份认证而不再需要通过密码的方式认证了。

1.找到本地 git 公钥

这个在你的用户名下面有个 ssh 文件夹,里面有两个文件

2.给服务器安装 git


3.服务器 git 相关配置

服务器创建 git 用户组

groupadd git

建立用户账户

useradd git -g git

给用户账户设置密码

passwd git

如果以上无法实现,就看看有没有相同名字的用户组和用户

查看所有用户组信息

tail /etc/group

查看所有用户组群加密信息

tail /etc/gshadow

可以看到我们注册的用户组 git 和用户 git

我们来删除已经存在的 git 用户组和用户名 git

# 删除用户组
groupdel git
# 删除用户
userdel git

当我们执行命令的时候发现无法删除

下面是解决办法

Linux 无法使用 userdel 删除用户和 groupdel 删除组的解决办法

这里我们要使用 vipw 去删除

先执行

sudo vipw

这会出来用户组的那个 /etc/passwd

我们在底下可以看到 git

按 a 进入编辑状态,到底下把 git 那一栏删除

然后我们按 esc 退出编辑状态,然后 shift + : 输入 wq! 强制更改并退出

它会提示出于一致性的考虑,您可能需要修改 /etc/shadow

然后我们就输入

sudo vipw -s

然后同样的步骤去删除就可以了

至此我们在去创建就不会出现同名的问题了

1. 在服务器上

在 /usr/local/nginx/html 执行如下命令初始化 dist.git 裸库

git init --bare dist.git

并克隆它

git clone /usr/local/nginx/html/dist.git

然后给这两个文件夹的权限

chown -R git:git dist.git
chown -R git:git dist

进入 /usr/local/nginx/html/dist.git/hooks/ 下面新建 post-receive 文件并编辑它

touch post-receive
vim post-receive

在里面写入如下内容

#!/bin/sh

unset GIT_DIR  #很关键

NowPath=`pwd`

DeployPath="/usr/local/nginx/html/dist" #存放项目的文件夹位置

# LogPath="/usr/local/nginx/html/kk/keep.git/hooks" 

cd $DeployPath


git add . -A && git stash
git pull origin main


#  >> $LogPath/gitsync.log 2>&1

# composer install --ignore-platform-reqs

cd $NowPath

echo "同步完成"

exit 0

post-receive 文件权限改成 git 用户权限:

chown -R git:git post-receive

post-recrive 文件添加上运行权限:

chmod +x post-receive

然后到 /usr/local/nginx/html 给 dist 文件夹权限

chmod -R 777 dist/