Skip to content

Latest commit

 

History

History
221 lines (173 loc) · 3.33 KB

PM2_GUIDE.md

File metadata and controls

221 lines (173 loc) · 3.33 KB

PM2 部署指南

本指南說明如何使用 PM2 進程管理器部署圖片元數據工具。

前置要求

  • Node.js 18.x 或更高版本
  • 全局安裝 PM2 (npm install -g pm2)
  • Git
  • OpenAI API 密鑰

安裝步驟

  1. 克隆倉庫:
git clone [repository-url]
cd image-metadata-tool
  1. 安裝依賴:
npm install
  1. 創建環境文件: 在根目錄創建 .env.production 文件:
NEXT_PUBLIC_OPENAI_API_KEY=你的api密鑰
UPLOAD_DIR=./public/uploads
PROCESSED_DIR=./public/processed
NODE_ENV=production
  1. 構建應用:
npm run build

PM2 配置

項目包含一個 ecosystem.config.js 文件,配置如下:

module.exports = {
  apps: [
    {
      name: 'image-metadata-tool',
      script: 'npm',
      args: 'start',
      env: {
        NODE_ENV: 'production',
        PORT: 8080
      },
      watch: false,
      instances: 1,
      exec_mode: 'fork'
    }
  ]
}

部署命令

  1. 啟動應用:
pm2 start ecosystem.config.js
  1. 監控應用:
pm2 monit
  1. 查看日誌:
pm2 logs image-metadata-tool
  1. 停止應用:
pm2 stop image-metadata-tool
  1. 重啟應用:
pm2 restart image-metadata-tool

目錄結構

確保以下目錄存在並具有適當的權限:

public/
├── uploads/
├── processed/
├── temp/
└── images/

如果目錄不存在,創建它們:

mkdir -p public/{uploads,processed,temp,images}

監控

PM2 提供多種監控選項:

  1. 基於網頁的監控:
pm2 plus
  1. 基於終端的監控:
pm2 monit
  1. 狀態檢查:
pm2 status

日誌管理

  1. 查看日誌:
pm2 logs
  1. 清除日誌:
pm2 flush
  1. 查看特定應用日誌:
pm2 logs image-metadata-tool

啟動腳本

確保服務器重啟後應用自動啟動:

pm2 startup
pm2 save

故障排除

  1. 如果應用無法啟動:

    • 檢查日誌:pm2 logs image-metadata-tool
    • 驗證環境變量
    • 檢查端口可用性
    • 驗證文件權限
  2. 內存問題:

    • 監控內存使用:pm2 monit
    • 考慮在 ecosystem.config.js 中增加 Node.js 內存限制
  3. 進程崩潰:

    • 檢查錯誤日誌
    • 驗證 OpenAI API 密鑰
    • 檢查上傳目錄的磁盤空間

安全注意事項

  1. 文件權限:
chmod 755 public/{uploads,processed,temp,images}
  1. 環境變量:
  • 使用 PM2 環境文件
  • 保護 .env.production 文件
  1. 網絡安全:
  • 配置防火牆規則
  • 在生產環境使用 HTTPS
  • 設置速率限制

備份策略

  1. 定期備份:

    • 環境文件
    • 上傳的圖片
    • 處理後的數據
    • PM2 配置
  2. 自動備份腳本示例:

#!/bin/bash
backup_dir="/path/to/backups/$(date +%Y%m%d)"
mkdir -p "$backup_dir"
cp .env.production "$backup_dir/"
cp ecosystem.config.js "$backup_dir/"
tar -czf "$backup_dir/public.tar.gz" public/

更新和維護

  1. 更新應用:
git pull
npm install
npm run build
pm2 restart image-metadata-tool
  1. 更新 PM2:
npm install pm2 -g
pm2 update

相關資源