如何使用带有VPS的Git设置自动部署

来自菜鸟教程
跳转至:导航、​搜索

介绍

Git的介绍及安装方法请参考【X67X】介绍教程【X92X】。

本文将教您在部署应用程序时如何使用 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-receive[ X139X]更新Pre-receive 一旦服务器收到 push, update 就会执行] 是类似的,但它对每个分支执行一次,并且 post-receivepush 完全完成并且它[ X294X]是我们感兴趣的那个。

如果您在我们的存储库中键入:

ls

您将看到一些文件和文件夹,包括 hooks 文件夹。 所以让's去hooks文件夹:

cd hooks

现在,通过键入以下内容创建文件 post-receive

cat > post-receive

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

#!/bin/sh
git --work-tree=/var/www/domain.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/repo/site.git

在这里,我们应该提供存储库链接而不是 live 文件夹。

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

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

请记住,git add 之后的点表示您正在将所有文件添加到阶段。 在 git commit 之后我们有 -m 这意味着我们将输入一条消息。 要完成,我们只需将 推送 一切到服务器。 我们使用设置遥控器时使用的 live 别名。

git push live master
Counting objects: 7, done.Delta compression using up to 4 threads.Compressing objects: 100% (7/7), done.Writing objects: 100% (7/7), 10.56 KiB, done.Total 7 (delta 0), reused 0 (delta 0)To ssh://user@mydomain.com/var/repo/site.git* [new branch]      master -> master

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

贝塔

如果您不想一步部署所有内容怎么办? 也许您想先对其进行测试并拥有一个 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

输入文件内容:

#!/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/repo/beta.git

有了这个,我们可以有一个两步的过程。 首先,我们推送到 beta 版并检查,如果一切正常,我们推送到 live:

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

然后:

git push live master

从服务器上线

也许您有一个团队在同一个项目中工作,并且您希望其他人也可以决定是时候上线了。 为此,我们可以链接服务器上的 beta 和实时存储库。 登录到您的 VPS 并输入:

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

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

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

恭喜! 您的 VPS 现在已设置为使用 Git 自动部署!

提交人:Caio Vaccaro