当前位置: 首页 > news >正文

如何用PM2托管静态文件

PM2 主要用于管理 Node.js 应用程序进程。但如果你确实想通过 PM2 来管理一个静态文件服务器进程, 可以使用 serve 模块 + ecosystem.config.js 配置文件来实现。

1. 安装 serve

首先确保你全局或本地安装了 serve

npm install -g serve

2. ecosystem.config.js 文件

module.exports = {apps: [{name: 'myweb',           // 应用名称script: 'serve',                  // 启动命令args: '-s -p 3000 ./dist',        // 参数:-s 启用单页应用模式,-p 端口,./dist 是静态文件目录instances: 1,                     // 单实例(静态服务通常不需要多实例)autorestart: true,                // 文件变化时自动重启(配合 watch 使用)watch: false,                     // 可设为 true 或指定目录,开发时有用max_memory_restart: '1G',         // 内存超过 1G 时重启env: {NODE_ENV: 'development',PORT: 3000},env_production: {NODE_ENV: 'production',PORT: 8080},log_date_format: 'YYYY-MM-DD HH:mm:ss',error_file: './logs/pm2-err.log',out_file: './logs/pm2-out.log',merge_logs: true,time: true}],// 部署配置(可选)deploy: {production: {user: 'your-username',host: 'your-server.com',ref: 'origin/main',repo: 'git@github.com:username/repo.git',path: '/var/www/my-static-site','post-deploy': 'npm install && npm run build && pm2 reload ecosystem.config.js --env production'}}
};

3. 使用方法

把dist目录作为静态网站所在目录
把dist目录和ecosystem.config.js放在一起, 执行pm2 start即可

pm2 start# 保存当前进程列表
pm2 save# 重启
pm2 reload myweb# 查看日志
pm2 logs mywb

4. 注意事项

  • 重启服务器后托管在pm2上的进程消失的情况: 按下面顺序执行就可以解决
pm2 unstartup
pm2 startup  
pm2 list
pm2 save
  • ./dist:请替换为你的实际静态文件输出目录,如 publicbuild 等。
  • -s 参数:启用 SPA(单页应用)模式,所有 404 请求会返回 index.html,适合 React、Vue 等前端框架。
  • 日志目录 ./logs 需要提前创建,否则 PM2 可能报错。
  • 若使用 npm run serve 脚本,可将 script 改为 npmargs 改为 run serve

替代方案建议

对于纯静态网站,推荐使用:

  • Nginx:高性能、稳定,适合生产环境。
  • Vercel / Netlify:专为静态站点设计的部署平台。
  • Caddy / Serve 直接运行,无需 PM2。

但如果你的部署流程已基于 PM2,上述配置是可行的方案。


文章转载自:

http://Qnj1atW4.qLrwf.cn
http://uZIGLFDX.qLrwf.cn
http://Qc2bjdqR.qLrwf.cn
http://KKdTpMIQ.qLrwf.cn
http://3MWXaJsL.qLrwf.cn
http://KVtXBinp.qLrwf.cn
http://yOz8ZcbV.qLrwf.cn
http://zaCJQBlh.qLrwf.cn
http://6qtPM2C3.qLrwf.cn
http://VX1EbbM6.qLrwf.cn
http://cpHKga4a.qLrwf.cn
http://YdO1mfW5.qLrwf.cn
http://w6G8xnzQ.qLrwf.cn
http://tfevGemP.qLrwf.cn
http://ULvUx45R.qLrwf.cn
http://n4yajsJe.qLrwf.cn
http://wrjLi9Kk.qLrwf.cn
http://OjNIVs8n.qLrwf.cn
http://xXEA646M.qLrwf.cn
http://rrY5GxYV.qLrwf.cn
http://bJW6HDw9.qLrwf.cn
http://9oAlzWB4.qLrwf.cn
http://kWigHBXO.qLrwf.cn
http://5q8jX8i7.qLrwf.cn
http://rmjfk3IZ.qLrwf.cn
http://xMVHHpZB.qLrwf.cn
http://SVcf6Ck2.qLrwf.cn
http://WR2LAVoa.qLrwf.cn
http://1rlswmKv.qLrwf.cn
http://OogS9Y57.qLrwf.cn
http://www.dtcms.com/a/387581.html

相关文章:

  • Java程序设计:基本数据类型
  • 在k8s环境下部署kanboard项目管理平台
  • 为什么 MySQL utf8 存不下 Emoji?utf8mb4 实战演示
  • 2025 年 PHP 常见面试题整理以及对应答案和代码示例
  • (二十五)、在 k8s 中部署证书,为网站增加https安全认证
  • 风机巡检目前有什么新技术?
  • 震坤行工业超市开放平台接口实战:工业品精准检索与详情解析全方案
  • 河南萌新联赛2025第(八)场:南阳理工学院
  • docker回收和mysql备份导入导致数据丢失恢复---惜分飞
  • 「Memene 摸鱼日报 2025.9.17」上海张江人工智能创新小镇正式启动,华为 DCP 技术获网络顶会奖项
  • 【数据结构】顺序表,ArrayList
  • 第十二章 Arm C1-Premium GIC CPU接口详解
  • 【数据结构---并查集】(并查集的原理,实现与应用)
  • 【数据结构-KMP算法(学习篇)】
  • Start application catch exception
  • 机器视觉在半导体封装检测中的应用
  • 雅菲奥朗SRE知识墙分享(九):『变更管理的定义与实践』
  • 51c视觉~3D~合集6
  • webRTC 的协议族
  • 线激光相机 眼在手上六轴机器人手眼标定 备忘记录
  • QML学习笔记(一)基本了解和工程配置
  • 大数据毕业设计选题推荐-基于大数据的牛油果数据可视化分析系统-Hadoop-Spark-数据可视化-BigData
  • Hadoop单机模式下运行grep实例,output文件目录不存在
  • 【docker】清理中断构建后产生的镜像和缓存
  • Vue2项目集成打包分析工具webpack-bundle-analyzer
  • 【阶梯波发生器如何控制电压和周期】2022-12-9
  • Java 设计模式之桥接模式(Bridge Pattern)
  • Android 端启动 HTTP 服务:从基础实现到实战应用
  • 《2D横版平台跳跃游戏中角色二段跳失效与碰撞体穿透的耦合性Bug解析》
  • 基于本机知识库 + 豆包(火山引擎)+ MCP的落地方案