Node项目部署到阿里云服务器
与包管理器安装相比,NVM不受系统仓库版本限制,确保获取最新Node.js版本;更重要的是,NVM支持多版本管理,方便切换,且安装的Node.js位于用户家目录,无需sudo权限,有效降低了安全风险。Alibaba Cloud Linux 2 和 CentOS 7.x 仅支持 Node.js 17.x 及以下版本,例如需要安装 v17.9.1,则执行nvm install v17.9.1。通过以上
一、服务器基础准备
1. 服务器配置
- 购买云服务器(阿里云)
- 选择适合的操作系统(CentOS 7.9)
- 开放安全组端口:
22(SSH)、80(HTTP)、443(HTTPS)、你的应用端口(如3000)
2. 本地项目准备
- 确保项目在本地运行正常
- 清理
node_modules和测试文件
二、环境安装与配置
1. 安装Node.js
在Linux上部署Node.js,本文选择使用NVM(Node Version Manager)。与包管理器安装相比,NVM不受系统仓库版本限制,确保获取最新Node.js版本;与下载预编译二进制包相比,NVM省去了繁琐的环境变量配置;与从源代码编译安装相比,NVM大大缩短了安装时间,且对用户编译技能无要求。更重要的是,NVM支持多版本管理,方便切换,且安装的Node.js位于用户家目录,无需sudo权限,有效降低了安全风险。
-
安装分布式版本管理系统Git。
Alibaba Cloud Linux 3/2、CentOS 7.x
sudo yum install git -y -
使用Git将NVM的源码克隆到本地的~/.nvm目录下,并检查最新版本。
git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags` -
依次运行以下命令,配置NVM的环境变量。
sudo sh -c 'echo ". ~/.nvm/nvm.sh" >> /etc/profile' source /etc/profile -
运行以下命令,修改npm镜像源为阿里云镜像,以加快Node.js下载速度。
export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node -
运行以下命令,查看Node.js版本。
nvm list-remote -
安装多个Node.js版本。
Alibaba Cloud Linux 2 和 CentOS 7.x 仅支持 Node.js 17.x 及以下版本,例如需要安装 v17.9.1,则执行nvm install v17.9.1。
nvm install v17.9.1

-
查看已安装的Node.js版本。
nvm ls返回结果如下所示,表示当前已安装v22.11.0、v23.3.0两个版本,正在使用的是v22.11.0版本。

-
切换版本
您可以使用nvm use <版本号>命令切换Node.js的版本。 例如,切换至Node.js v23.3.0版本的命令为nvm use v23.3.0。
2. 安装PM2(进程管理)
sudo npm install -g pm2
3. 安装Nginx(反向代理)
sudo yum install -y nginx # 启动Nginx sudo systemctl start nginx sudo systemctl enable nginx #开机自动启动
三、部署Node.js项目
假设有两个项目:
- 项目1:端口3000,子域名api1.example.com
- 项目2:端口4000,子域名api2.example.com
1. 上传项目代码
# 创建项目目录 mkdir -p /var/www/api1 /var/www/api2 # 上传代码(使用git) cd /var/www/api1 git clone your-repo-url npm install cd /var/www/api2 git clone your-second-repo-url npm install
2. 使用PM2启动项目
# 启动项目1 cd /var/www/api1 pm2 start app.js --name "api1" -i max --watch # 启动项目2 cd /var/www/api2 pm2 start app.js --name "api2" -i max --watch # 保存PM2配置 pm2 save # 设置PM2开机启动 pm2 startup # 执行输出的命令(会显示类似下面的命令) # sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup centos -u root --hp /root
四、配置子域名和Nginx反向代理
1. 域名解析准备
在阿里云DNS解析控制台添加子域名解析:
- api1.example.com → 服务器IP
- api2.example.com → 服务器IP
2. 配置Nginx反向代理
为项目1创建配置 (api1.example.com)
server { listen 80; server_name api1.example.com; location / { proxy_pass http://localhost:3000; # 假设项目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; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
为项目2创建配置 (api2.example.com)
server { listen 80; server_name api2.example.com; location / { proxy_pass http://localhost:4000; # 假设项目2运行在4000端口 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; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
3. 测试并重启Nginx
nginx -t systemctl restart nginx
五、维护与监控
1. PM2常用命令
pm2 list # 查看所有应用 pm2 restart api1 # 重启特定应用 pm2 stop api2 # 停止应用 pm2 delete api1 # 删除应用
2. Nginx常用命令
systemctl restart nginx # 重启Nginx nginx -t # 测试配置 journalctl -u nginx # 查看Nginx系统日志
3. 查看服务器资源
top htop df -h free -m
通过以上步骤,你可以在CentOS 7.9服务器上部署多个Node.js项目,并通过不同的子域名访问它们。每个项目都运行在独立的端口上,通过Nginx反向代理和PM2进程管理实现稳定运行。
更多推荐
所有评论(0)