在CentOS 7系统上部署Node.js应用是许多开发者和运维人员的常见需求,CentOS 7作为一款稳定可靠的Linux发行版,结合Node.js的异步非阻塞I/O特性,能够为Web应用、微服务或API接口提供高效的运行环境,本文将详细介绍从环境准备到应用发布的完整流程,确保部署过程清晰、高效且可维护。

环境准备与依赖安装
在开始部署前,需确保系统基础环境配置妥当,首先更新系统软件包至最新版本,执行sudo yum update -y命令,由于CentOS 7默认的yum源中Node.js版本较低,建议通过NodeSource仓库安装较新版本,以Node.js 18.x为例,执行以下命令添加仓库:
curl -fsSL https://rpm.nodesource.com/setup_18.x | sudo bash -
随后安装Node.js及npm:
sudo yum install -y nodejs
安装完成后,通过node -v和npm -v验证版本,确保成功部署,根据项目需求可能需要安装其他依赖,如git(用于代码拉取)、nginx(作为反向代理)等,可通过sudo yum install -y git nginx命令安装。
项目部署流程
代码获取与依赖安装
通过Git从代码仓库(如GitHub、Gitee)拉取项目代码,假设项目目录为/opt/myapp:
sudo mkdir -p /opt/myapp sudo git clone https://github.com/yourusername/yourproject.git /opt/myapp cd /opt/myapp
切换至项目目录后,执行npm install安装依赖包,若生产环境需使用npm ci(确保依赖版本严格匹配package-lock.json),可避免因版本不一致导致的问题,安装过程中可通过--production参数跳过开发依赖,减少部署体积。

应用配置与启动
根据环境修改配置文件(如数据库连接、端口设置等),建议通过环境变量管理敏感信息,例如在/etc/profile.d/myapp.sh中添加:
export DB_HOST="localhost" export DB_USER="root" export DB_PASSWORD="yourpassword"
保存后执行source /etc/profile.d/myapp.sh使配置生效,对于Node.js应用,推荐使用pm2进程管理工具实现后台运行与自动重启,全局安装pm2:
sudo npm install -g pm2
启动应用时,可通过pm2 start app.js --name "myapp"指定启动脚本与进程名称,若需集群模式(利用多核CPU),可添加-i max参数:pm2 start app.js -i max,启动后通过pm2 status查看进程状态,pm2 logs实时查看日志。
反向代理与防火墙配置
为提升安全性与性能,建议使用Nginx作为反向代理,编辑Nginx配置文件/etc/nginx/nginx.conf或新建/etc/nginx/conf.d/myapp.conf:
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://localhost:3000; # Node.js应用默认端口
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 restart nginx重启服务,需开放防火墙端口(默认80、443),执行:

sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
维护与监控
部署完成后,需定期维护应用与服务器,通过pm2 monit监控进程资源占用,或配置日志轮转(如logrotate)避免日志文件过大,若需更新代码,可进入项目目录执行git pull拉取最新代码,然后重启应用:pm2 restart myapp,对于长期运行的Node.js应用,建议定期检查依赖安全漏洞,使用npm audit fix自动修复可漏洞。
相关问答FAQs
Q1: 如何在CentOS 7上卸载已安装的Node.js?
A1: 若通过NodeSource仓库安装,可执行sudo yum remove nodejs npm -y卸载,若需彻底清理配置文件,可手动删除/usr/local/bin下的node、npm等可执行文件,并检查/etc/yum.repos.d/下是否有nodesource.repo文件,如有则删除后执行sudo yum clean all。
Q2: Node.js应用启动后无法访问外部IP,如何排查?
A2: 首先检查应用是否监听正确端口(如netstat -tlnp | grep :3000),确认防火墙与SELinux设置(可通过sudo setenforce 0临时关闭SELinux测试),若使用Nginx代理,需检查/var/log/nginx/error.log定位代理配置问题,确保proxy_pass地址与Node.js应用监听地址一致。