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

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

要实现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.最后

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

微刻时光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值