走啊走
加油

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

服务器价格表

以下是在阿里云 CentOS 服务器上部署微信小程序 Node.js 后端(推荐 Express + Nginx + PM2)的完整、安全、生产级教程,适用于新手,兼顾稳定性、HTTPS 和微信合规要求。


✅ 前提条件

  1. 阿里云 ECS 实例:CentOS 7/8(推荐 CentOS 7.9 或 Alibaba Cloud Linux 3,避免 CentOS 8 已停更)
  2. 已备案域名(微信小程序要求后端域名必须备案!)
  3. 微信小程序后台已配置合法的 request 合法域名(如 https://api.yourdomain.com
  4. SSH 访问权限(使用 Xshell / Termius / macOS Terminal)

🌐 一、基础环境准备(以 CentOS 7 为例)

1. 更新系统 & 安装必要工具

sudo yum update -y
sudo yum install -y epel-release curl wget git vim net-tools

2. 安装 Node.js(推荐 v18.x LTS,兼容性好)

⚠️ 不要用 yum install nodejs(版本太旧),用官方二进制或 nvm(推荐 nvm 更灵活)

✅ 方式一:使用 nvm(推荐,便于多版本管理)

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
source ~/.bashrc
nvm install 18.19.0  # 当前 LTS 版本
nvm use 18.19.0
node -v  # 应输出 v18.19.0
npm -v   # 应输出 ≥ 9.x

✅ 方式二:直接下载 Node.js 二进制(无网络X_X时)

cd /tmp
wget https://nodejs.org/dist/v18.19.0/node-v18.19.0-linux-x64.tar.xz
tar -xf node-v18.19.0-linux-x64.tar.xz
sudo mv node-v18.19.0-linux-x64 /opt/nodejs
sudo ln -sf /opt/nodejs/bin/node /usr/local/bin/node
sudo ln -sf /opt/nodejs/bin/npm  /usr/local/bin/npm

📦 二、上传并配置你的 Node.js 后端项目

1. 创建项目目录(规范路径)

sudo mkdir -p /var/www/wechat-api
sudo chown -R $USER:$USER /var/www/wechat-api
cd /var/www/wechat-api

2. 上传代码(任选其一)

  • Git 克隆(推荐)
    git clone https://github.com/yourname/wechat-backend.git .
  • SFTP 上传(使用 FileZilla / WinSCP 上传压缩包后解压):
    unzip wechat-backend.zip

3. 安装依赖 & 验证

npm install --production  # 生产环境不安装 devDependencies
# ✅ 检查 package.json 中是否含 "start": "node server.js" 或类似脚本

4. 🔑 关键配置:适配生产环境

  • 修改 config.js.env
    NODE_ENV=production
    PORT=3000
    APP_ID=wx1234567890abcdef
    APP_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    # 数据库连接地址建议用内网(如阿里云 RDS 内网地址)
    DB_HOST=rm-xxx.mysql.rds.aliyuncs.com
    DB_USER=your_user
    DB_PASSWORD=your_pass
  • 禁止在代码中硬编码敏感信息 → 使用 .env + dotenv 包(npm install dotenv

🚀 三、使用 PM2 管理进程(核心!)

1. 全局安装 PM2

npm install -g pm2

2. 启动服务(守护进程 + 自启动)

# 进入项目目录
cd /var/www/wechat-api

# 启动(指定环境变量和日志)
pm2 start app.js --name "wechat-api" 
  --env production 
  --output ./logs/out.log 
  --error ./logs/err.log 
  --log-date-format "YYYY-MM-DD HH:mm:ss"

# 查看状态
pm2 list

# 保存当前进程列表(开机自启)
pm2 startup systemd  # 按提示执行生成的命令(如 sudo env PATH=... pm2 startup ...)
pm2 save

✅ 此时服务已在 http://localhost:3000 运行(但外部不可访问)


🌍 四、配置 Nginx 反向X_X(支持 HTTPS + 微信要求)

1. 安装 Nginx

sudo yum install -y nginx
sudo systemctl enable nginx
sudo systemctl start nginx

2. 配置反向X_X(关键!)

创建配置文件:

sudo vim /etc/nginx/conf.d/wechat-api.conf
server {
    listen 80;
    server_name api.yourdomain.com;  # ✅ 替换为你的备案域名

    # 强制 HTTPS(微信要求必须 HTTPS)
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl http2;
    server_name api.yourdomain.com;

    # SSL 证书(见下一步)
    ssl_certificate /etc/letsencrypt/live/api.yourdomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/api.yourdomain.com/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384;

    # 反向X_X到 Node.js
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }

    # 微信校验文件(如有需要)
    location ~ ^/.well-known/acme-challenge/ {
        root /var/www/letsencrypt;
    }
}

3. 获取免费 HTTPS 证书(Let's Encrypt)

# 安装 certbot
sudo yum install -y certbot python3-certbot-nginx

# 临时关闭 Nginx(或先配置好 80 端口监听)
sudo systemctl stop nginx

# 获取证书(需确保域名 DNS 解析到该服务器 IP)
sudo certbot certonly --standalone -d api.yourdomain.com

# ✅ 成功后证书位于:/etc/letsencrypt/live/api.yourdomain.com/

💡 若 Nginx 已占用 80 端口,改用 --webroot 模式(推荐):

sudo mkdir -p /var/www/letsencrypt
sudo certbot certonly --webroot -w /var/www/letsencrypt -d api.yourdomain.com

4. 启动 Nginx 并测试

sudo nginx -t  # 检查语法
sudo systemctl restart nginx

✅ 访问 https://api.yourdomain.com 应返回你的 API(如 {"code":200,"msg":"OK"}


🔐 五、安全加固(阿里云必做)

项目 操作
防火墙 sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload
安全组 登录 阿里云控制台 → ECS → 安全组 → 开放 80、443 端口(仅限公网),禁止开放 3000 端口!(Node.js 仅监听 127.0.0.1)
SELinux 如遇 502 错误,临时检查:
sudo setsebool -P httpd_can_network_connect 1

📱 六、微信小程序端配置(关键!)

  1. 登录 微信公众平台
  2. 进入「开发管理」→「开发设置」→「服务器域名」
  3. request 合法域名 中添加:
    https://api.yourdomain.com

    ⚠️ 注意:

    • 必须是 https 开头
    • 不能带路径(如 https://api.xxx.com/v1 ❌)
    • 必须已备案、已解析、HTTPS 可访问
    • 本地调试可勾选「不校验合法域名」(仅开发环境)

🧪 七、验证与排错

现象 排查命令
502 Bad Gateway sudo tail -f /var/log/nginx/error.log + pm2 logs wechat-api
Connection refused curl -v http://127.0.0.1:3000(确认 Node 是否运行)+ netstat -tuln | grep :3000
HTTPS 不生效 curl -I https://api.yourdomain.com 检查状态码;用 SSL Labs 测试证书
微信请求失败 小程序 wx.request()url 必须为 https://api.yourdomain.com/login,且后端响应头含 Content-Type: application/json

✅ 附:一键部署脚本(可选)

将以下保存为 deploy.sh,修改域名后运行:

#!/bin/bash
DOMAIN="api.yourdomain.com"
PROJECT_DIR="/var/www/wechat-api"

git pull origin main
npm install --production
pm2 reload wechat-api
sudo nginx -t && sudo systemctl reload nginx
echo "✅ Deployed: https://$DOMAIN"

📚 扩展建议(进阶)

  • ✅ 日志:用 pm2 logrotate 自动轮转日志
  • ✅ 监控:pm2 monit 或接入阿里云 ARMS
  • ✅ 数据库:阿里云 RDS MySQL(开启内网访问,禁止公网)
  • ✅ 备份:定时备份 /var/www/wechat-api + 数据库(OSS 存储)
  • ✅ CI/CD:GitHub Actions 自动部署(推送即上线)

至此,你的微信小程序 Node.js 后端已在阿里云 CentOS 上稳定、安全、合规运行!
如需我帮你:

  • 生成 server.js 示例(Express + 微信登录)
  • 配置 MongoDB / MySQL 连接池
  • 添加 JWT 鉴权中间件
  • 部署 WebSocket(如客服消息)
    欢迎随时告诉我 👇

祝你开发顺利,小程序早日上线!🚀