在 CentOS 系统上部署 Node.js 应用并绑定域名的完整指南
环境准备:安装 CentOS 和基础配置
在开始部署 Node.js 应用之前,确保你的服务器已正确安装 CentOS 系统(推荐 CentOS 7 或更高版本),通过 SSH 连接到服务器,并更新系统软件包:

sudo yum update -y
安装必要的开发工具和依赖库,这些在编译 Node.js 时可能会用到:
sudo yum groupinstall "Development Tools" -y sudo yum install openssl-devel -y
建议配置防火墙规则,确保后续服务(如 HTTP、HTTPS)能够正常访问,开放 80 端口(HTTP)和 443 端口(HTTPS):
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload
安装 Node.js:使用源码编译或包管理器
Node.js 的安装方式有多种,包括源码编译、包管理器(如 yum)或版本管理工具(如 nvm),这里介绍两种常用方法:
使用 yum 安装(适合快速部署)
CentOS 官方仓库和 EPEL 仓库提供了 Node.js 的预编译包,可以直接安装:
sudo yum install nodejs npm -y
安装完成后,验证版本:
node -v # 应显示类似 v18.17.0 的版本 npm -v # 显示对应的 npm 版本
使用源码编译(适合自定义版本)
如果需要安装特定版本的 Node.js(如最新 LTS 版本),可以从官网下载源码并编译:
# 下载 Node.js 源码(以 v18.17.0 为例) wget https://nodejs.org/dist/v18.17.0/node-v18.17.0.tar.gz tar -xzf node-v18.17.0.tar.gz cd node-v18.17.0 # 编译并安装 ./configure make sudo make install
编译过程可能需要较长时间,完成后同样通过 node -v 验证安装。
部署 Node.js 应用:从开发到生产
假设你已有一个 Node.js 应用(例如基于 Express 框架),以下是将其部署到服务器的步骤:
上传应用代码
使用 scp 或 Git 将代码上传到服务器,通过 Git 克隆:
git clone https://github.com/yourusername/yourapp.git cd yourapp npm install # 安装依赖
配置生产环境
修改应用的配置文件(如 config.js),将数据库地址、端口等参数调整为生产环境值,确保应用监听正确的端口(如 3000):

// 示例:Express 监听端口
const PORT = process.env.PORT || 3000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
使用进程管理工具(如 PM2)
为了避免进程意外退出,推荐使用 PM2(Process Manager 2)管理 Node.js 应用,首先安装 PM2:
sudo npm install -g pm2
然后启动应用:
pm2 start app.js --name "yourapp" # --name 指定应用名称
PM2 会自动保持进程运行,并提供日志管理、重启等功能,常用命令:
pm2 list # 查看应用状态 pm2 logs yourapp # 查看日志 pm2 restart yourapp # 重启应用 pm2 stop yourapp # 停止应用
域名绑定:配置 DNS 和反向代理
要让用户通过域名访问你的 Node.js 应用,需要完成以下步骤:
配置 DNS 解析
在域名注册商(如阿里云、Cloudflare)的控制台中,添加 A 记录将域名指向服务器 IP 地址。
Type: A Name: yourdomain.com Value: 服务器公网 IP TTL: 600
等待 DNS 生效(通常几分钟到几小时),可通过 ping yourdomain.com 验证。
使用 Nginx 作为反向代理
Node.js 应用通常运行在非特权端口(如 3000),而 HTTP/HTTPS 服务需要 80/443 端口,通过 Nginx 反向代理,将域名请求转发到 Node.js 应用:
首先安装 Nginx:
sudo yum install nginx -y sudo systemctl start nginx sudo systemctl enable nginx
然后编辑 Nginx 配置文件(如 /etc/nginx/conf.d/yourdomain.conf):
server {
listen 80;
server_name yourdomain.com www.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;
}
}
保存配置后,测试并重启 Nginx:

sudo nginx -t sudo systemctl restart nginx
配置 HTTPS(可选)
为域名启用 HTTPS 可以提升安全性,使用 Let’s Encrypt 免费证书:
安装 Certbot:
sudo yum install certbot python3-certbot-nginx -y
获取并安装证书:
sudo certbot --nginx -d yourdomain.com -d www.yourdomain.com
按照提示完成域名验证后,Certbot 会自动配置 Nginx 支持 HTTPS。
优化与维护:确保服务稳定运行
定期更新系统与依赖
保持系统和 Node.js 应用更新是安全的关键:
sudo yum update -y npm update # 更新应用依赖
监控与日志
通过 PM2 和 Nginx 的日志排查问题:
pm2 monit # 实时监控应用状态 tail -f /var/log/nginx/access.log # 查看 Nginx 访问日志
备份与恢复
定期备份应用代码和数据库,避免数据丢失,可以使用 rsync 或云存储服务实现自动化备份。
在 CentOS 系统上部署 Node.js 应用并绑定域名,涉及环境配置、应用部署、反向代理和安全管理等多个环节,通过合理的工具选择(如 PM2、Nginx)和规范的配置流程,可以构建一个高性能、高可用的 Web 服务,无论是个人项目还是企业应用,遵循本文的步骤都能确保部署过程顺利,并为后续的扩展与维护奠定基础。



















