首页 文章

从开发到使用Git进行部署

提问于
浏览
1

我很困惑 . 我已经阅读了许多关于使用git进行“开发和部署”的消息来源并且一无所知 .

我现在有:

  • 带项目的本地(开发)存储库( git init

  • Gitlab / Github服务器,我存储/提交/推送我的项目 .

  • 生产环境 服务器

使用本地存储库和gitlab / github服务器都很清楚 . 我做了更改并推送到服务器 . 接下来,我需要将它部署到服务器,这是“如何正确地做”的问题?

许多消息来源写道,我需要在 生产环境 服务器上安装两个存储库:

  • Bare git --bare init

  • /var/www 文件夹中的非裸存储库

Description

然后我需要将我的 local/development 存储库中的更改推送到 Bare ,然后从 Bare 存储库中拉出 /var/www 中的项目 .

但是,如果我有Github / Gitlab服务器,那么我在这个 Bare 存储库中看不到逻辑,因为我在服务器上有这个代码 . 我是正确的?

我正在使用Laravel进行我的项目,并且在一些提交后需要 composer install . 如果我在 生产环境 服务器上提取此提交,那么它可能会破坏网站并且它会停止一段时间,直到我将完成所有必需的步骤 . 当然所有步骤都可以使用自动脚本完成,但我认为它也会在短时间内破坏网站 .

我想了解将应用程序部署到 生产环境 服务器的正确方案 .

2 回答

  • 2

    我认为最好的方法(这就是我们正在关注的一个大型项目),就是在一个单独的环境中设置一个单独的git项目(让我们说“测试”或“舞台”环境),你将从克隆gitlab上托管的git项目 .

    克隆阶段并执行必要的准备步骤后,您可以将提交的更改提取到gitlab / github服务器 . 这样您就可以在每次拉取请求后在舞台上测试网站 . 如果一切正常并且没有损坏的部件,您可以从 生产环境 环境中提取git内容,这也遵循下面描述的相同逻辑 . 这个想法是舞台环境必须有相同的PHP版本和服务器设置等 .

    当然,您可以使用自动化工具,如VagrantDockerJenkins(仅举几例,但还有更多),通过使用包括项目和实际系统配置在内的实际系统配置创建图像,可以解除由不同系统配置产生的麻烦 . 将项目部署到单独的虚拟机 .

    以下是您可能会遵循的详细过程 .

    enter image description here

  • 1

    Capistrano这样的更广泛的工具可以为你自动化很多东西,但也有一个学习曲线 .

    如果没有更多细节,很难知道最佳解决方案,但是一旦我看到原子提交的策略就是使用符号链接 . 我举个例子

    在服务器上克隆您的存储库两次,并从 /var/www 设置一个符号链接指向其中一个 . 部署时,进入另一个文件夹和 git pull ,运行任何所需的安装命令,然后更新符号链接以指向更新的文件夹 . 我相信这与Capistrano的工作方式类似 .

    只是我的两分钱!

相关问题