1. 安装Node.js与npm
在Debian上部署JS应用前,需先安装Node.js(包含npm包管理器)。推荐通过NodeSource仓库安装指定版本(如16.x/18.x),避免系统默认版本的兼容性问题;若需管理多版本,可使用NVM(Node Version Manager)。
curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -添加仓库,再执行sudo apt install -y nodejs安装。curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash安装NVM,然后通过nvm install 16安装指定版本,nvm use 16切换版本。2. 上传应用代码
将本地JS项目代码传输至Debian服务器。常用方法包括:
scp -r ./local-app user@server-ip:/remote/path命令通过SCP传输;或通过FileZilla等FTP工具上传。git clone https://github.com/yourusername/your-app.git。3. 安装项目依赖
进入项目目录,执行npm install命令。该命令会根据package.json文件自动下载并安装所有依赖项(包括生产依赖dependencies和开发依赖devDependencies,生产环境建议通过npm install --production仅安装生产依赖)。
4. 构建项目(如需)
若项目使用Webpack、Vite等工具打包(如React、Vue等前端框架),需执行构建命令生成静态文件。常见命令包括:
npm run build:生成dist或build目录,包含优化后的HTML、CSS、JS文件。dist)配置为Web服务器的根目录。5. 启动应用进程
生产环境严禁直接使用node app.js(进程易崩溃、无法自动重启),推荐使用PM2(Node.js进程管理器):
sudo npm install -g pm2。pm2 start app.js --name "my-js-app"(app.js为入口文件,可根据实际修改)。pm2 startup(按提示执行生成的命令),并保存进程列表pm2 save(防止重启后丢失)。6. 配置反向代理(可选但推荐)
使用Nginx作为反向代理,将外部HTTP/HTTPS请求转发至Node.js应用的端口(如3000),提升安全性、支持多域名及负载均衡。
sudo apt install nginx。sudo nano /etc/nginx/sites-available/your-domain.com,添加以下内容(替换your-domain.com为域名/IP,3000为Node.js端口):server {
listen 80;
server_name your-domain.com;
location / {
proxy_pass http://localhost: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.com /etc/nginx/sites-enabled/,测试配置有效性sudo nginx -t,重启Nginxsudo systemctl restart nginx。7. 配置HTTPS(生产环境必选)
使用Let’s Encrypt免费获取SSL证书,实现HTTPS加密。
sudo apt install certbot python3-certbot-nginx(若已安装Nginx)。sudo certbot --nginx -d your-domain.com(替换为域名),按提示完成验证。sudo certbot renew --dry-run测试续期)。8. 防火墙设置(可选)
若服务器启用了UFW(Uncomplicated Firewall),需开放HTTP(80)和HTTPS(443)端口,允许外部访问:
sudo ufw allow 'Nginx Full'(允许HTTP和HTTPS),然后刷新防火墙规则sudo ufw reload。
9. 日志与监控(可选但建议)
pm2 logs,或保存日志至文件pm2 logs > app.log。pm2 monit,或集成第三方工具(如Prometheus+Grafana)。npm outdated检查过时依赖,使用npm update更新依赖(注意测试兼容性)。