搭建Git服务器并使用HOOK自动部署
2020/1/23 4:06:38
本文主要是介绍搭建Git服务器并使用HOOK自动部署,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
GitHub 的服务器同步的时候太慢了也有可能会彻底访问不了,为了不影响日常工作开发,决定在公司服务器上搭建一个 Git
服务端,并记录下来全过程。
本文服务端环境为 CentOS7
(3.10.0-957.21.3.el7.x86_64)
安装 Git 服务端
以下命令在服务器里运行
查看 Git 版本
yum info git # git version 1.8.3.1 复制代码
可以看到,到目前为止(2020年01月20日),yum
的 Git
版本才 1.8.3.1
,而最新的已经 2.9.2
了。
更新 Git
# 依赖库安装 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel yum install gcc perl-ExtUtils-MakeMaker # 卸载低版本的 Git yum remove git # 下载新版的 Git 源码包(/usr/local/git) cd /usr/local/git wget https://github.com/git/git/archive/v2.9.2.tar.gz tar -xzvf v2.9.2.tar.gz 复制代码
执行以下命令进行编译和安装
# 如果有下载最新版,请按照最新版文件夹名 cd git-2.9.2 make prefix=/usr/local/git all make prefix=/usr/local/git install 复制代码
添加到环境变量
vim /etc/profile 复制代码
添加上这一条 export PATH="/usr/local/git/bin:$PATH"
# 使环境变量立即生效 source /etc/profile # 查看版本号 git --version 复制代码
将 Git
设为默认路径,避免克隆的时候报错
ln -s /usr/local/git/bin/git-upload-pack /usr/bin/git-upload-pack ln -s /usr/local/git/bin/git-receive-pack /usr/bin/git-receive-pack 复制代码
创建 Git 用户
useradd git password ******* 复制代码
禁止 Git 用户使用 Shell 登录系统(为了服务器安全)
vi /etc/passwd 复制代码
在最后一行将 git
用户修改成一下配置并保存
git:x:1000:1000::/home/git:/usr/bin/git-shell 复制代码
配置远程仓库
创建一个空仓库
cd /home mkdir git cd git git init --bare blog.git 复制代码
执行完毕后会创建一个空仓库,仓库的路径为:/home/git/blog.git
为 Git 用户赋予仓库的文件权限
chown -R git:git /home/git/blog.git 复制代码
打开 RSA 认证
编辑 /etc/ssh/sshd_config
文件
vi /etc/ssh/sshd_config 复制代码
找到以下三项,并关闭注释。如果没找到相应项,直接补全就好。
注:vim 模式下向下搜索 /搜索的内容
,向上搜索 ?搜索的内容
RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 复制代码
保存完毕后重启 sshd
服务
/etc/rc.d/init.d/sshd restart # 如果上面的命令出现错误可以尝试使用下面的 service sshd restart 复制代码
打完收工!Git 的服务端配置完毕。
客户端
以下命令在客户端里运行
创建 Git 的使用者
git config --global user.name "NanSHanJi" git config --global user.email "coder.htt@gmail.com" 复制代码
创建和服务器通信的秘钥
ssh-keygen -t rsa -C "coder.htt@gmail.com" 复制代码
一路回车下去就好了,完成后会输出秘钥的路径,进入秘钥的文件夹
id_rsa
是秘钥,打死也不要告诉别人,id_rsa.pub
是公钥,可以公开。
将公钥添加到服务器中
方法一
- 直接打开文件
id_rsa.pub
复制里面的内容。 - 然后粘贴到服务器
~/.ssh/authorized_keys
文件里。
方法二
ssh git@172.168.162.40 'cat >> .ssh/authorized_keys' < 你的文件路径/id_rsa.pub 复制代码
克隆远程仓库到本地
以下命令在客户端里运行
# 找一个文件夹,执行以下命令 # x.x.x.x 是服务器 ip 地址 git clone git@x.x.x.x:/home/git/blog.git 复制代码
push/pull 项目
# 在本地的 blog 文件夹中随便弄点文件进去 git add . git commit -m 初始化项目 git push origin master 复制代码
以下命令在服务端里运行
进入服务器查看远程仓库 commit 记录,如果看到有记录就算成功了
cd /home/git/blog.git git log 复制代码
注:如果没有成功,可以检查下是否防火墙没有开放 22
端口,或者 SSH
不在 22
端口上,如果不在 22
端口上,克隆的时候需要改下地址
git clone ssh://git@x.x.x.x:端口/home/git/LearnProject.git
Git HOOK 自动部署代码
在服务器 /home/git/blog.git 文件夹里是不能直接看到我门提交的代码
所以需要我们把项目 clone 到一个地方
cd /data/wwwwroot git clone /home/git/blog.git 复制代码
后面的自动部署都会基于这个文件夹
设置 HOOK
仓库每次被 push
的时候会触发这个 post-receive
这个文件里的脚本内容
cd /home/git/blog.git/hooks cp post-update.sample post-receive vim post-receive 复制代码
在 post-receive
里面输入代码自动部署的操作流程
unset GIT_DIR cd /var/www/blog git pull --allow-unrelated-histories 复制代码
第一行代码至关重要
Git 的 hooks 里面默认有一些环境变量,会导致无论在哪个语句之后执行git命令都会有一个默认的环境路径,所以需要 unset
掉默认的 GIT
环境变量。
到此,整个搭建流程都完成了
作者:@NanShanJi
这篇关于搭建Git服务器并使用HOOK自动部署的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-11Linux部署Scrapy学习:入门级指南
- 2024-09-11Linux部署Scrapy:入门级指南
- 2024-08-21【Linux】分区向左扩容的方法
- 2024-08-21【Linux】gnome桌面环境切换KDE Plasma
- 2024-08-19如何安装 VMware Tools (macOS, Linux, Windows)
- 2024-08-15Linux部署Scrapy教程:入门级指南
- 2024-07-29linux命令行下好用的性能监控工具atop
- 2024-07-04Linux系统上离线升级SSH服务的具体操作步骤-icode9专业技术文章分享
- 2024-06-0600-macOS和Linux安装和管理多个Python版本
- 2024-03-30[译]漫画SELinux概念