在 Node.js 开发中,将 Express 项目从本地环境推向生产环境的独立服务器,是项目上线的关键一步。然而,仅仅让项目跑起来是不够的,如何保证它在后台稳定运行、崩溃自动重启以及开机自启,同样至关重要。本文将详细讲解独立服务器的系统部署流程,以及使用 pm2 托管 Express 项目的最佳实践。
一、 独立服务器基础环境准备
在部署项目之前,首先需要确保服务器具备运行 Node.js 的基础环境。
- 系统更新:登录服务器后,首先更新系统软件包,确保系统安全与兼容。
sudo apt update && sudo apt upgrade -y - 安装 Node.js 环境:推荐使用 NodeSource 安装指定版本的 Node.js,或者使用 NVM(Node Version Manager)进行多版本管理,以适应不同项目的需求。
- 安装 Nginx:Nginx 将作为反向代理服务器,负责接收外部的 80 或 443 端口请求,并将其转发到 Express 项目运行的内部端口(如 3000),同时还能处理 SSL 证书和静态资源缓存。
sudo apt install nginx -y
二、 Express 项目上传与 Nginx 配置
- 代码上传:将本地开发好的 Express 项目代码上传至服务器指定目录(如
/var/www/express-app)。可以使用 Git 拉取代码,或者通过 SCP 命令直接上传压缩包。 - 安装依赖:进入项目目录,执行
npm install --production安装生产环境所需的依赖包。 - 配置 Nginx 反向代理:修改 Nginx 配置文件,将外部域名请求代理到 Express 服务的内部端口。
完成配置后,执行server { listen 80; server_name yourdomain.com; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }sudo nginx -t测试配置,并使用sudo systemctl restart nginx重启 Nginx。
三、 使用 pm2 托管与守护进程
Node.js 是单线程应用,一旦遇到未捕获的异常就会崩溃退出。在生产环境中,直接使用 node app.js 启动项目是不负责任的,我们需要使用 pm2 来托管项目。
- 安装 pm2:通过 npm 全局安装 pm2。
sudo npm install pm2 -g - 启动 Express 项目:在项目根目录下,使用 pm2 启动应用。
这里的pm2 start app.js --name "express-app"--name参数为进程指定了一个别名,方便后续管理。 - 常用 pm2 管理命令:
- 查看所有进程状态:
pm2 list - 查看实时日志:
pm2 logs express-app - 重启应用:
pm2 restart express-app - 停止应用:
pm2 stop express-app - 监控 CPU 和内存:
pm2 monit
- 查看所有进程状态:
- 开机自启配置:为了防止服务器重启后项目无法自动运行,需要生成并保存 pm2 的启动脚本。
pm2 startup pm2 savepm2 startup会生成对应系统的守护指令,pm2 save则会将当前运行的 pm2 进程列表保存下来,在系统重启后自动恢复。
四、 总结
独立服务器部署 Express 项目并不复杂,核心在于构建闭环的运行环境。通过 Nginx 处理外部请求与反向代理,结合 pm2 强大的进程守护、负载均衡及日志管理能力,可以极大地提升 Express 项目的稳定性和可用性。按照上述步骤操作,你的 Express 项目将能够专业、稳健地运行在生产环境之中。