Linux 环境下 Node.js 应用部署全流程
在现代化的 Web 开发中,Node.js 凭借其高性能、事件驱动的特性,成为构建服务器端应用的首选技术栈之一,而 Linux 作为服务器操作系统的主流选择,为 Node.js 应用提供了稳定、高效运行环境,本文将详细介绍在 Linux 系统中部署 Node.js 应用的完整流程,包括环境准备、应用配置、进程管理及性能优化等关键环节。

环境准备:安装 Node.js 与依赖
在部署 Node.js 应用前,需确保 Linux 系统已安装 Node.js 运行时环境,以下是两种主流安装方式:
-
使用包管理器安装(推荐)
以 Ubuntu/Debian 系统为例,可通过以下命令安装 Node.js:curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash - sudo apt-get install -y nodejs
安装后通过
node -v和npm -v验证版本,对于 CentOS/RHEL 系统,可使用 EPEL 仓库或 NodeSource 提供的 RPM 包。 -
使用 NVM(Node Version Manager)管理多版本
NVM 允许在同一系统中灵活切换 Node.js 版本,适合开发与测试环境:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash source ~/.bashrc nvm install 18 # 安装指定版本 nvm use 18 # 切换版本
应用配置与依赖安装
-
上传应用代码
可通过scp、rsync或 Git 克隆将代码上传至 Linux 服务器。git clone https://github.com/your-username/your-app.git /var/www/your-app cd /var/www/your-app
-
安装依赖与配置环境变量
使用npm install或yarn install安装项目依赖,生产环境建议使用--production参数跳过开发依赖:npm install --production
创建
.env文件配置环境变量(如数据库连接、密钥等),并确保文件权限设置正确(chmod 600 .env)。
使用 PM2 管理应用进程
Node.js 应用需通过进程管理工具确保高可用性,PM2 是目前最流行的选择之一。
-
安装 PM2
sudo npm install -g pm2
-
启动与配置应用
在项目根目录下,通过pm2 start命令启动应用:pm2 start app.js --name "your-app" --instances 4 # 启动4个实例
常用 PM2 命令:
pm2 list:查看进程状态pm2 logs:查看日志pm2 restart your-app:重启应用pm2 stop your-app:停止应用
-
配置 PM2 开机自启
pm2 startup # 生成开机启动脚本 pm2 save # 保存当前进程列表
反向代理配置(Nginx)
为提升性能、处理静态资源及实现 HTTPS,通常使用 Nginx 作为反向代理。
-
安装 Nginx

sudo apt install nginx # Ubuntu/Debian sudo yum install nginx # CentOS/RHEL
-
配置 Nginx
创建配置文件/etc/nginx/sites-available/your-app:server { listen 80; server_name your-domain.com; location / { proxy_pass http://localhost:3000; # Node.js 默认端口 proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } }启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/your-app /etc/nginx/sites-enabled/ sudo nginx -t && sudo systemctl restart nginx
性能优化与安全加固
-
日志管理
PM2 默认将日志输出到~/.pm2/logs/目录,可通过配置实现日志轮转,避免单个日志文件过大。 -
防火墙与访问控制
使用ufw(Ubuntu)或firewalld(CentOS)限制端口访问:sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
-
资源监控
通过htop、glances等工具监控服务器资源使用情况,或使用 PM2 的内置监控功能:pm2 monit
常见问题与解决方案
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
| 端口冲突 | 多个进程占用同一端口 | 修改应用配置或使用 PM2 多实例 |
| 内存泄漏 | 未释放变量或事件监听 | 使用 node --inspect 调试 |
| 高 CPU 占用 | 无限循环或低效算法 | 通过 pm2 monit 定位问题进程 |
在 Linux 系统中部署 Node.js 应用需综合考虑环境配置、进程管理、反向代理及安全优化等多个环节,通过 PM2 实现应用的高可用管理,结合 Nginx 提升服务性能,是生产环境的标准实践,定期监控日志与资源使用情况,及时排查潜在问题,可确保应用的稳定运行,掌握上述流程,能够有效提升 Node.js 应用的部署效率与可靠性。
















