PM2 使用指南 - 踩坑记录
最近把本地项目改成用 PM2 跑踩了一点坑记录一下免得下次又忘。基础配置先装 PM2npminstall-gpm2 或pnpminstall-gpm2创建一个ecosystem.config.cjs文件这是 PM2 的配置文件module.exports{apps:[{name:blog,// 应用名称script:npx,// 用什么命令跑args:next start -H 0.0.0.0,// 命令参数cwd:/path/to/project,// 项目路径instances:1,// 实例数量exec_mode:fork,// 运行模式autorestart:true,// 崩溃自动重启watch:false,// 不监听文件变化max_memory_restart:1G,// 内存超限重启env:{NODE_ENV:production,PORT:3000,},},],};实例数量这个坑刚开始配置的时候我把instances设置成了max结果一启动就开了 16 个实例。查了一下才知道max会根据 CPU 核心数自动启动对应数量的实例。我家里主机是 16 核的所以直接开了 16 个。对于小项目来说2-4 个实例就够用了没必要开那么多。直接写数字就行instances:2,// 开 2 个实例重启不生效的问题改完配置文件后我直接用了pm2 restart结果配置根本没生效。查了文档才知道pm2 restart不会重新读取配置文件只是重启现有的进程。正确的做法是pm2 delete blog# 先删除pm2 start ecosystem.config.cjs# 再启动或者用我配置好的命令npmrun pm2:deletenpmrun pm2:startscript 和 args 的选择一开始我用script: npm和args: start结果各种问题。后来改成直接用npx就好多了// 不推荐script:npm,args:start,// 推荐script:npx,args:next start -H 0.0.0.0,用npx直接运行命令更稳定npm 作为中间层有时候会有奇怪的问题。开发环境和生产环境的区别这个坑我解决了好一会。开发环境要用next dev生产环境用next start。开发环境配置{script:npx,args:next dev --turbopack -H 0.0.0.0,exec_mode:fork,// 开发环境不支持 clusterenv:{NODE_ENV:development,},}生产环境配置{script:npx,args:next start -H 0.0.0.0,exec_mode:cluster,// 生产环境可以用 clusterinstances:2,env:{NODE_ENV:production,},}注意开发环境不能用cluster模式只能用fork。监听地址的问题Next.js 默认只监听 localhost外部访问不了。需要加-H 0.0.0.0参数。我试过用环境变量HOSTNAME: 0.0.0.0但在生产模式下不起作用还是得用命令行参数。args:next start -H 0.0.0.0,// 这样才生效Next.js 的 basePath如果 Next.js 配置了basePath访问的时候要加上这个路径。比如// next.config.tsexportdefault{basePath:/blog,}那访问地址就是http://127.0.0.1:3000/blog不是http://127.0.0.1:3000。常用命令集合# 启动pm2 start ecosystem.config.cjs# 停止pm2 stop blog# 重启不重读配置pm2 restart blog# 删除pm2 delete blog# 查看日志pm2 logs blog# 查看状态pm2 list# 查看详情pm2 show blog# 监控面板pm2 monit开机自启# 保存当前进程列表pm2 save# 生成开机启动脚本pm2 startuppackage.json 脚本把常用命令写到 package.json 里方便使用{scripts:{pm2:start:pm2 start ecosystem.config.cjs,pm2:stop:pm2 stop blog,pm2:restart:pm2 restart blog,pm2:delete:pm2 delete blog,pm2:logs:pm2 logs blog,pm2:monit:pm2 monit}}总结复盘instances: max会开很多实例小项目直接写数字改配置后要先delete再startrestart不重读配置用npx比npm稳定开发环境用next dev生产环境用next start开发环境只能用fork模式用-H 0.0.0.0让服务监听所有地址注意 Next.js 的basePath配置差不多就这些点了希望能帮到后面用 PM2 的同学。

相关新闻

YOLO26改进79:全网首发--c3k2模块添加LFE模块:

YOLO26改进79:全网首发--c3k2模块添加LFE模块:

论文介绍 文章地址:地址 改进步骤 步骤1 新建ultralytics\nn\extra_modules\block.py,添加如下代码: ######################################## Efficient Long-Range Attention Network for Image Super-resolution start ########################################cl…

2026/7/6 4:16:57 阅读更多 →
【Spring Boot 实现 PDF 导出】

【Spring Boot 实现 PDF 导出】

Spring Boot 实现 PDF 导出 在Spring Boot应用程序中实现PDF导出功能,可以选择多种库和技术栈。每种方法都有其优缺点,适用于不同的场景。以下是四种常见的方式:iText、Apache PDFBox、JasperReports 和 Thymeleaf Flying Saucer。我将详细…

2026/7/6 4:18:14 阅读更多 →
SCI一区预定!独家原创!26年最新算法CCO优化JMD轻松实现信号分解!附Matlab代码

SCI一区预定!独家原创!26年最新算法CCO优化JMD轻松实现信号分解!附Matlab代码

目录 数据输入方法 模型流程 创新点 1.使用JMD的创新点在于 2.使用中心碰撞优化算法CCO创新点在于 结果展示 完整代码 今天给大家带来一期利用26年最新中心碰撞优化算法CCO优化最新且小众的信号分解方法JMD的代码,JMD这个算法也是2025年刚提出来的一个新算法…

2026/7/5 6:44:34 阅读更多 →

最新新闻

LSTM 多步预测实战:从单步滚动到 Seq2Seq 的 2 种方案详解

LSTM 多步预测实战:从单步滚动到 Seq2Seq 的 2 种方案详解

LSTM多步预测实战:从递归滚动到Seq2Seq的深度对比与优化1. 多步预测的核心挑战与解决方案全景当我们面对"用前30天数据预测后10天"这类多步预测任务时,传统单步预测方法会遇到三个本质性挑战:误差累积问题:递归预测中每…

2026/7/6 4:18:18 阅读更多 →
太原考公考编线下班口碑红黑榜:2026学员真实评价背后的选班避坑指南

太原考公考编线下班口碑红黑榜:2026学员真实评价背后的选班避坑指南

一边是动辄数万元的协议班,一边是朋友圈里满天飞的“上岸喜报”,在太原,选一家靠谱的考公考编线下班,正在变成一场信息战。我们花了三周时间,深度整理了太原及周边学员在社交平台、备考群、公开评价里的真实反馈&#…

2026/7/6 4:18:18 阅读更多 →
HTTP协议及其POST与GET操作差异  C#中如何使用POST、GET等

HTTP协议及其POST与GET操作差异 C#中如何使用POST、GET等

HTTP协议我想任何IT人士都耳熟能详了,大家都能说出个所以然来。但是如果我问你HTTP协议的请求方法有哪些?POST与GET的差异?GET或POST传送数据量的大小有限制吗?HTTP响应的状态有哪些?以及在C#中你如何使用?…

2026/7/6 4:16:17 阅读更多 →
【git教程】科研技能必备——git的使用

【git教程】科研技能必备——git的使用

【git教程】科研技能必备——git的使用 git的知识其实常用的就那几个,由于网上的教程有很多,笔者感觉能给各位读者做的也只有帮忙筛选了。 注:其实这些git的命令行操作在目前主流的IDE(如VScode,cursor)上已经集成好了…

2026/7/6 4:14:17 阅读更多 →
个人数据主权革命:WeChatMsg如何重新定义数字记忆资产管理

个人数据主权革命:WeChatMsg如何重新定义数字记忆资产管理

个人数据主权革命:WeChatMsg如何重新定义数字记忆资产管理 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/W…

2026/7/6 4:14:17 阅读更多 →
web应用技术作业10

web应用技术作业10

完成自己项目的分页显示、条件查询、添加、删除、修改等功能分页显示:条件查询:添加:删除:修改:

2026/7/6 4:12:16 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/5 0:03:34 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/5 0:03:34 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/5 0:07:38 阅读更多 →

月新闻