PM2部署Nuxt2.0 的问题
来源:10-4 部署发布电影网站并连接线上 MongoDB
慕虎6697118
2019-03-14
老师您好!
我在部署过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!
问题:
- 如何在部署时让PM2判断如果进程已存在的情况下自动构建后重启进程?
- 假设正式项目中需要部署一个测试环境和一个正式环境,那么ecosystem.json应该如何配置呢?
已补充图片
20190318补充
新增问题描述:
在部署测试环境时(假设测试环境为perdeploy分支),部署成功后如何区分测试环境与正式环境呢?有尝试过在测试环境的部署脚本添加参数,但是无效。
请问老师,正确的方式是什么呢?
20190320 更新:
删除apps数组里的name 字段,并在deploy中的测试环境脚本添加 --name 'XX’
实测发现:部署测试环境成功,服务器返回了新增的一个实例,但名称显示为入口文件名称
请问老师,这个地方怎么传值才对呢?
5回答
-
不用试 name 了应该是不支持的。
可以换一种变通的办法,就是创建两份 ecosystem.json,比如
ecosystem-prod.json
ecosystem-test.json
两个配置文件里,分别配置两个不同的应用名字,发布到服务器的不同目录,用这种方式试试呢
012019-05-06 -
Scott
2019-03-23
哦哦我的锅,post-deploy 里面是不能这样传的。
看到文档是没看到这个配置项
https://pm2.io/doc/en/runtime/guide/easy-deploy-with-ssh/
你试试把 name 分别传入到 perdeploy 里面,覆盖下试试
"name": "xxxTest"
012019-03-25 -
Scott
2019-03-20
把 = 拿掉试试,改成 --name xxxTest 和 --name xxxProd
如果还没生效,可以把 apps 里面的 name: 这一行删掉试试,看是不是它的优先级高于命令行里面的 name 优先级
012019-03-20 -
Scott
2019-03-17
pm2 再次启动需要用 restart,感觉你的命令没有跟课程保持一致哈,比如
pm2 startOrRestart ecosystem.yaml --env production
实际上真正起作用的是 startOrRestart 这个指令,如果存在已有的服务,它会尝试把它重启
022019-03-18 -
Scott
2019-03-14
可以把 ecosystem.json 和项目的 package.json 完整贴出来我看下哈
第二个问题只需要配置多个部署任务就好了,不同的任务启动不同的脚本,部署到不同的服务器,或者同一个服务器的不同目录就好了
022019-03-16
相似问题