Linux下Node.js部署全攻略:从安装到优化
2025.09.19 11:10浏览量:0简介:本文详细介绍在Linux系统上部署Node.js的全流程,涵盖安装方式、版本管理、环境配置及性能优化,帮助开发者高效完成Node.js环境搭建。
一、环境准备与系统检查
在部署Node.js前,需确认Linux系统版本及资源状态。推荐使用Ubuntu 20.04 LTS或CentOS 8等长期支持版本,确保内核版本≥3.10以支持现代容器技术。通过uname -r
命令查看内核版本,使用free -h
和df -h
检查内存与磁盘空间,建议预留至少2GB内存和10GB磁盘空间。
系统依赖方面,需安装编译工具链(gcc、make、python3)及基础开发库。Ubuntu用户可通过sudo apt update && sudo apt install -y build-essential python3
快速安装,CentOS用户则执行sudo yum groupinstall "Development Tools" -y
。
二、Node.js安装方式对比与选择
1. 官方二进制包安装
Node.js官方提供预编译的Linux二进制包,支持x64、ARM等架构。访问Node.js官网下载LTS版本(如18.x),使用wget
命令下载后解压至/opt/nodejs
目录:
wget https://nodejs.org/dist/v18.16.0/node-v18.16.0-linux-x64.tar.xz
tar -xf node-v18.16.0-linux-x64.tar.xz -C /opt/
ln -s /opt/node-v18.16.0-linux-x64/bin/node /usr/local/bin/node
ln -s /opt/node-v18.16.0-linux-x64/bin/npm /usr/local/bin/npm
此方式优势在于无需编译,但升级时需手动替换文件。
2. Node Version Manager (nvm)
nvm是Node.js版本管理工具,支持多版本共存与快速切换。安装步骤如下:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash
source ~/.bashrc # 重新加载配置
nvm install --lts # 安装最新LTS版本
nvm use --lts # 切换至该版本
nvm通过Shell脚本管理版本,适合需要频繁切换版本的场景,但需注意其仅支持用户级安装。
3. 包管理器安装
Ubuntu用户可通过apt
安装:
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install -y nodejs
CentOS用户使用yum
:
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo yum install -y nodejs
此方式集成度高,但版本更新可能滞后于官方发布。
三、生产环境配置优化
1. 全局路径配置
将Node.js可执行文件路径添加至PATH
环境变量,编辑~/.bashrc
或/etc/profile
文件:
export PATH=/opt/nodejs/bin:$PATH
验证配置:
echo $PATH | grep node
node -v # 应输出版本号
2. 项目目录结构规范
推荐采用以下目录结构:
/opt/app/
├── node_modules/ # 项目依赖
├── src/ # 应用代码
├── logs/ # 日志文件
├── config/ # 配置文件
└── package.json
通过npm init -y
初始化项目,使用npm install --production
安装依赖时排除开发依赖。
3. 进程管理方案
PM2进程守护
安装PM2并配置开机自启:
npm install -g pm2
pm2 startup # 生成系统服务配置
pm2 save # 保存当前进程列表
创建ecosystem.config.js
配置文件:
module.exports = {
apps: [{
name: "my-app",
script: "src/index.js",
instances: "max", # 根据CPU核心数自动扩展
exec_mode: "cluster",
env: {
NODE_ENV: "production",
PORT: 3000
}
}]
};
启动应用:
pm2 start ecosystem.config.js
pm2 monit # 实时监控
Systemd服务配置
对于无集群需求的场景,可创建Systemd服务:
[Unit]
Description=Node.js Application
After=network.target
[Service]
User=nodeuser
WorkingDirectory=/opt/app
ExecStart=/usr/local/bin/node src/index.js
Restart=always
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
启用服务:
sudo systemctl daemon-reload
sudo systemctl enable myapp.service
sudo systemctl start myapp.service
四、安全加固与性能调优
1. 权限控制
- 创建专用用户:
sudo useradd -m nodeuser
- 修改文件权限:
sudo chown -R nodeuser:nodeuser /opt/app
- 禁用root运行:在Systemd配置中指定
User=nodeuser
2. 防火墙配置
开放必要端口并限制访问:
sudo ufw allow 3000/tcp
sudo ufw deny from 192.168.1.100 to any port 3000 # 示例:屏蔽特定IP
3. 性能优化参数
- 启用V8引擎优化:
--max-old-space-size=4096
(设置4GB堆内存) - 调整GC策略:
--expose-gc
配合global.gc()
手动触发 - 启用HTTP/2:使用
https
模块或Nginx反向代理
五、常见问题解决方案
1. 端口冲突处理
使用netstat -tulnp | grep 3000
查找占用进程,通过kill -9 PID
终止后重启应用。
2. 依赖安装失败
- 清除缓存:
npm cache clean --force
- 使用镜像源:
npm config set registry https://registry.npmmirror.com
- 检查Python版本:确保≥3.6(Node-gyp依赖)
3. 内存泄漏排查
- 使用
--inspect
开启调试:node --inspect src/index.js
- 通过Chrome DevTools分析堆内存
- 定期执行
global.gc()
并记录内存快照
六、持续集成与部署
推荐采用Git钩子+CI/CD流程:
- 代码推送至Git仓库
- Jenkins/GitHub Actions触发构建
- 执行
npm ci
安装依赖 - 运行单元测试:
npm test
- 通过SSH部署至生产服务器
- 执行
pm2 reload my-app
无缝更新
示例GitHub Actions配置:
name: Node.js CI
on:
push:
branches: [ main ]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
with:
node-version: '18'
- run: npm ci
- run: npm test
- uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SSH_HOST }}
username: ${{ secrets.SSH_USER }}
key: ${{ secrets.SSH_KEY }}
script: |
cd /opt/app
git pull
npm ci --production
pm2 reload my-app
通过以上步骤,开发者可在Linux系统上构建稳定、高效的Node.js运行环境。实际部署时需根据业务需求调整配置参数,并定期监控系统资源使用情况。
发表评论
登录后可评论,请前往 登录 或 注册