Debian如何部署和管理JS应用
导读:在 Debian 上部署与管理 JS 应用的实用指南 一 环境准备 更新系统并安装基础工具: sudo apt update && sudo apt upgrade -y 安装 Node.js 与 npm(两种常用方...
在 Debian 上部署与管理 JS 应用的实用指南
一 环境准备
- 更新系统并安装基础工具:
- sudo apt update & & sudo apt upgrade -y
- 安装 Node.js 与 npm(两种常用方式,二选一或并存):
- 使用 APT 官方仓库:sudo apt install -y nodejs npm
- 使用 NodeSource 仓库(可指定版本,例如 20.x):
- curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
- sudo apt install -y nodejs
- 验证安装:node -v 与 npm -v 显示版本号
- 如需多版本并存与切换,使用 NVM(可选):
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
- source ~/.bashrc
- nvm install 20
- nvm use 20
- 建议以非 root用户部署应用,后续用 systemd 或 PM2 以指定用户运行。
二 部署与运行
- 准备代码与依赖:
- 将代码放置到如 /opt/myapp,进入目录:cd /opt/myapp
- 安装依赖:npm ci --only=production(或 npm install)
- 直接运行(仅用于验证):node app.js(生产环境不建议直接前台运行)
- 使用 PM2 守护进程(推荐):
- 全局安装:sudo npm install -g pm2
- 启动应用:pm2 start app.js --name myapp
- 使用配置文件(支持多环境、集群等):
- 新建 ecosystem.config.js:
- module.exports = { apps: [{ name: ‘myapp’, script: ‘app.js’, instances: ‘max’, exec_mode: ‘cluster’, env: { NODE_ENV: ‘production’ } } ] }
- 启动:pm2 start ecosystem.config.js --env production
- 新建 ecosystem.config.js:
- 常用命令:pm2 list、pm2 logs、pm2 restart myapp、pm2 monit
- 设置开机自启与持久化:
- PM2 托管:pm2 startup(按提示执行) & & pm2 save
- 或采用 systemd 服务(适合系统级托管,示例):
- 新建 /etc/systemd/system/myapp.service:
- [Unit] Description=My Node.js App; After=network.target
- [Service] Type=simple; User=www-data; WorkingDirectory=/opt/myapp; ExecStart=/usr/bin/node /opt/myapp/app.js; Restart=on-failure; Environment=NODE_ENV=production
- [Install] WantedBy=multi-user.target
- 启用:sudo systemctl daemon-reload & & sudo systemctl enable --now myapp
- 查看:sudo systemctl status myapp
- 新建 /etc/systemd/system/myapp.service:
三 反向代理与网络
- 安装 Nginx:sudo apt install -y nginx
- 配置反向代理(/etc/nginx/sites-available/default 或 /etc/nginx/conf.d/myapp.conf):
- server { listen 80; server_name your_domain_or_ip; 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 nginx -t & & sudo systemctl reload nginx
- 防火墙放行(如使用 UFW):sudo ufw allow ‘Nginx Full’
- 可选:启用 HTTPS/TLS(Certbot 等)以加密传输
四 日志监控与运维
- PM2 内置日志与监控:
- 实时日志:pm2 logs
- 监控面板:pm2 monit
- 日志轮转与保留(示例):
- pm2 set pm2:log-date-format “YYYY-MM-DD HH:mm Z”
- pm2 set pm2:max-size 10M
- pm2 set pm2:retain 7d
- 集中式日志(可选,适合多实例/多服务):
- 部署 ELK Stack(Elasticsearch、Logstash、Kibana),Logstash 采集 Node.js 日志(如文件或 stdout),在 Kibana 中可视化分析
- 常规维护:
- 版本发布:拉取新代码 → npm ci --only=production → pm2 restart myapp(或 systemctl restart myapp)
- 回滚:切换代码版本 → 重启应用
- 备份:定期备份代码、配置与环境变量(不要把 .env 提交到代码库)
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian如何部署和管理JS应用
本文地址: https://pptw.com/jishu/755970.html
