Node项目部署到阿里云服务器

一、服务器基础准备

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权限,有效降低了安全风险。

  1. 安装分布式版本管理系统Git。

    Alibaba Cloud Linux 3/2、CentOS 7.x

    bash 复制代码
    sudo yum install git -y
  2. 使用Git将NVM的源码克隆到本地的~/.nvm目录下,并检查最新版本。

    bash 复制代码
    git clone https://gitee.com/mirrors/nvm.git ~/.nvm && cd ~/.nvm && git checkout `git describe --abbrev=0 --tags`
  3. 依次运行以下命令,配置NVM的环境变量。

    bash 复制代码
    sudo sh -c 'echo ". ~/.nvm/nvm.sh" >> /etc/profile'
    source /etc/profile
  4. 运行以下命令,修改npm镜像源为阿里云镜像,以加快Node.js下载速度。

    bash 复制代码
    export NVM_NODEJS_ORG_MIRROR=https://npmmirror.com/mirrors/node
  5. 运行以下命令,查看Node.js版本。

    bash 复制代码
    nvm list-remote
  6. 安装多个Node.js版本。

    Alibaba Cloud Linux 2 和 CentOS 7.x 仅支持 Node.js 17.x 及以下版本,例如需要安装 v17.9.1,则执行nvm install v17.9.1。

    bash 复制代码
    nvm install v17.9.1
  7. 查看已安装的Node.js版本。

    bash 复制代码
    nvm ls

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

  8. 切换版本

    您可以使用nvm use <版本号>命令切换Node.js的版本。 例如,切换至Node.js v23.3.0版本的命令为nvm use v23.3.0。

2. 安装PM2(进程管理)

bash 复制代码
sudo npm install -g pm2

3. 安装Nginx(反向代理)

bash 复制代码
sudo yum install -y nginx

# 启动Nginx
sudo systemctl start nginx
sudo systemctl enable nginx #开机自动启动

三、部署Node.js项目

假设有两个项目:

1. 上传项目代码

bash 复制代码
# 创建项目目录
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启动项目

bash 复制代码
# 启动项目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解析控制台添加子域名解析:

2. 配置Nginx反向代理

为项目1创建配置 (api1.example.com)

nginx 复制代码
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)

nginx 复制代码
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

bash 复制代码
nginx -t
systemctl restart nginx

五、维护与监控

1. PM2常用命令

bash 复制代码
pm2 list          # 查看所有应用
pm2 restart api1  # 重启特定应用
pm2 stop api2     # 停止应用
pm2 delete api1   # 删除应用

2. Nginx常用命令

bash 复制代码
systemctl restart nginx  # 重启Nginx
nginx -t                # 测试配置
journalctl -u nginx     # 查看Nginx系统日志

3. 查看服务器资源

bash 复制代码
top
htop
df -h
free -m

通过以上步骤,你可以在CentOS 7.9服务器上部署多个Node.js项目,并通过不同的子域名访问它们。每个项目都运行在独立的端口上,通过Nginx反向代理和PM2进程管理实现稳定运行。

相关推荐
涡能增压发动积20 小时前
同样的代码循环 10次正常 循环 100次就抛异常?自定义 Comparator 的 bug 让我丢尽颜面
后端
Wenweno0o20 小时前
0基础Go语言Eino框架智能体实战-chatModel
开发语言·后端·golang
于慨20 小时前
Lambda 表达式、方法引用(Method Reference)语法
java·前端·servlet
石小石Orz20 小时前
油猴脚本实现生产环境加载本地qiankun子应用
前端·架构
swg32132120 小时前
Spring Boot 3.X Oauth2 认证服务与资源服务
java·spring boot·后端
从前慢丶20 小时前
前端交互规范(Web 端)
前端
tyung20 小时前
一个 main.go 搞定协作白板:你画一笔,全世界都看见
后端·go
gelald20 小时前
SpringBoot - 自动配置原理
java·spring boot·后端
CHU72903520 小时前
便捷约玩,沉浸推理:线上剧本杀APP功能版块设计详解
前端·小程序
GISer_Jing20 小时前
Page-agent MCP结构
前端·人工智能