Linux环境搭建git服务器和代码自动化部署

news2024/11/25 18:50:59

在开发过程中,我们经常遇到的问题就是提交代码到测试地址,然后进行线上测试。

要实现Git代码的自动化部署,考虑以下几种方法

  • FTP提交:可以使用FTP将代码上传到服务器
  • 自动化部署工具:如Jenkins、当代码被推送到仓库时,工具会自动拉取最新代码,进行构建,并部署到服务器上
  • 使用定时任务:使用任务计划程序来设置定时任务,定期执行Git命令
  • 使用Webhooks:在你的代码仓库(如GitHub、GitLab或Bitbucket)中设置一个Webhook,当代码仓库有新的提交时,Webhook会发送一个HTTP POST请求到你指定的URL。在你的服务器上设置一个监听该URL的服务,当接收到Webhook的请求时,服务可以自动执行git pull来更新服务器上的代码。

今天我们使用git本身的一个功能来实现,post-receive 是一个非常有用的钩子(hook),它在代码被推送到服务器上的Git仓库后执行。这个钩子通常用于自动化部署流程。当新的代码被推送到服务器上的仓库时,post-receive 钩子可以触发一系列脚本或命令,比如自动拉取最新的代码更改并部署到生产环境。


1.git安装

1.1 Linux环境安装

# 1.依赖包
yum install -y wget
yum install -y gcc-c++
yum install -y zlib-devel perl-ExtUtils-MakeMaker


# 2.编译安装
# 下载最新git
cd /usr/local/src
wget https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.9.0.tar.gz
 
# 编译安装git
tar -zxvf git-2.9.0.tar.gz
cd git-2.9.0
./configure --prefix=/usr/local/git
make
make install

# 3.添加环境变量
# 将 /usr/local/git/bin 加到后面,用:隔开
vim /root/.bash_profile    
PATH=$PATH:$HOME/bin:/usr/local/git/bin 
# 重启
source /root/.bash_profile

# 4.git用户
#添加用户
usermod git
Passwd  git

#禁止该用户shell登陆
vi /etc/passwd
git:x:1001:1001::/home/git:/usr/local/git/bin/git-shell

1.2 windows本地安装

下载地址 https://git-scm.com/downloads/win

windows环境,下载安装文件后,一步步安装就可以了

在命令提示符或PowerShell中输入git --version,如果安装成功,它会显示安装的Git版本。

2.git配置

2.1 Linux环境配置

1.设置全局用户名
git config --global user.name "Your Name"

2.设置全局邮箱
git config --global user.email "youremail@example.com"

3.设置默认文本编辑器
git config --global core.editor "xx"

4.设置提交信息的默认字符编码
git config --global i18n.commitencoding utf-8

2.1 windows本地配置

大部分配置在安装时已经设置了,但是需要配置用户与邮箱,这个配置与Linux一样

git config --global user.name "Your Name"
git config --global user.email "youremail@example.com"

 两个环境下都可以配置Git别名

git config --global alias.co 'checkout'
git config --global alias.br 'branch'
git config --global alias.ci 'commit'
git config --global alias.st 'status

3.配置证书认证

3.1 本地生成证书

本地创建密匙文件,输入命令后,直接回车,一直到结束

ssh-keygen -t rsa -C "your_email" 

该命令会产生两个文件: id_rsa对应私钥,id_rsa.pub对应公钥。将id_rsa.pub中的内容写到服务器的authorized_keys文件中。如果有多个客户端,那么在authorized_keys文件中,一行保存一个客户端的公钥

同时在C盘用户目录下有.ssh文件夹下,生成2个文件

3.2 证书上传

将生成的id_rsa.pub上传到服务器上

  •  服务器创建目录地址
/home/git/.ssh/authorized_keys
  • 创建authorized_keys文件
cd /home/git
mkdir .ssh
chmod 700 .ssh
touch .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
cd /home
chown -R git:git git
  • 本地rsa文件上传到服务器
 ssh git@182.61.136.xxx 'cat >>.ssh/authorized_keys' < ~/.ssh/id_rsa.pub

3.3 证书认证

  • Linux服务器配置RSA

进入 /etc/ssh 目录,编辑文件sshd_config,打开以下三个配置的注释:

RSAAuthentication yes  #最新版centos7.4无需配置、没有的不配置
PubkeyAuthentication yes
AuthorizedKeysFile      .ssh/authorized_keys
  •  保存并重启 sshd 服务
service sshd restart 

4.代码自动同步

4.1 部署Git服务器代码仓库

通过以上步骤的配置后,我们可以在服务器上创建git仓库地址了

  • 创建仓库地址
cd /home
mkdir mycode
  • 更改文件所属用户 
chown git mycode/                    

  •  初始化仓库
cd mycode
git init --bare test.git             
  •  更改仓库文件所属用户
chown -R git test.git                
  • 本地克隆git项目 
git@192.168.0.25:/home/mycode/test.git

4.2 部署网站

  • 创建网站代码目录
cd /home    
mkdir www
  •  更改所属用户
chown git www/
  •  初始化网站git仓库及更改其所属用户
cd www
#注意,这里要初始化为一般仓库而非裸仓库
git init
chown -R git .git

网站目录一定要改成用户git,否则可能自动拉取不生效

4.3 代码自动化脚本

  • git服务器仓库中配置hooks
cd /home/mycode/test.git/hooks
  • 编辑文件post-receive
vi post-receive
  • 自动化内容
unset GIT_DIR
#进入网站代码目录
cd /usr/local/apache/htdocs/wsx
#执行git pull命令,拉取git服务器仓库地址
git pull /home/mycode/pp.git master
#返回仓库并退出
cd /home/mycode/pp.git
exit 0
  • 设置执行权限
chmod +x /home/mycode/test.git/hooks/post-receive

配置完后,我们进行测试:

  • 首先我们拉取服务器git仓库地址,将代码下载到本地
  • 然后,我们新建一个文件提交到仓库
  • 在网站代码目录查看文件是否存在,如果存在则整体配置成功,如果没有就需要逐步检查,看那个环节有错误,进行修改,一定要用注意目录的用户权限

5.Git常用命令

5.1 基本git基础命令

  • 初始化仓库
git init
  • 克隆远程仓库
git clone [url]
  • 查看文件状态

git status
  •  添加文件到暂存区
git add [file]
  • 提交更改到本地仓库
git commit -m "commit message"
  • 查看提交历史日志
git log

5.2 分支管理

  • 查看分支
git branch
  • 创建分支
git branch [branch-name]
  • 切换分支
git checkout [branch-name]
  • 创建并切换分支
git checkout -b [branch-name]
  • 合并分支
git merge [branch-name]
  • 删除分支
git branch -d [branch-name]

5.3 远程仓库

  • 查看远程仓库
git remote -v
  • 添加远程仓库
git remote add [remote-name] [url]
  • 拉取远程仓库的更新
git pull [remote-name] [branch-name]
  • 推送到远程仓库
git push [remote-name] [branch-name]
  • 删除远程分支
git push [remote-name] --delete [branch-name]

5.4 撤销操作

  • 撤销工作目录的更改
git checkout -- [file]
  • 撤销暂存区的更改
git reset HEAD [file]
  • 撤销最近的提交
git reset --soft HEAD~1
  • 撤销所有未提交的更改
git reset --hard
  • 撤销到特定提交
git reset --hard [commit-hash]

5.4 查看差异

  • 查看工作目录与暂存区的差异
git diff
  • 查看暂存区与最后一次提交的差异
git diff --cached
  • 查看工作目录与最后一次提交的差异
git diff HEAD

5.5 标签管理

  • 创建标签
git tag [tag-name]
  • 查看标签
git tag
  • 推送标签到远程仓库
git push [remote-name] [tag-name]
  • 删除标签
git tag -d [tag-name]
  • 删除远程标签
git push [remote-name] --delete [tag-name]

 5.6 其他命令

  • 查看配置信息

git config --list
  • 配置全局邮箱

git config --global user.email "youremail@example.com"
  • 配置全局用户名

git config --global user.name "Your Name"

6.最后

感谢大家,请大家多多支持!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2190502.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【JavaWeb实战项目】在线蛋糕商城的设计与实现(附完整源代码)

一、系统介绍 本项目分为前后台&#xff0c;分为管理员与普通用户两种角色&#xff0c;管理员登录后台&#xff0c;普通用户登录前台&#xff1b; 管理员角色包含以下功能&#xff1a; 管理员登录 商品管理 订单管理 客户管理 类目管理等功能。 用户角色包含以下功能&a…

MySQL 表的操作

温馨提示&#xff1a;非特殊情况不要修改和删除表 创建表 第一种方式 第二种方式 第三种方式 简单查看 查看表 查询当前数据库&#xff1a;select database(); 查询当前数据库中具有的表&#xff1a;show tables; 查看表的简略信息&#xff1a;desc 表名1&#xff1b; 查看表的…

22.第二阶段x86游戏实战2-背包遍历REP指令详解

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 本人写的内容纯属胡编乱造&#xff0c;全都是合成造假&#xff0c;仅仅只是为了娱乐&#xff0c;请不要…

双十一狂欢派对 五款市面上获得好评的好物

一年一度的双十一购物狂欢派对即将到来&#xff0c;这一天不仅是广大消费者的福利日&#xff0c;也是各大品牌展示实力的战场。随着市场的不断发展与消费者需求的多样化&#xff0c;双十一已经不仅仅是降价促销的代名词&#xff0c;更是品质与创新的竞技场。在琳琅满目的商品中…

【C++】--类与对象(1)

&#x1f9c7;个人主页: 起名字真南 &#x1f32d;个人专栏:【数据结构初阶】 【C语言】 【C】 目录 1 类的定义1.1 类定义格式1.1.1 Stack类1.1.2 Date类1.1.3 Struct格式 1.2 访问限定符1.3 类域 2 实例化2.2 对象大小 3 this指针 1 类的定义 1.1 类定义格式 1 class为定义…

软件设计之SSM(5)

软件设计之SSM(5) 路线图推荐&#xff1a; 【Java学习路线-极速版】【Java架构师技术图谱】 尚硅谷新版SSM框架全套视频教程&#xff0c;Spring6SpringBoot3最新SSM企业级开发 资料可以去尚硅谷官网免费领取 学习内容&#xff1a; AOP面向切面编程 代理AOP面向切面编程获取…

好用的股票预测八大算法的Python实现

股票预测算法通常涉及时间序列分析、统计学、机器学习和深度学习等多种方法。以下是经典的、常见的十大股票预测算法及其Python实现。这些算法各有优势&#xff0c;可以用于不同的市场预测场景。以下代码实现中&#xff0c;我们将使用yfinance下载数据&#xff0c;并展示各算法…

如何创建商业博客:一步一步教你从零开始

搭建一个成功的商业博客&#xff0c;不仅可以提升品牌形象&#xff0c;还能吸引更多潜在客户。作为一个在这方面有些经验的人&#xff0c;我来分享一些实用的步骤和建议&#xff0c;希望对你有所帮助。 一、明确你的目标和客户群体 确定目标&#xff1a;首先&#xff0c;你得搞…

Origin图像中插入各种符号以及矩形椭圆等

画各种形状 空白处右击 文字处右击

【RISCV指令集手册】向量扩展v1.0

概述 从rvv 0.9说起 此前写过向量扩展0.9的阅读记录&#xff0c;三年已过&#xff0c;本以为不再参与RVV的相关开发&#xff0c;奈何造化弄人&#xff0c;旧业重操&#xff0c;真就世事难料呀。 总的来说1.0版本相比0.9版本的扩充了较多内容&#xff0c;但大部分为指令功能的…

力扣1~5题

题1&#xff08;简单&#xff09;. 思路&#xff1a; 因为时间复杂度小于n^2,所以不能双for遍历&#xff0c;怎么优化&#xff1f; 这里采用一个键值对的形式&#xff0c;存储nums离target的间隔和它的下标&#xff0c;只要n&#xff0c;然后再遍历nums有没有刚好是这个距离的就…

cnn突破四(生成卷积核与固定核对比)

cnn突破三中生成四个卷积核&#xff0c;训练6万次&#xff0c;91分&#xff0c;再训练6万次&#xff0c;95分&#xff0c;不是很满意&#xff0c;但又找不到问题点&#xff0c;所以就想了个办法&#xff0c;使用三个固定核&#xff0c;加上三层bpnet神经网络&#xff0c;看看效…

从零开始学cv-16:超像素图像分割

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、超像素图像分割简介二&#xff1a;SLIC超像素图像分割三&#xff1a;Seed超像素分割算法四 &#xff1a;LSC超像素分割 前言 在数字图像处理和计算机视觉领…

2、Redis数据安全性分析

文章目录 一、Redis性能压测脚本介绍二、Redis数据持久化机制详解1、整体介绍Redis的数据持久化机制2、RDB详解3、AOF详解4、混合持久化策略 三、Redis主从复制Replica机制详解**1、Replica是什么&#xff1f;有什么用&#xff1f;****2、如何配置Replica&#xff1f;****3、如…

【AI知识点】正态分布(高斯分布)和中心极限定理(CLT)

正态分布&#xff08;Normal Distribution&#xff09;和中心极限定理&#xff08;Central Limit Theorem, CLT&#xff09; 是统计学中非常重要的概念&#xff0c;它们广泛应用于概率论、数据分析、机器学习等领域。以下将详细解释这两个概念及其关系。 1. 正态分布&#xff…

【C++】入门基础介绍(上)C++的发展历史与命名空间

文章目录 1. 前言2. C发展历史2. 1 C版本更新特性一览2. 2 关于C23的一个小故事: 3. C的重要性3. 1 编程语言排行榜3. 2 C在工作领域中的应用 4. C学习建议和书籍推荐4. 1 C学习难度4. 2 学习书籍推荐 5. C的第一个程序6. 命名空间6. 1 namespace的价值6. 2 namespace的定义6. …

《CUDA编程》4.CUDA程序的错误检测

在编写CUDA程序时&#xff0c;有的错误在编译过程中被发现&#xff0c;称为编译错误&#xff0c;有的在运行时出现&#xff0c;称为运行时刻错误&#xff0c;本章讨论如何排查运行时刻错误 1 一个检测CUDA运行时错误的宏函数 1.1 编写错误检查宏函数 在《CUDA编程》3.简单CUD…

从0到1:培训机构排课小程序开发笔记一

业务调研 随着人们生活水平的提高&#xff0c;健康意识和学习需求日益增强&#xff0c;私教、健身和培训机构的市场需求迅速增长。高效的排课系统不仅可以提升机构的管理效率&#xff0c;还能提高学员的满意度。解决传统的排课方式存在的时间冲突、信息不对称、人工操作繁琐等…

51单片机的家用煤气报警系统【proteus仿真+程序+报告+原理图+演示视频】

1、主要功能 该系统由AT89C51/STC89C52单片机LCD1602显示模块温度传感器CO传感器蓝牙LED、蜂鸣器等模块构成。适用于家用天然气泄露报警器、煤气泄露报警器、无线报警等相似项目。 可实现功能: 1、LCD1602实时显示温度和煤气浓度 2、温度传感器DS18B20采集环境温度 3、CO传…

【Mybatis篇】Mybatis的关联映射详细代码带练 (多对多查询、Mybatis缓存机制)

&#x1f9f8;安清h&#xff1a;个人主页 &#x1f3a5;个人专栏&#xff1a;【计算机网络】,【Mybatis篇】 &#x1f6a6;作者简介&#xff1a;一个有趣爱睡觉的intp&#xff0c;期待和更多人分享自己所学知识的真诚大学生。 目录 &#x1f3af;一.关联映射概述 &#x1f6a…