Git 是软件开发领域最流行的版本控制系统。它是开源的,自 2005 年以来一直由 Linus Torvalds,著名的 Linux 的创建者。如今,数量惊人的软件项目(包括商业项目)都使用 Git 进行版本管理。
Git 采用分布式架构,使其成为 DVCS(分布式版本控制系统) 的完美范例。使用 Git,我们可以同时管理本地和远程仓库。在本指南中,我们将演示如何使用 VPS 配置 Git 项目的自动部署.
前提条件
在本指南中,将有一个本地仓库和一个 VPS 上的远程仓库。本地仓库将向远程仓库推送更改。从远程仓库,我们可以将更改推送到 beta 或 live 分支。为此,您需要先满足几个前提条件。
- 一台本地机器和一台远程服务器,均使用 Ubuntu 作为操作系统。本指南展示了 如何配置和设置 Ubuntu 服务器.
- 两台机器均配置了 Git.
为了与 VPS 建立安全连接,我们将使用 SSH。值得庆幸的是,Git 也支持将 SSH 作为连接远程仓库的协议。本指南探讨了 在 Ubuntu 上配置 SSH 以连接到远程服务器.
配置 VPS
在我们的远程服务器上,我们将进行以下配置:
- Live 目录: /var/www/dummy-domain.com
- 服务器仓库: /var/repo/site.git
从本地机器,Git 将把更新推送到 VPS 仓库。在 VPS 仓库中,我们将配置一个脚本,Git 将使用该脚本自动将其推送到 live 目录。也可以为 beta 版本配置仓库。
-
创建仓库
连接到 VPS 并创建仓库位置:
|
1 2 3 |
cd /var sudo mkdir -pv repo && cd repo sudo mkdir -pv site.git && cd site.git |
接下来,初始化 Git 仓库:
|
1 |
sudo git init --bare |
这里,标志 --bare 表示将没有源文件,只有版本控制组件。
-
钩子
接下来,我们将为仓库配置钩子。每个 Git 仓库都包含一个名为 hooks 的文件夹。它包含用作钩子和各种自定义操作模板的示例文件。
根据 Git 的 官方文档,有三种类型的钩子:
- pre-receive: 一旦服务器收到推送请求就会执行。
- post-receive: 在推送请求完成时执行。
- update: 类似于 pre-receive。但是,它在每个分支上执行一次。
在仓库所在位置,运行 ls 命令:
|
1 |
ls -l |
将当前目录更改为 hooks:
|
1 |
cd hooks/ |
现在,创建 post-receive 脚本:
|
1 |
sudo nano post-receive |
在脚本中,输入以下代码。请确保相应地更改目录位置:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/dummy-domain.com --git-dir=/var/repo/site.git checkout -f |
保存文件并关闭编辑器。将该文件设置为可执行文件:
|
1 |
sudo chmod +x post-receive |
现在,每次推送完成时,Git 都会查看 post-receive 脚本并相应地将文件放到位。
配置本地机器
远程机器已准备好接收传入的 Git 项目更新。接下来,我们将配置本地仓库,将 VPS 用作远程 Git 服务器。
让我们创建一个示例 Git 项目目录:
现在,初始化仓库:
|
1 |
sudo git init |
我们必须声明仓库的远程路径。在这里,我们将远程位置称为 live 分支。然后,运行以下命令:
|
1 |
sudo git remote add live ssh://<remote_username>@<remote_ip_address>/var/repo/site.git |
让我们测试一下。我们在项目目录中添加了一个 Shell 脚本:
接下来,将文件添加到项目中并进行提交:
|
1 2 |
sudo git add . sudo git commit -m "random commit" |
在下一个命令中,我们将把项目推送到 生产 服务器:
|
1 |
sudo git push live master |
Git 将使用 SSH 连接到 VPS。如果 SSH 连接配置为使用密码,Git 将要求输入身份验证密码。
Beta 仓库
如果项目不能一步部署到位怎么办?也许它需要在 beta 目录中进行进一步测试。使用目前介绍的方法,我们可以在 VPS 中创建另一个分支,称为 beta 分支。
-
在 VPS 上配置 Beta 分支
首先,我们需要为 VPS 创建目录。连接到 VPS 并在 /var/www:
|
1 2 |
cd /var/www sudo mkdir beta |
现在,我们需要一个 Git 仓库来作为 beta 分支:
|
1 2 |
cd /var/repo sudo mkdir -pv beta.git && cd beta.git |
初始化仓库:
|
1 |
sudo git init --bare |
就像之前一样,实现一个 post-receive 脚本:
|
1 2 |
cd hooks sudo nano post-receive |
之后,输入以下代码:
|
1 2 |
#!/bin/sh git --work-tree=/var/www/beta --git-dir=/var/repo/beta.git checkout -f |
保存文件并关闭编辑器。将 post-receive 标记为可执行文件:
|
1 |
sudo chmod +x post-receive |
-
在本地机器上添加 Beta 仓库
我们现在准备将 beta 仓库添加到我们的本地仓库。在本地项目目录中,运行以下 Git 命令:
|
1 |
sudo git remote add beta ssh://<username>@<remote_ip_address>/var/repo/beta.git |
瞧!本地仓库现在已配置了 beta 远程仓库。尝试推送更改:
|
1 2 3 |
sudo git add . sudo git commit -m "beta version" sudo git push beta master |
-
在 VPS 中从 Beta 转移到 Live
假设所有更改都累积到了 beta 仓库。您如何将更改推送到 live 仓库?这非常简单。在 VPS 上的 beta 仓库中,我们添加本地的 live 仓库。然后,我们只需将 beta 版本推送到 live 仓库。
连接 to VPS,并运行以下命令:
|
1 2 |
cd /var/repo/beta.git sudo git remote add live ../site.git |
然后,您可以将 beta 版本推送到 live:
|
1 |
sudo git push live master |
结语
本指南成功演示了如何配置和使用 VPS 作为 Git 项目的远程仓库。VPS 可以自动部署最新的代码和文件,无需任何复杂的流程。它还可以作为多个开发团队之间协作的中心。
在 Git 的帮助下,您可以建立一个简单的自动部署机制。然而,为了进行妥善的项目管理,建议使用类似 GitLab 的工具。以下指南展示了 在 VPS 上安装和部署 GitLab ,以管理多个项目。您还可以查看 如何在 Ubuntu 20.04 上设置 GitLab 持续集成 (CI) 流水线.
祝您编程愉快!















评论
暂无评论。发表第一条评论吧。