1. 安装稳定版本的Node.js
在Debian上安装Node.js时,优先选择官方或可信源的稳定版本。推荐通过NodeSource存储库安装(支持最新稳定版),或使用**NVM(Node Version Manager)**管理多版本(适合需要版本切换的场景)。
curl -fsSL https://deb.nodesource.com/setup_18.x | sudo -E bash -(替换18.x为目标版本,如16.x、20.x),再执行sudo apt install -y nodejs,即可安装指定版本的Node.js及npm。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash安装NVM,然后通过nvm install 18安装最新18.x版本,nvm use 18切换为当前使用版本。这种方式可灵活管理多个Node.js版本,避免系统版本冲突。2. 使用进程管理器确保应用持续运行
Node.js应用默认在前台运行,一旦进程终止会导致服务中断。**PM2(Process Manager 2)**是Debian上最常用的进程管理工具,可实现后台运行、自动重启、负载均衡及日志管理。
sudo npm install -g pm2(全局安装)。pm2 start app.js --name "my-node-app"(app.js为入口文件,--name指定应用名称)。pm2 startup(生成开机启动脚本),pm2 save(保存当前进程列表)。pm2 monit(实时查看CPU、内存占用),pm2 logs(查看应用日志)。3. 配置反向代理提升稳定性
直接暴露Node.js应用到公网存在安全风险(如端口扫描、DDoS攻击),建议使用Nginx作为反向代理,隐藏Node.js端口、处理静态文件、分担负载。
sudo apt update && sudo apt install -y nginx。/etc/nginx/sites-available/default,添加以下内容(替换yourdomain.com为域名或公网IP):server {
listen 80;
server_name yourdomain.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;
}
}
sudo nginx -t(检查配置语法),sudo systemctl restart nginx(应用更改)。4. 优化系统资源限制
Debian默认的系统参数可能无法满足高并发需求,需调整以下参数以避免资源瓶颈:
ulimit -n 65535(临时生效),或编辑/etc/security/limits.conf,添加* soft nofile 65535、* hard nofile 65535(永久生效)。/etc/sysctl.conf,添加以下内容优化TCP连接:net.core.somaxconn = 65535 # 监听队列最大长度
net.ipv4.tcp_max_syn_backlog = 65535 # SYN队列最大长度
net.ipv4.ip_local_port_range = 1024 65535 # 可用端口范围
运行sudo sysctl -p使配置生效。5. 监控与日志管理
稳定的运行离不开持续的监控和日志分析,及时发现并解决问题:
pm2 monit查看CPU、内存占用,pm2 list查看进程列表,pm2 restart my-node-app重启异常进程。pm2 logs查看实时日志,pm2 saveLog保存日志到文件。如需更强大的日志分析,可集成ELK Stack(Elasticsearch+Logstash+Kibana)或Graylog。clinic.js进行性能诊断。6. 安全加固措施
避免应用遭受攻击,需采取以下安全措施:
nodeuser)启动应用,通过sudo chown -R nodeuser:nodeuser /path/to/app修改项目目录权限。npm audit检查项目依赖的安全漏洞,使用snyk(npm install -g snyk)修复高危漏洞。sudo apt install certbot python3-certbot-nginx),运行sudo certbot --nginx -d yourdomain.com自动配置HTTPS,强制加密数据传输。express-rate-limit中间件限制请求频率,防止DDoS攻击。例如:const rateLimit = require('express-rate-limit');
const limiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15分钟
max: 100 // 每个IP最多100次请求
});
app.use(limiter);
7. 代码与依赖优化
优化代码和依赖是提升稳定性的根本:
fs.createReadStream()读取文件,res.write()分块发送响应。null)。npm ci(而非npm install)安装依赖(确保依赖版本一致),删除未使用的依赖(npm prune)。node-cache或Redis缓存,减少重复计算。