请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

PM2部署Nuxt2.0 的问题

老师您好!
我在部署过Nuxt2.0过程中遇到了以下问题:
1. 部署脚本中的post-deploy的值为:yarn && yarn run start 时,首次部署正常,修改代码再次执行 pm2 deploy ecosystem.json production 时,显示 post-deploy hook failed .
2. 部署脚本中的post-deploy的值为:yarn && pm2 startOrRestart ecosystem.json --env production 时,首次部署正常,修改代码再次部署时 pm2 logs 报错: ERROR Server resources are not available!

问题:

  1. 如何在部署时让PM2判断如果进程已存在的情况下自动构建后重启进程?
  2. 假设正式项目中需要部署一个测试环境和一个正式环境,那么ecosystem.json应该如何配置呢?

图片描述

图片描述

已补充图片

20190318补充
图片描述

图片描述

新增问题描述:
在部署测试环境时(假设测试环境为perdeploy分支),部署成功后如何区分测试环境与正式环境呢?有尝试过在测试环境的部署脚本添加参数,但是无效。
请问老师,正确的方式是什么呢?

20190320 更新:
删除apps数组里的name 字段,并在deploy中的测试环境脚本添加 --name 'XX’
实测发现:部署测试环境成功,服务器返回了新增的一个实例,但名称显示为入口文件名称
请问老师,这个地方怎么传值才对呢?
图片描述

正在回答

5回答

不用试 name 了应该是不支持的。


可以换一种变通的办法,就是创建两份 ecosystem.json,比如


ecosystem-prod.json

ecosystem-test.json


两个配置文件里,分别配置两个不同的应用名字,发布到服务器的不同目录,用这种方式试试呢

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎6697118 #1
    谢谢老师!最终是用这种方式解决的。
    回复 有任何疑惑可以回复我~ 2019-05-06 13:46:51
Scott 2019-03-23 08:59:13

哦哦我的锅,post-deploy 里面是不能这样传的。

看到文档是没看到这个配置项

https://pm2.io/doc/en/runtime/guide/easy-deploy-with-ssh/


你试试把 name 分别传入到 perdeploy 里面,覆盖下试试


"name": "xxxTest"

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎6697118 #1
    老师您好,还是不太明白您说的意思,在哪里将 name 字段传入呢?
    回复 有任何疑惑可以回复我~ 2019-03-25 17:27:40
Scott 2019-03-20 07:29:55

把 = 拿掉试试,改成 --name xxxTest 和 --name xxxProd


如果还没生效,可以把 apps 里面的 name: 这一行删掉试试,看是不是它的优先级高于命令行里面的 name 优先级

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎6697118 #1
    老师好,注释apps 里面的name 后部署可新增实例,但名称好像没有起作用,只是显示了入口文件的名称,这个地方该如何传值才对呢?
    回复 有任何疑惑可以回复我~ 2019-03-20 11:30:25
Scott 2019-03-17 16:42:38

pm2 再次启动需要用 restart,感觉你的命令没有跟课程保持一致哈,比如


pm2 startOrRestart ecosystem.yaml --env production


实际上真正起作用的是 startOrRestart 这个指令,如果存在已有的服务,它会尝试把它重启

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎6697118 #1
    谢谢老师,按照您的指导,第一个问题已经解决了。我在尝试解决第二个问题的时候发现部署测试环境时,PM2 list 里面的APP Name ,只能显示部署脚本里面的名称,导致我无法区分测试环境与正式环境,请问如何区分呢?(有尝试在命令后加参数,但是并没有效果,稍后补图)
    回复 有任何疑惑可以回复我~ 2019-03-18 16:34:44
  • 提问者 慕虎6697118 #2
    已补图,麻烦老师有空看一下,谢谢~!
    回复 有任何疑惑可以回复我~ 2019-03-18 16:38:24
Scott 2019-03-14 22:25:57

可以把 ecosystem.json 和项目的 package.json 完整贴出来我看下哈

第二个问题只需要配置多个部署任务就好了,不同的任务启动不同的脚本,部署到不同的服务器,或者同一个服务器的不同目录就好了

0 回复 有任何疑惑可以回复我~
  • 提问者 慕虎6697118 #1
    已补图,麻烦老师看一下,谢谢!
    回复 有任何疑惑可以回复我~ 2019-03-14 22:34:09
  • 提问者 慕虎6697118 #2
    老师,请问部署多个任务时,是在deploy里面多加一个字段,写出类似production 一样对应的字段就可以么?
    回复 有任何疑惑可以回复我~ 2019-03-16 16:04:34
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信