温馨提示×

debian怎么用nodejs部署项目

小樊
36
2026-09-16 19:22:17
栏目: 编程语言

下面给你一套在 Debian 上用 Node.js 部署项目的常用且稳妥流程,从环境安装到生产部署都覆盖,适合大多数 Web 项目(如 Express / NestJS / Vue/React 前端等)。


一、安装 Node.js(推荐用 NodeSource)

1. 更新系统

sudo apt update
sudo apt upgrade -y

2. 安装 curl(如果没有)

sudo apt install -y curl

3. 添加 NodeSource 源(以 Node 20 为例)

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -

4. 安装 Node.js

sudo apt install -y nodejs

5. 验证

node -v
npm -v

二、上传 / 拉取项目代码

方式一:git 拉取

sudo apt install -y git
git clone https://github.com/your/project.git
cd project

方式二:scp / ftp 上传

scp -r ./project user@server:/var/www/

三、安装依赖并构建

1. 安装依赖

npm install
# 或
yarn install

2. 构建(如有)

npm run build

四、运行 Node 项目(开发方式,不推荐生产)

node app.js
# 或
npm start

⚠️ 这样关闭终端就会停止


五、生产环境推荐方式

方式 1:PM2(最常用)

安装 PM2

sudo npm install -g pm2

启动项目

pm2 start app.js

开机自启

pm2 startup
pm2 save

常用命令

pm2 list
pm2 logs
pm2 restart app
pm2 stop app

方式 2:Systemd(更“Debian 原生”)

创建服务文件

sudo nano /etc/systemd/system/nodeapp.service

内容示例:

[Unit]
Description=Node.js App
After=network.target

[Service]
User=www-data
WorkingDirectory=/var/www/project
ExecStart=/usr/bin/node app.js
Restart=always

[Install]
WantedBy=multi-user.target

启动服务

sudo systemctl daemon-reload
sudo systemctl start nodeapp
sudo systemctl enable nodeapp

六、用 Nginx 做反向代理(强烈推荐)

安装 Nginx

sudo apt install -y nginx

配置站点

sudo nano /etc/nginx/sites-available/nodeapp

示例:

server {
    listen 80;
    server_name example.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/nodeapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

七、HTTPS(可选但推荐)

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d example.com

八、常见部署结构示例

/var/www/
 └── project/
     ├── app.js
     ├── package.json
     ├── node_modules/
     └── dist/

九、排错建议

  • 端口是否被占用:sudo lsof -i:3000
  • 防火墙:sudo ufw allow 80,443,22
  • 查看日志:pm2 logsjournalctl -u nodeapp

如果你愿意,可以告诉我:

  • 用的是 Express / NestJS / 原生 Node
  • 是否 前端 + 后端
  • 是否是 Docker 部署

我可以直接给你一份专用部署方案或脚本

0