温馨提示×

centos怎么部署nodejs服务

小樊
46
2026-09-11 18:14:03
栏目: 编程语言

CentOS 上部署 Node.js 服务,通常分为 安装 Node.js → 上传项目 → 启动服务 → 配置进程守护 →(可选)反向代理 几个步骤。下面以 CentOS 7/8 为例,给你一套常见、稳妥的做法。


一、安装 Node.js

方式一:使用 NodeSource(推荐)

# 安装依赖
sudo yum install -y curl

# 以 Node.js 18 为例
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -

# 安装
sudo yum install -y nodejs

# 验证
node -v
npm -v

方式二:使用 NVM(适合多版本)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 18

二、上传 Node.js 项目

# 示例目录
mkdir -p /www/nodeapp
cd /www/nodeapp

# 上传代码(scp / git / rz 等)
# 例如:
scp -r ./myapp root@服务器IP:/www/nodeapp

安装依赖:

cd /www/nodeapp/myapp
npm install --production

三、启动 Node.js 服务

1️⃣ 直接启动(测试用)

node app.js
# 或
npm start

⚠️ 这样一旦退出终端就会停止。


四、使用 PM2 守护进程(强烈推荐)

安装 PM2

npm install -g pm2

启动项目

pm2 start app.js --name mynode

常用命令

pm2 list
pm2 logs mynode
pm2 restart mynode
pm2 stop mynode
pm2 delete mynode

开机自启

pm2 startup
pm2 save

五、开放端口(防火墙)

假设 Node 服务端口是 3000

# CentOS 7
firewall-cmd --zone=public --add-port=3000/tcp --permanent
firewall-cmd --reload

# 查看
firewall-cmd --list-ports

如果是云服务器,还要在 安全组 放行端口。


六、使用 Nginx 反向代理(推荐生产环境)

安装 Nginx

sudo yum install -y nginx
sudo systemctl start nginx
sudo systemctl enable nginx

配置反向代理

sudo vi /etc/nginx/conf.d/node.conf

示例:

server {
    listen 80;
    server_name yourdomain.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;
    }
}

重启 Nginx:

sudo nginx -t
sudo systemctl restart nginx

七、常见部署结构(推荐)

Nginx (80)
  ↓
PM2 (Node.js)
  ↓
Node App (3000)

八、常见问题

端口被占用

lsof -i:3000

npm install 慢

npm config set registry https://registry.npmmirror.com

内存不足

pm2 start app.js --max-memory-restart 300M

如果你告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • Node 项目类型(Express / Nest / Vue / Next)
  • 是否用域名
  • 是否 HTTPS

我可以直接给你 一套可复制的部署方案

0