如何在 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-receive
、post-receive
和 update
。pre-receive
在服务器接收到 push
后立即执行,update
类似,但它对每个分支执行一次,post-receive
在 push
完全完成时执行,这是我们感兴趣的。
在我们的存储库中,如果你输入:
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 进行自动部署!