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

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

我对 有点陌生版本控制 部署环境我对这件事的了解已经停止:如果开发人员不能在同一台本地机器上工作并且被迫总是在 上工作,那么部署环境如何工作?远程服务器 ?

应该怎么做流量的部署环境是根据最佳实践设置的?

对于这个例子,我考虑了三个部署环境:发展 , 分期 生产 ;和三个存储环境:本地 , 存储库 服务器和最终 服务器 .

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

deployment version control flow chart

附注。我认为服务器上的暂存测试可能会通过登录或 ip 检查来限制访问,以防万一。

最佳答案

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

  • 使用分布式版本控制系统(如 git/github):
  • 创建一个私有(private)/公共(public)存储库来处理您的项目
  • 本地发展:
  • 开发者会从你的 repo 中克隆项目并贡献给它,建议每个人都在一个分支上工作,并为每个新功能创建一个新分支
  • 在您的团队中,有一个负责将准备好的分支与 master 合并。分公司
  • 我强烈建议在开发过程中使用虚拟机:
  • 将开发环境与主机隔离并处理依赖项
  • 拥有与远程生产服务器相同的虚拟机
  • 易于重置、移除、复制
  • ...
  • 我建议使用 VirtualBox用于 VM 提供商和 Vagrant用于配置
  • 我建议你的项目文件夹是 shared folder在您的主机和您的 VM 之间,因此,您将使用您喜欢的编辑器在您的主机操作系统上编写您的源代码,同时这些代码存在并在您的 VM 中运行,是不是非常棒?!
  • 如果您正在使用 python我还强烈建议使用虚拟环境(如 virtualenvanaconda )来隔离和管理内部依赖项
  • 然后每个开发人员在编写一些源代码后,他可以提交并将他的更改推送到存储库
  • 我建议使用项目自动化设置工具,如( fabric/fabtools for python):
  • 制作一个脚本或一些东西,一键或一些命令,复制所有环境和所有依赖项以及项目启动和运行所需的一切,所以所有开发人员后端、前端、设计师......无论他们的知识还是他们的主机类型可以让项目运行非常简单。我还建议对远程服务器做同样的事情,无论是手动还是使用(fabric/fabtools)之类的工具
    该脚本将主要安装操作系统依赖项,然后是项目依赖项,然后从您的版本控制中克隆项目存储库,为此,您需要授予远程服务器(测试、登台和生产)访问存储库的权限:添加 ssh public每个服务器的 key 到版本控制系统中的 key (或 use agent forwarding with fabric)
  • 远程服务器:
  • 您至少需要一个生产服务器,使最终用户可以访问您的项目
  • 建议你也有一个测试和登台服务器(我想你知道每一个的目的)
  • 部署流程:Local-Repo-Remote 服务器,它是如何工作的?:
  • 授予远程服务器(测试、暂存和生产)访问存储库的权限:将每个服务器的 ssh 公钥添加到版本控制系统中的 key (或用户代理转发 fabric)
  • 开发人员在他的机器上编写代码
  • 最终为他的代码编写测试并在本地(和测试服务器上)运行它们
  • 开发人员提交并将他的代码推送到他正在使用的分支到远程存储库
  • 部署:

    5.1 如果您想将功能分支部署到测试或暂存:
  • ssh访问服务器然后cd到项目文件夹(手动或通过自动化脚本从 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这样的工具。自动执行部署任务。
    瞧!部署完成!

  • 这是一个稍微简化的方法,还有很多其他推荐的和最佳实践的工具和任务。

    关于web - 远程服务器上的部署如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43278477/

    相关文章:

    javascript - 用于测试函数调用失败的 Jasmine 测试

    node.js - 多个 package.json Elastic Beanstalk 部署

    javascript - Heroku App 崩溃状态 503。可能会发生哪些问题?

    java - 搜索 Nexus 永远不会显示最新的 Artifact 版本

    version-control - 如何撤消 hg init?

    xml - 配置 Perl 脚本为超大网站自动生成 XML 站点地图

    c++ - 检查访问了哪个网站

    Angular 2 英雄之旅 : Filter heroes by name

    java - 在Linux系统上部署Java项目

    java - 在 Android 中维护专业版和免费版