git 虚拟机或者服务器自动部署

在gitee或者是GitHub搭建仓库再用宝塔的webhook之类的插件可以很方便实现。不过我是虚拟机,所以比较麻烦,需要自己搭建。

1.服务器搭建远程仓库:主要参考以下菜鸟教程即可:
Git 服务器搭建
或者是其他文章。记得要禁用git用户的控制台登录,不过可以放到最后禁止,因为后续如果发生故障需要调试用到git用户。
远程仓库建好之后,假设仓库地址是GIT_DIR(/home/gitrepo/runoob.git),在GIT_DIR/.git/hooks里面的post-update或者是post-receive 输入以下内容。第一句unset有没有用我没测试过,但是据说不unset会导致出现not a repository :"."的error,这个是环境变量默认设置。后面几句也没有测试,不知道有什么用。
测试过貌似unset GIT_DIR没有用,因为我打成了GIR_DIR也没问题。
几句echo都是测试用途,
可以先用root 用户运行sh post-update测试部署结果,没问题再用git用户运行sh post-update测试,再没问题就禁用git用户的控制台登录(/etc/passwd文件最后冒号后面的/bin/bash改用什么/usr/bin/git-shell,参考文末)

#!/bin/sh
# 
# An example hook script to prepare a packed repository for use over
# dumb transports.
#
# To enable this hook, rename this file to "post-update".

#exec git update-server-info

#unset GIR_DIR
sudo echo "welcome to runoob.git,now is `TZ='Asia/Shanghai' date`" >> here.log
WEB_PATH='/www/cccc' #网站根目录
WEB_USER='www'       #所属用户
WEB_USERGROUP='www'  #所属用户组
GIT_DIR='/home/gitrepo/runoob.git'
#sudo echo $GIT_DIR >> here.log
sudo git --work-tree=$WEB_PATH --git-dir=$GIT_DIR checkout master -f #检出master分支到网站目录
#exit 0
sudo chown $WEB_USER:$WEB_USERGROUP $WEB_PATH -R  #修改网站目录所属用户和用户组
#cd $WEB_PATH
#sudo echo "yes">>1.log
#git pull /home/gitrepo/runoob.git --no-rebase
#sudo chown $WEB_USER:$WEB_USERGROUP $WEB_PATH -R
cd /home/gitrepo/runoob.git
exit 0

编辑完后增加可执行权限,命令是chmod +x post-update。
另外,部署后的网站用户和用户组都是www.
而且裸仓库是需要chown -R 改成git用户和用户组。
包括上面新建的hooks/post-update或者是hooks/post-receive。否则在第二次push的时候会报错:
error: cannot update the ref 'HEAD': unable to append to './logs/HEAD': Permission denied
而且需要配置git用户的有关权限。主要是sudo.
vim /etc/sudoers,在root用户下增加git用户的权限。
在这里插入图片描述

还有一定要清空git的密码。
清空密码是passwd -d git.
但是如果有需要用密码的话就可以设置。shell脚本(post-update/post-receive)里面用echo ‘你的password’|sudo -S 具体命令,可以从输出流得到密码。
但是我好像不成功。所以直接清空密码。

不过这样部署后work-tree就不是git仓库。也可以git clone,或者cd后git pull.这些是其他做法。

大概是这样。
另外了解一下git -rev-parse很有用。
https://blog.csdn.net/ouyang_peng/article/details/73162532
还有就是用户和用户组和权限和密码的学习。
https://blog.csdn.net/levy_cui/article/details/51143188
https://www.cnblogs.com/xs104/p/4510114.html
https://blog.csdn.net/zxp3817100/article/details/86607344

git merge VS git rebase,不太懂。
还有git add . VS git add all?

不知道有没有遗漏步骤,或者是有没有未知故障,因为我用了两天时间,现在才自动部署成功。当然了,最关键的是需要把用户修改成www.其实git用户好像也可以运行,之前都试过。
可以参考更多大神的文章,写的很专业:
GIT服务器实现web代码自动部署
使用git的post-receive实现自动部署
搭建git服务器及利用git hook自动布署代码

使用git hooks实现代码自动部署更新
centos7 下 安装git 并实现自动部署

7、禁用git用户的shell登陆
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
最后一个冒号后改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
————————————————
版权声明:本文为CSDN博主「无风的雨」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/guyan0319/article/details/79111600
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值