Node.js与Ubuntu集成最佳实践
导读:Node.js 与 Ubuntu 集成最佳实践 一 安装与版本管理 使用 NodeSource APT 仓库安装指定版本(推荐 LTS):先更新索引并安装依赖,再导入 NodeSource 脚本安装所需主版本,例如 20.x 或 18.x...
Node.js 与 Ubuntu 集成最佳实践
一 安装与版本管理
- 使用 NodeSource APT 仓库安装指定版本(推荐 LTS):先更新索引并安装依赖,再导入 NodeSource 脚本安装所需主版本,例如 20.x 或 18.x,最后验证版本。示例:sudo apt update & & sudo apt install -y curl;curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -;sudo apt install -y nodejs;node -v;npm -v。该方法稳定、可重复,适合生产环境。
- 使用 **nvm(Node Version Manager)**进行多版本管理:适合开发/测试需要切换 Node.js LTS/最新版 的场景。示例:curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash;source ~/.bashrc;nvm install --lts;nvm use --lts;nvm alias default --lts;node -v;npm -v。
- 仅当对版本要求不高时,才使用 Ubuntu 官方仓库的 nodejs 包:sudo apt update;sudo apt install -y nodejs npm;node -v;npm -v。注意官方仓库版本可能滞后。
二 项目部署与进程管理
- 准备与依赖管理:将代码放置于如 /var/www/node-app,设置目录属主(如 sudo chown -R $USER:$USER /var/www/node-app),执行 npm ci --only=production 以可重复方式安装生产依赖。
- 进程守护与自启动:使用 PM2 管理进程与集群,示例:sudo npm install -g pm2;pm2 start app.js -i max --name “my-api”(按 CPU 核数启动多进程);pm2 startup(生成 systemd 服务,随系统自启);pm2 save(持久化进程列表);pm2 logs my-api(查看日志)。
- 本地开发启动:使用 npm run dev 或 node app.js,配合热重载工具(如 nodemon)仅在开发环境启用。
三 反向代理与网络配置
- 使用 Nginx 作为反向代理与静态资源服务:安装 Nginx(sudo apt install -y nginx),为站点创建配置(/etc/nginx/sites-available/your-domain),示例:
server {
listen 80; server_name your-domain.com;
location / { proxy_pass http://127.0.0.1:3000; 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 ln -s /etc/nginx/sites-available/your-domain /etc/nginx/sites-enabled/),测试配置(sudo nginx -t),重载(sudo systemctl reload nginx)。 - 防火墙放行:启用 UFW 并放行 HTTP/HTTPS(sudo ufw allow ‘Nginx Full’),确保 80/443 可达。
- 启用 HTTPS:推荐使用 Let’s Encrypt 与 Certbot 为域名自动签发与续期证书,保障传输安全与浏览器信任。
四 性能与安全加固
- 系统层面:提升文件描述符与内核网络参数以支撑高并发,示例:ulimit -n 65535(并在 /etc/security/limits.conf 持久化);在 /etc/sysctl.conf 中调优如 net.core.somaxconn、net.ipv4.tcp_max_syn_backlog、net.ipv4.ip_local_port_range、net.ipv4.tcp_tw_reuse、net.ipv4.tcp_fin_timeout,执行 sudo sysctl -p 生效。
- 应用层面:优先使用 异步 I/O 与 流(Streams) 处理大数据,减少阻塞与内存占用;利用 Cluster 模块或 PM2 集群模式(pm2 start app.js -i max)充分利用多核;按需调整 V8 堆内存(如 node --max-old-space-size=2048 app.js);使用 node --inspect / --prof 与 clinic.js / Prometheus + Grafana 做性能分析与监控。
- 依赖与镜像:为提升安装速度,可设置 npm 镜像源(如 npm config set registry https://registry.npmmirror.com),并在 CI/CD 中锁定依赖版本(package-lock.json / npm ci)。
五 运维与可观测性
- 日志与监控:使用 PM2 统一查看与轮转日志(pm2 logs、pm2 install pm2-logrotate),结合 Prometheus Node Exporter + Grafana 做系统与应用指标可视化,必要时接入 New Relic / Datadog 等 APM。
- 发布与回滚:采用 Git 拉取与 npm ci 的不可变部署流程,搭配 PM2 的进程列表保存与启动策略,实现快速回滚与零停机切换(必要时配合 Nginx upstream 做蓝绿/金丝雀发布)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Node.js与Ubuntu集成最佳实践
本文地址: https://pptw.com/jishu/750506.html
