在 Debian 上,前端与后端 JS 框架的搭配通常分为两条链路:用 Node.js 运行后端框架(如 Express、NestJS),以及用 Node.js 工具链开发前端框架(如 Vue、React、Svelte)。下面给出兼顾稳定与可维护性的实践方案。
一、环境准备与版本选择
- 优先使用系统自带或官方仓库的 Node.js LTS,减少维护成本。
- Debian 13 自带 Node.js 20,Debian 12 自带 Node.js 18,可直接安装:
sudo apt update && sudo apt install -y nodejs npm
- 多项目需要不同版本时,使用 NVM 管理版本:
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
- 国内网络建议切换 npm 镜像 为 npmmirror.com,避免证书过期导致的安装失败:
npm config set registry https://registry.npmmirror.com
或使用 nrm 管理镜像源:
npm i -g nrm && npx nrm use taobao
如需恢复官方源:npx nrm use npm
注意:旧域名 registry.npm.taobao.org 的 HTTPS 证书已于 2024-01-22 过期,务必使用新域名。
二、后端 API 搭配 Express 与进程守护
- 初始化与依赖:
mkdir my-api && cd my-api
npm init -y
npm i express
- 最小可用服务(server.js):
const express = require(‘express’);
const app = express();
const port = process.env.PORT || 3000;
app.get(‘/api/hello’, (_, res) => res.json({ msg: ‘Hello from Debian + Express’ }));
app.listen(port, () => console.log(API listening on :${port}));
- 本地运行与脚本:
在 package.json 添加:
“scripts”: { “start”: “node server.js” }
运行:npm start
- 生产进程守护与开机自启:
npm i -g pm2
pm2 start server.js --name api
pm2 startup systemd # 按提示完成开机自启
pm2 save
pm2 status / logs / monit 可查看状态与日志。
三、前端框架搭配 Vue 与构建部署
- 工具链安装(示例采用 Yarn):
npm i -g yarn nrm
npx nrm use taobao
- 创建与启动项目:
yarn create vue my-app
cd my-app
yarn
yarn dev # 开发服务器默认 5173 端口
- 生产构建与产物:
yarn build # 生成 dist 静态文件
- 静态托管与反向代理(Nginx 示例):
- 将 dist 部署到站点目录(如 /var/www/my-app),Nginx 配置:
server {
listen 80;
server_name your_domain_or_ip;
root /var/www/my-app;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}
- 如需将前端与后端 API 统一域名,可用同一 Nginx 承载前端静态与反向代理后端:
location /api/ {
proxy_pass http://127.0.0.1:3000/;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
- 检查并重载:
sudo nginx -t && sudo systemctl reload nginx。
四、常见搭配与部署要点
- 版本矩阵建议:
- Debian 12/13 + Node.js 18/20 LTS + Express/NestJS/Vue/React/Svelte,兼顾稳定与生态兼容。
- 进程与日志:
- 后端用 PM2 管理(集群、监控、日志轮转);前端构建产物为纯静态,由 Nginx 托管。
- 安全与运维:
- 仅暴露必要端口(如 80/443),Node.js 服务绑定 127.0.0.1 由 Nginx 反向代理。
- 启用 HTTPS/TLS(可用 Let’s Encrypt),设置安全响应头(如 CSP、X-Frame-Options)。
- 使用 systemd 或 PM2 开机自启,配置日志轮转(journald 或 PM2 日志)。
- 镜像与缓存:
- 统一使用 npmmirror.com 镜像源,避免旧域名证书问题;必要时配置私有仓库或缓存代理。