V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeungJZ
V2EX  ›  程序员

三个项目,三个服务器,该如何部署?

  •  
  •   LeungJZ ·
    JZLeung · 2018-05-28 16:04:04 +08:00 · 1331 次点击
    这是一个创建于 2167 天前的主题,其中的信息可能已经有所发展或是发生改变。

    没有运维。

    前提

    其实都隶属于同一个项目:

    • 微信端
    • PC 总后台,项目设置等(管理员)
    • PC 数据后台,项目中的数据、统计等(所有人)。

    有三台服务器:

    • 测试服务器
    • 演示服务器
    • 正式服务器

    每台服务器对应不同的域名,所以项目中请求的 URL 也会作出相应的更改。

    项目架构:vue + webpack

    目前解决办法

    每个项目下都有三个文件:

    • deploy.sh 打包发布至正式服务器。
    • show.sh 打包发布至演示服务器。
    • build.sh 打包发布至测试服务器。

    config/prod.env.js 中,通过 process.env.NODE_ENV 来判断当前的环境来选择 API 接口地址:

    const AUTH_API = 
      process.env.NODE_ENV === 'production:test' ? '"http://xxxtest.example.com/"' 
      : process.env.NODE_ENV === 'production:show' ? '"http://xxxshow.example.com/"' 
      : '"http://xxx.example.com/"'
    

    每次部署都要跑一遍 3 个脚本,然后通过 scp 传到对应服务器的对应文件夹。但是 3 个项目都得跑一遍。

    想法

    使用 jenkins 进行部署,但是用了发现好像只是将执行脚本的环境将本地搬到了线上罢了。

    而且,这样的话,还需要将 jenkins 所在的 docker 的 sshkey 添加到各个服务器上,才能成功 scp。

    不知道还有没有其他好的办法。

    并且,对于 chalk 的输出貌似不能正常显示。

    说明

    暂时不需要测试。

    4 条回复    2018-06-03 11:10:43 +08:00
    LeungJZ
        1
    LeungJZ  
    OP
       2018-05-28 22:12:21 +08:00
    大佬们都去哪里了?
    cleveryun
        2
    cleveryun  
       2018-06-03 09:01:52 +08:00 via iPhone
    为啥不直接在代码里通过域名来判断在封装请求的方法里动态改接口域名部分呢?这样就只用编译一次了,发布要发三次这个肯定的。
    这样就可以编译一次,然后并联往三台服务器 scp 发文件了,时间上比串联的编译三次发三次快多了。
    有个 npm-run-all 的包处理串并联任务比较方便。
    串并联可能用词不对,反正知道啥意思就行
    cleveryun
        3
    cleveryun  
       2018-06-03 09:04:24 +08:00 via iPhone
    我是服务端 node 程序里判断环境才像你说的那样弄的,不同环境分别编译一次
    LeungJZ
        4
    LeungJZ  
    OP
       2018-06-03 11:10:43 +08:00
    @cleveryun
    因为不仅仅只有一个 API 域名啊,大概有,3 个左右,而且都是写在 process.env 里头,那么,一改全部都得改了。(虽然已经拷贝一份在 window 下)

    也谢谢你的建议,可以尝试一下。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2201 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:03 · PVG 10:03 · LAX 19:03 · JFK 22:03
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.