当前位置: 首页 > article >正文

如何在 VPS 上使用 Git 设置自动部署

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

介绍

要了解 Git 的基本知识以及如何安装,请参考介绍教程。

本文将教你如何在部署应用程序时使用 Git。虽然有许多使用 Git 部署应用程序的方法,本教程将专注于最直接的方法。我假设你已经知道如何在本地机器上创建和使用存储库。如果不知道,请参考此教程。

当你使用 Git 时,工作流通常是朝向版本控制。你有一个本地存储库用于工作,还有一个远程存储库用于保持一切同步,并且可以与团队和不同的机器一起工作。但你也可以使用 Git 将应用程序移动到生产环境。

服务器设置

我们的虚构工作空间:

你的服务器实际目录:/var/www/domain.com

你的服务器存储库:/var/repo/site.git

如果我们想要推送到 site.git,同时让所有内容都在 /var/www/domain.com 可用,我们应该怎么做呢?

创建我们的存储库

从命令行登录到你的 VPS,然后输入以下命令:

cd /var
mkdir repo && cd repo
mkdir site.git && cd site.git
git init --bare

--bare 表示我们的文件夹将没有源文件,只有版本控制。

钩子

Git 存储库有一个名为 ‘hooks’ 的文件夹。该文件夹包含一些示例文件,用于可能的操作,你可以挂钩并执行你设置的自定义操作。

Git 文档 定义了三种可能的服务器钩子:pre-receivepost-receiveupdatepre-receive 在服务器接收到 push 后立即执行,update 类似,但它对每个分支执行一次,post-receivepush 完全完成时执行,这是我们感兴趣的。

在我们的存储库中,如果你输入:

ls

你会看到一些文件和文件夹,包括 hooks 文件夹。所以让我们进入 hooks 文件夹:

cd hooks

现在,通过输入以下命令创建文件 post-receive

cat > post-receive

当你执行此命令时,会有一行空白,表示你输入的所有内容将保存到这个文件中。所以让我们输入:

#!/bin/sh
git --work-tree=/var/www/domain.<WBR>com --git-dir=/var/repo/site.git checkout -f

完成输入后,按下 control-d 保存。为了执行该文件,我们需要使用以下命令设置适当的权限:

chmod +x post-receive

你可以在文档中看到,git-dir 是存储库的路径。使用 work-tree,你可以定义文件实际传输到的不同路径。

post-receive 文件将在每次推送完成时被查看,它表示你的文件需要在 /var/www/domain.com 中。

本地机器

让我们创建我们的本地存储库。你应该根据自己的选择更改路径和名称。如果你在 VPS 上,只需输入:

exit

然后创建你的存储库:

cd /my/workspace
mkdir project && cd project
git init

然后,我们需要配置存储库的远程路径。告诉 Git 添加一个名为 live 的远程:

git remote add live ssh://user@mydomain.com/var/<WBR>repo/site.git

这里应该提供存储库链接,而不是实际的 live 文件夹。

假设我们在这个文件夹中有一些很棒的工作准备好了。我们应该执行添加文件和提交消息的常规步骤:

git add .
git commit -m "My project is ready"

git add 后的点表示你正在将所有文件添加到暂存区。在 git commit 后,我们有 -m,表示我们将输入一条消息。最后,我们将一切都推送到服务器。我们使用了在设置远程时使用的 live 别名。

git push live master

这里我们告诉 Git 推送到 live 远程的 master 分支。要了解更多关于分支以及如何使用它的信息,你可以阅读此教程。

Beta

如果你不想一次部署所有内容怎么办?也许你想先测试一下,并有一个 beta 目录。

其中一种方法是创建另一个存储库。让我们再次登录到我们的 VPS 并创建我们的目录:

cd /var/www/
mkdir beta

创建我们的存储库:

cd /var/repo
mkdir beta.git && cd beta.git
git init --bare

同样,我们应该创建 post-receive 文件,因为我们想在 beta 目录中看到我们的项目:

cd hooks
cat > post-receive

输入文件内容:


```sh
#!/bin/sh
git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f

当你完成输入后,按下‘control-d’保存。为了执行该文件,我们需要使用以下命令设置适当的权限:

chmod +x post-receive

让我们回到本地代码库:

exit
cd /my/workspace/project

现在我们可以设置另一个指向 beta 仓库的远程地址:

git remote add beta ssh://user@mydomain.com/var/<WBR>repo/beta.git

有了这个设置,我们可以进行两步操作。首先推送到 beta 并进行检查,如果一切正常,再推送到 live:

git add .
git commit -m "New version"
git push beta master

然后:

git push live master

从服务器上线

也许你有一个团队在同一个项目上工作,你希望其他人也能决定何时上线。为了实现这一点,我们可以在服务器上将 beta 仓库和 live 仓库进行关联。登录到你的 VPS 并输入以下命令:

cd /var/repo/beta.git
git remote add live ../site.git

现在你可以在服务器上从 beta 推送到 live:

cd /var/repo/beta.git
git push live master

恭喜!你的 VPS 现在已经设置为使用 Git 进行自动部署!


http://www.kler.cn/a/419161.html

相关文章:

  • 【JavaEE】JavaEE、web 开发、框架(Spring) 、Maven
  • 基础Web安全|SQL注入
  • C++中输入 不定长数据的方法
  • 零拷贝相关知识点(一)
  • 电子应用设计方案-31:智能AI音响系统方案设计
  • HTTPS 加密
  • linux cenos redis 单机部署
  • 【Linux】磁盘 | 文件系统 | inode
  • 图解人工智能:从规则到深度学习的全景解析
  • LabVIEW将TXT文本转换为CSV格式(多行多列)
  • digit_eye开发记录(3): C语言读取MNIST数据集
  • EtherCAT转DeviceNe台达MH2与欧姆龙CJ1W-DRM21通讯案例
  • grpc与rpcx的区别
  • Qt 面试题学习13_2024-12-1
  • 第n小的质数
  • 【韩顺平老师Java反射笔记】
  • SpringBoot 助力新冠密接者跟踪:大数据整合与深度挖掘的力量
  • 极致性能:19个Vue 项目的优化手段
  • C++关于二叉树的具体实现
  • (4)CHATGPT-3和GPT-4是生成式AI的一部分吗?
  • 【二分查找】力扣 2529. 正整数和负整数的最大计数
  • HTML CSS JS基础考试题与答案
  • springboot kafka在kafka server AUTH变动后consumer自动销毁
  • linux系统信号简介
  • Scala—列表(可变ListBuffer、不可变List)用法详解
  • FAT文件系统