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/
标签:git,dist,用户组,usr,服务器,post,local,搭建
From: https://www.cnblogs.com/Nhenk/p/17282850.html