我有一个 AWS EC2,仅用于保持 Next.js 客户端运行(目前没有后端)。目前,如果我进入终端并输入
npm run develop
,该网站将完美运行。但是,我希望这个进程始终在实例的后台运行。有什么方法可以用 pm2 做到这一点吗?
我已在全球范围内安装了它,但它不会让我运行
pm2 start npm run develop
。顺便说一句,是的,我希望它现在在开发模式下运行。
是的,但请确保该命令存在于 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
添加最佳答案: 你真的应该考虑使用:
pm2 start npm -- start
因为它将运行生产构建,而不是开发(我知道OP用develop提出问题,但考虑到应用程序正在生产中,这是一个重要的功能。
在使用
yarn
和 nextjs
并排序特定端口的情况下:
pm2 start yarn -- start --port 5500
另一种简单快速的方法是
pm2 start "npm run dev" --name AppName
在你的情况下,它会在哪里,
pm2 start "npm run develop" --name AppName
注意 AppName 是调用您的应用程序的名称,以便在 pm2 中轻松识别
我已经添加了使用 pm2 和 nginx 在 ubuntu 平台上部署 nextjs 应用程序的完整工作步骤。
https://anuragdeep.com/deploy-nextjs-strapi-on-ubuntu-with-nginx-and-pm2/