如何使用带有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-receive、post-receive 和 [ X139X]更新。 Pre-receive 一旦服务器收到 push, update 就会执行] 是类似的,但它对每个分支执行一次,并且 post-receive 在 push 完全完成并且它[ 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 自动部署!