nextjs使用pm2打包

Next.js 应用使用 PM2 进行打包和进程管理,能确保应用在服务器上稳定、高效地运行。下面是一个清晰的流程和关键配置。

🛠️ 核心步骤与配置

以下是使用 PM2 管理 Next.js 应用的主要步骤和配置要点:

步骤 关键命令/配置 说明

  1. 构建应用 npm run build 在部署前构建生产优化版本

  2. 安装 PM2 npm install -g pm2 全局安装 PM2 进程管理器

  3. PM2 启动应用 pm2 start npm --name “your-app-name” – run start 或使用配置文件 ecosystem.config.js 启动应用并为其命名,-- run start 指定执行 npm run start

  4. 保存进程列表 pm2 save 保存当前 PM2 管理的进程列表

  5. 设置开机自启 pm2 startup 生成启动脚本,根据提示执行命令以确保服务器重启后应用自动恢复

  6. 配置 Nginx 反向代理 创建 /etc/nginx/sites-available/your-app 配置文件 将 HTTP 请求代理到 Next.js 应用(默认运行在 3000 端口)

📝 详细配置说明

  1. 创建 PM2 配置文件(推荐)

在项目根目录创建 ecosystem.config.js 文件,这样可以更灵活地管理配置 :
module.exports = {
apps: [{
name: ‘my-nextjs-app’, // 应用名称
script: ‘npm’, // 使用 npm 作为启动脚本
args: ‘run start’, // npm 的参数,即运行 npm run start
instances: ‘max’, // 根据 CPU 核心数启动最大实例数(用于集群模式)
exec_mode: ‘cluster’, // 启用集群模式,实现负载均衡
autorestart: true, // 应用崩溃后自动重启
watch: false, // 生产环境建议关闭文件监听
max_memory_restart: ‘1G’, // 当内存使用超过 1G 时重启应用
env: {
NODE_ENV: ‘production’, // 设置环境变量为生产环境
PORT: 3000 // 设置应用运行的端口号
}
}]
};

使用配置文件启动应用:
pm2 start ecosystem.config.js

  1. Nginx 反向代理配置

为了让外部用户通过域名或 IP 访问你的 Next.js 应用(并实现负载均衡、SSL 加密等),通常需要配置 Nginx 作为反向代理 。

在 /etc/nginx/sites-available/your-app 中配置:
server {
listen 80;
server_name your-domain.com; # 替换为你的域名或服务器 IP

location / {
    proxy_pass http://localhost:3000; # 指向 Next.js 应用实际运行的地址和端口
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_cache_bypass $http_upgrade;
}

# 可选:静态资源缓存,提升性能
location /_next/static {
    alias /path/to/your/project/.next/static;
    expires 365d;
    access_log off;
}

}

启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/
sudo nginx -t # 测试配置文件语法是否正确
sudo systemctl restart nginx

  1. 环境变量处理

Next.js 在构建阶段会读取环境变量。生产环境的变量通常设置在 .env.production 文件中 ,或以其他方式注入(如 Docker 环境变量、服务器环境变量)。确保所有必要的环境变量(如数据库连接字符串、API 密钥)已在生产环境正确设置 。

⚙️ PM2 常用命令

掌握这些命令,方便管理你的应用:

命令 说明

pm2 start my-nextjs-app 启动指定名称的应用

pm2 stop my-nextjs-app 停止指定名称的应用

pm2 restart my-nextjs-app 重启指定名称的应用

pm2 delete my-nextjs-app 从 PM2 列表中删除指定应用

pm2 list 或 pm2 ls 查看所有由 PM2 管理的应用及其状态

pm2 logs my-nextjs-app 查看指定应用的实时日志

pm2 monit 打开实时监控界面,查看应用的 CPU 和内存使用情况

💡 注意事项

• 确保完成构建:使用 PM2 启动前,务必先执行 npm run build 生成生产环境优化代码 。

• 使用 next start:PM2 应运行 next start 命令来启动生产服务器,而不是开发命令 next dev 。

• 集群模式 (Cluster Mode):对于多核服务器,使用 PM2 的集群模式 (exec_mode: ‘cluster’, instances: ‘max’) 可以启动多个应用实例,充分利用 CPU 资源,提高性能和稳定性 。

• 资源监控:使用 pm2 monit 或 pm2 logs 定期监控应用运行状态和资源占用,及时发现潜在问题 。

• pm2 logs your-app-name 查看打包日志

• 安全考虑:

◦   通过 Nginx 配置 SSL 证书(如使用 Certbot )启用 HTTPS。

◦   妥善保管生产环境的环境变量,避免泄露敏感信息 。
posted @ 2025-09-02 23:21  行路客  阅读(60)  评论(0)    收藏  举报  来源