在CentOS上进行Node.js的分布式部署可以通过多种方式实现,以下是一个基本的步骤指南,使用PM2作为进程管理器和Nginx作为反向代理服务器来实现分布式部署。
首先,确保你的CentOS系统上已经安装了Node.js。你可以使用NodeSource的安装脚本来安装最新版本的Node.js。
# 添加NodeSource仓库
curl -sL https://rpm.nodesource.com/setup_14.x | sudo bash -
# 安装Node.js
sudo yum install -y nodejs
PM2是一个进程管理器,可以帮助你管理和监控Node.js应用程序。
# 安装PM2
sudo npm install pm2 -g
使用PM2启动你的Node.js应用程序,并配置集群模式以实现负载均衡。
# 启动应用程序并配置为集群模式
pm2 start app.js -i max
-i max
参数会根据CPU核心数自动设置工作进程的数量。
安装并配置Nginx作为反向代理服务器,将请求分发到不同的Node.js实例。
# 安装Nginx
sudo yum install -y nginx
# 启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/conf.d/default.conf
),添加以下内容:
http {
upstream node_app {
server 127.0.0.1:3000;
server 127.0.0.1:3001;
server 127.0.0.1:3002;
}
server {
listen 80;
location / {
proxy_pass http://node_app;
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;
}
}
}
在这个配置中,upstream
块定义了多个Node.js实例的地址和端口。Nginx会将请求分发到这些实例。
确保你的Node.js应用程序在不同的端口上运行。例如,如果你有三个实例,可以在不同的端口上启动它们:
# 启动第一个实例
PORT=3000 PM2_APP_NAME=app1 pm2 start app.js
# 启动第二个实例
PORT=3001 PM2_APP_NAME=app2 pm2 start app.js
# 启动第三个实例
PORT=3002 PM2_APP_NAME=app3 pm2 start app.js
使用PM2来监控和管理你的Node.js应用程序。
# 查看所有进程
pm2 list
# 查看日志
pm2 logs
# 停止某个进程
pm2 stop app1
# 重启某个进程
pm2 restart app1
通过以上步骤,你可以在CentOS上实现Node.js的分布式部署。根据实际需求,你可以调整配置和扩展更多的节点。