速卖通素材
奋斗

使用阿里云CentOS服务器部署微信小程序Node.js后端教程?

服务器

在阿里云 CentOS 服务器上部署微信小程序 Node.js 后端,通常涉及环境搭建、代码部署、服务管理、网络配置(安全组)以及域名解析等关键步骤。

以下是一份详细的操作教程,假设你使用的是 CentOS 7/8 系统,并计划使用 PM2 来管理 Node.js 进程(这是生产环境最常用的方式)。


第一阶段:准备工作

  1. 购买与初始化

    • 登录阿里云控制台,购买一台 ECS 实例(推荐选择 CentOS 7.9 或 CentOS Stream 8)。
    • 设置好 root 密码或 SSH 密钥对。
    • 记录服务器的 公网 IP 地址。
  2. 连接服务器
    使用终端工具(如 Windows 的 PowerShell/CMD,Mac/Linux 的 Terminal,或 Xshell、SecureCRT)通过 SSH 连接:

    ssh root@你的服务器公网IP

第二阶段:安装基础运行环境

我们需要安装 Node.js、NPM 和 PM2。推荐使用 nvm (Node Version Manager) 来管理版本,避免权限问题。

1. 安装 NVM 和 Node.js

# 安装 curl (如果系统没有)
yum install -y curl

# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash

# 重新加载环境变量 (或者直接关闭 SSH 重连)
source ~/.bashrc

# 安装最新稳定版 Node.js (例如 v18.x)
nvm install 18
nvm use 18
nvm alias default 18

# 验证安装
node -v
npm -v

2. 安装 PM2 (进程管理器)

PM2 用于在生产环境守护 Node.js 应用,防止崩溃后无法自动重启。

npm install pm2 -g
pm2 --version

3. 安装 Git (用于拉取代码)

yum install -y git

第三阶段:代码部署

你可以选择将代码上传到服务器,或者直接从 GitHub/GitLab 拉取。这里演示从远程仓库拉取的方式。

1. 创建项目目录

mkdir -p /opt/wechat-nodejs
cd /opt/wechat-nodejs

2. 拉取代码

git clone <你的代码仓库地址> .
# 注意最后的点 "." 表示克隆到当前目录

3. 安装依赖

确保你的项目中包含 package.json。

# 建议先查看 package.json 中的 scripts,确认启动命令通常是 "start" 或 "dev"
npm install

注意:如果依赖包较多,建议配置淘宝镜像提速:npm config set registry https://registry.npmmirror.com

4. 配置环境变量

小程序后端通常需要配置数据库密码、Secret Key 等敏感信息。不要直接硬编码在代码中。
创建 .env 文件:

vi .env

内容示例:

NODE_ENV=production
PORT=3000
DB_HOST=localhost
DB_USER=root
DB_PASS=your_password
WECHAT_APPID=你的小程序AppID
WECHAT_SECRET=你的小程序AppSecret

保存退出 (:wq)。


第四阶段:启动服务

使用 PM2 启动项目。假设你的入口文件是 index.js 或 app.js。

# 启动命令格式:pm2 start <入口文件> --name <项目名称>
pm2 start index.js --name my-wechat-backend

# 保存当前进程列表,以便重启时自动恢复
pm2 save

# 查看状态
pm2 list

此时,你的 Node.js 服务应该已经在后台运行了。


第五阶段:网络与安全组配置 (关键步骤)

微信小程序必须通过 HTTPS 访问,且服务器端口必须开放。

1. 开放防火墙 (Firewalld)

CentOS 默认开启 firewalld,需要放行 Node.js 端口(假设是 3000)和 HTTPS (443)。

# 允许 3000 端口
firewall-cmd --zone=public --add-port=3000/tcp --permanent
# 允许 443 端口 (如果你打算自己配 SSL)
firewall-cmd --zone=public --add-port=443/tcp --permanent

# 重载防火墙配置
firewall-cmd --reload

2. 配置阿里云安全组

登录 阿里云 ECS 控制台 -> 云服务器 ECS -> 实例列表 -> 点击你的实例 ID -> 更多 -> 网络和安全组 -> 安全组配置。

  • 点击“配置规则” -> “添加入方向规则”。
  • 协议类型:TCP
  • 端口范围:3000/3000 (或者你实际使用的端口)
  • 授权对象:0.0.0.0/0 (允许所有 IP 访问,生产环境可限制为特定 IP)
  • 描述:Node.js 后端端口
  • 策略:允许

重要提示:微信小程序要求接口必须是 HTTPS。

  • 方案 A (推荐):使用阿里云负载均衡 (SLB) + 证书,或者在服务器前挂 Nginx 反向X_X并配置 SSL 证书。
  • 方案 B (快速测试):如果只是为了调试,可以使用 Let’s Encrypt 免费证书配合 Nginx。

第六阶段:配置 Nginx 与 HTTPS (生产环境必备)

微信小程序强制要求 HTTPS。你需要安装 Nginx 并配置 SSL 证书。

1. 安装 Nginx

yum install -y nginx
systemctl start nginx
systemctl enable nginx

2. 获取 SSL 证书

你可以申请免费的 Let’s Encrypt 证书,或者在阿里云云盾控制台购买/申请免费证书。
假设你已经拿到了 fullchain.pem 和 privkey.pem 文件,上传到 /etc/nginx/ssl/ 目录下。

3. 配置 Nginx

编辑配置文件 /etc/nginx/conf.d/wechat.conf (需新建该文件):

server {
    listen 443 ssl http2;
    server_name your-domain.com; # 替换为你的域名

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    # 优化配置
    ssl_session_timeout 5m;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers HIGH:!aNULL:!MD5;

    location / {
        proxy_pass http://localhost:3000; # 转发到 Node.js 端口
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

        # WebSocket 支持 (如果需要聊天功能)
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
    }
}

# 强制 HTTP 跳转 HTTPS
server {
    listen 80;
    server_name your-domain.com;
    return 301 https://$server_name$request_uri;
}

4. 重载 Nginx

nginx -t  # 检查配置是否正确
systemctl reload nginx

第七阶段:小程序端配置

  1. 修改请求地址:将小程序代码中的 request 请求地址改为 https://your-domain.com。
  2. 配置服务器域名:
    • 登录 微信公众平台。
    • 进入 开发 -> 开发管理 -> 开发设置。
    • 找到 服务器域名 区域。
    • 在 request 合法域名 中添加你的域名(例如 https://your-domain.com)。
    • 注意:未备案的域名无法在微信后台添加,如果是个人主体小程序,建议使用已备案的域名。

第八阶段:验证与维护

  1. 测试连通性:
    在本地浏览器访问 https://your-domain.com/api/health (假设你有健康检查接口),确保能通。
  2. 查看日志:
    pm2 logs my-wechat-backend
  3. 定时备份:
    定期备份数据库和代码目录。

常见问题排查

  • 连接被拒绝:检查阿里云安全组是否放行了 3000 端口;检查 firewall-cmd 是否生效。
  • 微信报错“不在以下 request 合法域名列表中”:检查微信公众平台后台是否添加了域名,且域名是否以 https:// 开头。
  • SSL 证书过期:如果是 Let’s Encrypt 证书,记得配置 certbot 自动续期。
  • 内存溢出:如果 Node.js 占用过高,可在 package.json 中增加 --max-old-space-size 参数启动 PM2。

通过以上步骤,你就完成了一个标准的阿里云 CentOS + Node.js + 微信小程序后端的部署流程。

未经允许不得转载:轻量云Cloud » 使用阿里云CentOS服务器部署微信小程序Node.js后端教程?