远程服务器上的部署如何工作?

时间:2017-04-07 12:43:02

标签: web deployment version-control webserver web-development-server

我是版本控制部署环境的新手,我对此事的了解已经停止:如何部署如果开发人员无法在同一台本地计算机上工作并且被迫始终在远程服务器上工作,那么环境是否有效?

如何根据最佳做法设置部署环境的流程

对于此示例,我考虑了三种部署环境:开发暂存生产;和三个存储环境:本地存储库服务器和最终服务器

这是我提出的流程图,但我不知道它是否正确或如何正确实施它:

deployment version control flow chart

PS。我以为服务器上的暂存测试可以通过登录或ip检查限制访问,以防你想知道。

1 个答案:

答案 0 :(得分:4)

我可以给你(根据我的经验)一个良好而直接的做法,这不是唯一的方法,因为没有关于如何处理所有项目的独特标准:

  • 使用分布式版本控制系统(如git / github):

    • 创建一个私有/公共存储库来处理您的项目
  • 当地发展:

    • 开发人员将从您的仓库中对项目进行处理并为其做出贡献,建议每个人在分支上工作,并为每个新功能创建一个新分支
    • 在您的团队中,有人负责合并准备好master分支的分支
    • 我强烈建议在开发过程中使用虚拟机:
      • 将dev环境与主机隔离并处理依赖关系
      • 使虚拟机与远程生产服务器相同
      • 轻松重置,删除,复制
      • ...
      • 我建议将VirtualBox用于VM提供程序,将Vagrant用于配置
      • 我建议您的项目文件夹在主机和VM之间是shared folder,因此,您将使用您喜欢的编辑器在主机操作系统上编写源代码,同时此代码存在并在你的虚拟机内运行,是不是真的太棒了!!
    • 如果您正在使用python我还强烈建议您使用虚拟环境(如virtualenvanaconda)来隔离和管理内部依赖关系
    • 然后每个开发人员在编写一些源代码后,都可以提交并将其更改推送到存储库
    • 我建议使用项目自动化设置工具,例如(fabric / fabtools用于python):
      • 通过一次单击或某些命令制作脚本或其他内容,重现所有环境和所有依赖项以及项目启动和运行所需的所有内容,以便所有开发人员后端,前端,设计师......无论他们是谁知识和他们的主机类型只能使项目运行。我还建议对远程服务器做同样的事情,无论是手动还是使用像(fabric / fabtools)这样的工具 secript将主要安装os依赖项,然后项目依赖项,然后从Virsion Control克隆项目repo,为此,你需要给远程服务器(测试,登台和生产)访问存储库:添加ssh公钥每个服务器与版本控制系统中的密钥(或use agent forwarding with fabric
  • 远程服务器:

    • 至少需要一个生产服务器,使最终用户可以访问您的项目
    • 建议你也有一个测试和登台服务器(我想你知道每个服务器的用途)
  • 部署流程:Local-Repo-Remote服务器,它是如何工作的?:

    1. 授予远程服务器(测试,登台和生产)访问存储库的权限:将每个服务器的ssh公钥添加到版本控制系统中的密钥(或使用fabric转发的用户代理)
    2. 开发人员在他的机器上编写代码
    3. 最终为他的代码编写测试并在本地(以及在测试服务器上)运行它们
    4. devloper将他的代码提交并推送到他正在使用的分支到远程存储库
    5. 部署:

      5.1如果要将功能部分部署到测试或暂存:

      • ssh访问服务器,然后cd访问项目文件夹(手动或通过autamtion脚本从repo克隆)
      • git checkout <the branch used>
      • git pull origin <the branch used>

      5.2如果要部署到生产部门:

      • 制作pull request并在拉取请求得到经理验证并与master分支合并
      • 之后
      • ssh访问服务器,然后cd访问项目文件夹(手动或通过自动化脚本从repo克隆)
      • git checkout master#不需要因为它应该永远在主人身上
      • git pull origin master
        • 我建议编写一个类似于fabric / fabtools的脚本,或者使用像Jenkins这样的工具来自动执行部署任务。 沃利亚!部署完成!

这是一种简化的方法,还有一堆其他推荐的和最好的prectice工具和任务。