温馨提示×

JS在Debian上的最佳实践有哪些

小樊
45
2025-12-17 02:56:39
栏目: 编程语言

JS在Debian上的最佳实践

一 环境准备与版本管理

  • 使用 NVM(Node Version Manager) 安装和管理 Node.js LTS,避免 apt 源版本过旧与权限问题;部署前统一 node -vnpm -v 校验版本。
  • 区分运行时与构建时依赖:运行时使用 nodejs,构建阶段按需安装 build-essential 等编译工具,减少镜像体积与攻击面。
  • 建议非 root 部署,创建专用系统用户(如 appuser)运行服务,目录如 /var/www/ 归属该用户,降低提权风险。
  • 保持系统与依赖的及时更新sudo apt update && sudo apt upgrade,并定期审计 npm 包安全(npm audit / 定期升级)。

二 代码质量与工程化

  • 统一代码规范与质量:使用 ESLint 做静态检查,Prettier 做格式统一,配合 EditorConfig 保持跨编辑器一致性。
  • 构建与转译:使用 Babel 转译 ES6+ 语法,配合 Webpack 等打包器进行代码分割(如 SplitChunks)与资源优化。
  • 现代化语法与模块化:优先 ES6 模块async/await,减少回调地狱,提升可读性与可维护性。
  • 质量保障:引入 Jest / Mocha / Chai 等测试框架,结合 ESLint 规则在 CI 中做门禁,确保提交即合格。

三 前端项目部署与缓存策略

  • 构建产物只包含静态资源:前端项目在本地执行 npm run build,将 dist/(或 build/)内容上传至服务器 /var/www/your-frontend
  • 使用 Nginx 托管静态资源,并配置长期缓存与协商缓存:
    • 对带哈希的文件设置强缓存(如 Cache-Control: public, max-age=31536000, immutable)。
    • HTML 与无哈希资源禁用强缓存,使用协商缓存(如 ETag/Last-Modified)。
  • 部署前校验:确认 Nginx 运行、云厂商安全组与系统防火墙已放行 80/443 端口;上传仅传产物目录,避免泄露源码。

四 Node.js 服务部署与进程管理

  • 使用 PM2 管理进程:支持后台常驻、崩溃自启、日志轮转与集群模式;配置开机自启(pm2 startuppm2 save)。
  • Nginx 反向代理 暴露服务:将 HTTP/1.1WebSocket 升级头透传,设置合适的超时与缓冲;对外仅暴露 80/443,Node 服务监听本地端口。
  • 安全与加固:仅开放必要端口,使用 UFW 或云安全组限制来源;为域名申请 Let’s Encrypt 证书启用 HTTPS;禁止在公网暴露调试端口与源码。
  • 运行用户与目录权限:以 appuser 运行 Node,静态资源与日志目录归属清晰,避免 root 运行。

五 日志、监控与安全加固

  • 结构化日志:Node 侧使用 Winston / Pino / Bunyan 输出 JSON 日志,合理设置级别(如 error/warn/info/debug),便于检索与聚合。
  • 系统日志与审计:用 journalctl 查看服务日志,集中到 Prometheus + Grafana 做可视化与告警;Web 访问日志用 GoAccess 做实时分析。
  • 安全头与策略:启用 CSP(内容安全策略)X-Frame-OptionsX-Content-Type-OptionsStrict-Transport-Security 等安全头,降低 XSS/点击劫持/MIME 嗅探 风险。
  • 输入校验与防护:服务端严格校验与转义输入,使用参数化查询防 SQL 注入;生产环境隐藏详细错误信息,仅记录到日志。
  • 可选 WAF(如 ModSecurity) 抵御常见 SQLi/XSS/CSRF 攻击;定期更新系统与依赖,持续进行漏洞扫描与修复。

0