目 录CONTENT

文章目录

Strapi生产环境部署与PM2守护完整教程

星野集
2026-05-14 / 0 评论 / 0 点赞 / 3 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
眼看十遍,不如手敲一遍!‌ ‌打开控制台‌ ‌Windows/Linux‌:按 F12 或 Ctrl+Shift+I ‌......Mac‌:按 Option+Command+I 也可右键网页 → 选择「检查」→ 切换到「Console」标签 ‌ ......动手实践‌ ▶ 在闪烁的光标处直接输入教程代码 ▶ 按 Enter 执行代码,立即看到结果 ▶ 用 ↑↓ 方向键快速调出历史命令 ......当需要编写多行代码时: 正常输入第一行代码 按住 Ctrl 键(Mac用户按 Command) 再按 Enter 换行而不执行 代码输入完成后,单独按 Enter 执行全部 ‌.......小技巧‌ 输入 clear() 可清空控制台 错误提示是好朋友!红色报错能帮你快速定位问题 💡 记住:每个程序员都从这里开始你的第一行代码吧! ⚠️ 注意:部分旧版浏览器可能不支持此功能,建议使用Chrome/Edge/Firefox最新版

Strapi 生产环境部署与 PM2 守护完整指南

上篇文章《在宝塔面板中创建独立用户部署和运行Strapi完整教程》 中,我们介绍了 Strapi 生产环境部署的基本步骤,包括安装依赖、配置环境变量、创建数据库、迁移数据库、启动 Strapi 等。 本教程旨在以非 Root 用户(普通用户)身份运行 Strapi,以确保服务器的安全性,并使用 PM2 进行进程守护和开机自启。

前置准备与环境检查

假设你的服务器已经安装了 Node.js 和 PM2。

  • 目标用户strapi_user (请根据实际情况替换)
  • 项目路径/www/wwwroot/strapi/my-strapi-app (请根据实际情况替换)
  1. 切换到 Root 用户进行基础设置:

    su -
    
  2. 修正目录权限: 确保项目目录的所有权归属于 strapi_user 用户,否则普通用户无法写入日志或读取文件。

    chown -R strapi_user:strapi_user /www/wwwroot/strapi/my-strapi-app
    

️ 第一步:配置 PM2 生态文件

这是最关键的一步。为了避免权限报错(To use --uid and --gid please run pm2 as root),我们需要修改配置文件,明确告诉 PM2 以非特权模式运行。

  1. 切换到普通用户并进入项目目录:

    su - strapi_user
    cd /www/wwwroot/strapi/my-strapi-app
    
  2. 创建或编辑 ecosystem.config.js

    vim ecosystem.config.js
    
  3. 填入以下标准配置(已针对你的环境优化):

    module.exports = {
      apps: [
        {
          name: 'strapi-app',
          // 注意:在较新版本的 PM2 中,建议将命令拆分
          script: 'npm',
          args: 'run start', 
          
          // 【核心修复】
          // 1. 使用 namespace 替代 user 字段,避免触发 UID 切换检查
          namespace: 'strapi_user',
          // 2. 显式关闭特权模式,允许普通用户运行
          privileged: false,
          
          cwd: '/www/wwwroot/strapi/my-strapi-app', // 项目绝对路径
          
          env: {
            NODE_ENV: 'production',
            PORT: 1337, // 确保端口大于 1024,普通用户可监听
          },
          
          // 生产环境建议配置
          instances: 1,             // Strapi 通常单实例即可
          autorestart: true,        // 崩溃自动重启
          max_memory_restart: '500M', // 内存超过 500M 自动重启(防止内存泄漏)
          log_date_format: 'YYYY-MM-DD HH:mm:ss', // 日志带时间戳
        },
      ],
    };
    
  4. 启动服务

    pm2 start ecosystem.config.js
    

    此时你应该能看到应用状态为 online,且没有权限报错。


第二步:配置开机自启

为了让服务器重启后 Strapi 能自动运行,需要利用 Systemd 生成服务脚本。这一步必须分两步走:先保存,再生成

  1. 保存当前进程列表(在 strapi_user 用户下执行):

    pm2 save
    

    这会将进程信息保存到 /home/strapi_user/.pm2/dump.pm2

  2. 生成启动脚本(切回 root 用户执行):

    先退出普通用户:

    exit
    

    然后执行生成命令(注意替换用户名和家目录):

    # 语法:pm2 startup systemd -u <目标用户> --hp <目标用户家目录>
    pm2 startup systemd -u strapi_user --hp /home/strapi_user
    
  3. 执行返回的命令(至关重要!): 终端会输出一行以 sudo env PATH=... 开头的命令。请务必复制并执行它,否则开机自启不会生效。


️ 常用维护命令速查

为了方便你日后的管理,这里列出常用的 PM2 命令(请在 strapi_user 用户下执行):

功能 命令 说明
查看状态 pm2 list 查看所有运行的应用及其状态
查看日志 pm2 logs 实时查看应用日志(排错必用)
重启应用 pm2 restart strapi-app 重启指定应用,服务不中断
停止应用 pm2 stop strapi-app 停止指定应用
删除应用 pm2 delete strapi-app 从 PM2 列表中移除应用
监控面板 pm2 monit 查看 CPU、内存等实时监控数据
更新配置 pm2 reload ecosystem.config.js 修改配置文件后重载应用

验证清单

完成上述所有步骤后,你可以通过以下方式确认部署成功:

  1. 检查进程:输入 pm2 list,确认 strapi-app 状态为 online
  2. 检查服务:在 root 下输入 systemctl status pm2-strapi_user.service,确认状态为 active (running)
  3. 访问测试:在浏览器访问 http://你的服务器IP:1337/admin,看能否打开 Strapi 后台。

0
  1. 微信打赏

    qrcode weixin
    1. 微信打赏

      qrcode weixin

评论区