首页 > 解决方案 > 在 Digital Ocean 上使用 pm2 启动多个 Nuxtjs 项目

问题描述

我在一个使用 nginx 代理的 Digital Ocean Droplet 中有几个项目,我想用 pm2 启动所有这些项目,我看到我可以使用包含名称和脚本的 .json 文件来实现这一点,但它似乎没有工作,这就是我所做的:

我的项目目录:

项目1

项目2

pm2-apps.json

pm2-apps.json

{
  "apps": [
    {
      "name": "project1",
      "script": "./project1/package.json"
    },
    {
      "name": "project2",
      "script": "./project2/package.json"
    },
  ]
}

然后我跑

pm2 start pm2-apps.json

我明白了

在此处输入图像描述

但是然后我输入了网址,该项目似乎没有正确安装,如果我pm2 start npm -- start在项目文件夹中分开运行每个项目,它就可以工作。

标签: pm2

解决方案


必须对此进行测试,并发现您可能遇到的几个问题,假设您的 nginx 设置正确。

我不得不将文件更改为以下内容:

{
  "apps": [
    {
      "name": "project1",
      "cwd": "./project1",
      "script": "/usr/bin/npm",
      "args": "run dev"
    },
    {
      "name": "project2",
      "cwd": "./project2",
      "script": "/usr/bin/npm",
      "args": "run dev"
    }
  ]
}

奇怪"script": "npm",的是,我可以从使用中看到的 SIGINT'ing 还不够pm2 monit

然后在每个项目中,我更改了 nuxt 端口:

nuxt.config.js

  ...
  server: {
    port: 3001, // project1
    host: '0.0.0.0', // default: localhost
  },
  ...

  ...
  server: {
    port: 3002, // project2
    host: '0.0.0.0', // default: localhost
  },
  ...

然后清除pm2..pm2 delete all

然后从文件夹中运行:

pm2 start pm2-apps.json

然后两个应用程序都可以毫无问题地启动..

在此处输入图像描述


推荐阅读