我可以使用 pm2 来保持 Next.js 应用程序运行吗

问题描述 投票:0回答:6

我有一个 AWS EC2,仅用于保持 Next.js 客户端运行(目前没有后端)。目前,如果我进入终端并输入

npm run develop
,该网站将完美运行。但是,我希望这个进程始终在实例的后台运行。有什么方法可以用 pm2 做到这一点吗?

我已在全球范围内安装了它,但它不会让我运行

pm2 start npm run develop
。顺便说一句,是的,我希望它现在在开发模式下运行。

npm amazon-ec2 next.js pm2
6个回答
42
投票

是的,但请确保该命令存在于 package.json 中

  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start",
    "lint": "next lint"
  }

所以在这种情况下,

pm2
命令将是

pm2 start npm --  dev
#in your case
pm2 start npm --  develop

或者有一个@brc提到的好听的名字

pm2 start npm --name "next-js" -- dev

在 EC2 上运行时,保存启动进程也是一个好习惯

PM2 可以生成启动脚本并配置它们,以便在预期或意外的机器重新启动时保持进程列表完整。

https://pm2.keymetrics.io/docs/usage/startup/

pm2 startup
pm2 save


8
投票

添加最佳答案: 你真的应该考虑使用:

pm2 start npm --  start

因为它将运行生产构建,而不是开发(我知道OP用develop提出问题,但考虑到应用程序正在生产中,这是一个重要的功能。


2
投票

在使用

yarn
nextjs
并排序特定端口的情况下:

pm2 start yarn -- start --port 5500

1
投票

是的,你可以

 pm2 start npm --name name_of_the_app -- start --port your_port

例如

pm2 start npm --name abhimanyu -- start --port 3000

这里我的应用程序名称是(abhimanyu),它在端口 3000 上运行

注意:如果您不提供端口号,那么它将使用您项目中指定的默认端口

要获取在 pm2 中运行的项目列表,请输入

pm2 list


0
投票

另一种简单快速的方法是

pm2 start "npm run dev" --name AppName

在你的情况下,它会在哪里,

pm2 start "npm run develop" --name AppName

注意 AppName 是调用您的应用程序的名称,以便在 pm2 中轻松识别


-1
投票

我已经添加了使用 pm2 和 nginx 在 ubuntu 平台上部署 nextjs 应用程序的完整工作步骤。

https://anuragdeep.com/deploy-nextjs-strapi-on-ubuntu-with-nginx-and-pm2/

© www.soinside.com 2019 - 2024. All rights reserved.