多台 Web 服务器做了负载均衡,但上线时代码怎么同步比较好?

多台web(phpapi)服务器做了负载均衡,但上线时代码怎么同步比较好呢?
主服务器总归就pull一下代码,但别的服务器怎么同步呢,总不能一个个服务器pull代码吧。

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 2

一般不推荐在服务器上执行 git pull 或者 svn update 这样的命令,原因有两个:

  • 一些文件不会上传到版本库中,例如生效的配置文件,依赖包等,这些文件在使用的时候才配置/安装,如果在服务器上直接拉取代码,就需要再次在服务器上运行类似 composer install/composer optimize 这样的命令,这样对于运维来说压力非常大。
  • 如果因为代码问题或者服务器本身的配置问题,导致服务器被黑客入侵,这样git的密钥会被泄露,你的代码库可能会被污染。当然你可以设置服务器的git账号权限为只读,但是一般这么做的人不会想到再设置个只读。

所以,如果你想偷懒的话,可以这么做:

  1. 搭建一个专门的服务器(server-test),也可以用你们的测试服务器,在上面拉取你的 release 分支,然后执行 composer install 等命令,安装好依赖包;
  2. 在服务器(server-release)上安装 rsync,给 server-test 开放权限;
  3. server-test 上设置定时任务或者手动执行 rsync 命令,将准备好的代码上传到 server-release 上,如果代码量非常大,可以先 zip 一下;
  4. 如果你的服务器是集群,可以设置其中一台机器为 server-release-master ,将 server-test 的代码传到 server-release-master 后,其他机器从 master 再 rsync。

上面就是个简单的持续集成,如果想要更完美的话你可以查一下。

5年前 评论

@BruceP 嗯,查了一些好像大部分都是rsync。

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!