走啊走
奋斗

如何在阿里云Linux服务器上部署Node.js小程序后端?

服务器价格表

在阿里云 Linux 服务器上部署 Node.js 小程序后端,通常包含以下关键步骤。以下以 Ubuntu 20.04/22.04CentOS 7/8 为例(阿里云 ECS 默认镜像多为 Ubuntu/CentOS),假设你已购买并登录服务器:


✅ 一、基础环境准备

1. 连接服务器

ssh root@<你的服务器公网IP>
# 或使用密钥登录
ssh -i /path/to/key.pem root@<公网IP>

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

# Ubuntu/Debian
sudo apt update && sudo apt upgrade -y
sudo apt install curl git wget -y

# CentOS/RHEL
sudo yum update -y
sudo yum install curl git wget -y

3. 安装 Node.js(推荐 LTS 版本)

使用 NodeSource 官方源确保版本较新:

Ubuntu/Debian(以 Node.js 20.x 为例):

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs
node -v   # 应输出 v20.x.x
npm -v    # 应输出对应 npm 版本

CentOS/RHEL:

curl -fsSL https://rpm.nodesource.com/setup_20.x | sudo bash -
sudo yum install -y nodejs
node -v
npm -v

💡 若需特定版本(如 18.x),将 setup_20.x 改为 setup_18.x 即可。


✅ 二、项目部署准备

1. 上传代码到服务器

方式一:Git 拉取(推荐)

git clone https://github.com/your-username/your-miniapp-backend.git
cd your-miniapp-backend

方式二:SCP 上传本地项目

scp -r ./your-project-folder/* root@<服务器IP>:/root/your-project

2. 安装依赖

npm install --production  # 生产环境只装 prod 依赖
# 或
npm ci                    # 若有 package-lock.json,更稳定

3. 配置环境变量(关键!)

创建 .env 文件(切勿提交到 Git):

NODE_ENV=production
PORT=3000
DB_HOST=localhost
DB_USER=admin
DB_PASS=your_secure_password
JWT_SECRET=your_random_secret_key_here
APP_ID=wx1234567890abcdef  # 微信小程序 AppID
APP_SECRET=your_app_secret

🔐 安全建议:

  • 敏感信息用阿里云 KMS 或 Secrets Manager 管理更佳
  • 设置 .env 权限:chmod 600 .env

✅ 三、启动服务(推荐 PM2 进程守护)

1. 安装 PM2

npm install -g pm2
pm2 startup      # 生成 systemd 命令(按提示执行)

2. 启动应用

pm2 start app.js --name miniapp-backend
# 或指定入口文件(如 server.js / index.js)
pm2 start server.js --name miniapp-backend

# 查看状态
pm2 list
pm2 logs miniapp-backend

3. 保存进程列表(开机自启)

pm2 save
pm2 startup        # 再次确认生效

✅ 四、配置防火墙与域名(可选但重要)

1. 开放端口(如 3000)

# 阿里云控制台操作(推荐):
# 登录阿里云 → ECS → 实例 → 安全组 → 添加入方向规则
# 协议:TCP, 端口范围:3000/3000, 授权对象:0.0.0.0/0(或仅信任 IP)

# 或命令行(若已安装 firewalld):
sudo firewall-cmd --permanent --add-port=3000/tcp
sudo firewall-cmd --reload

2. 反向X_X + HTTPS(生产必备)

使用 Nginx 作为反向X_X,配合 Let’s Encrypt 自动签发证书:

安装 Nginx

sudo apt install nginx certbot python3-certbot-nginx  # Ubuntu
# 或
sudo yum install nginx certbot python3-certbot-nginx  # CentOS

配置 /etc/nginx/sites-available/miniapp-backend

server {
    listen 80;
    server_name your-domain.com;

    location / {
        proxy_pass http://localhost: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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

启用并测试:

sudo ln -s /etc/nginx/sites-available/miniapp-backend /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx

申请 SSL 证书

sudo certbot --nginx -d your-domain.com
# 按提示输入邮箱,自动完成配置

✅ 完成后访问 https://your-domain.com 即安全可用。


✅ 五、小程序端配置注意事项

  • 在微信公众平台后台:开发 → 开发设置 → 服务器域名
    • 添加 https://your-domain.com 到「请求合法域名」
    • 确保该域名已通过 HTTPS 且证书有效(Let’s Encrypt 免费且自动续期)

✅ 六、运维建议

项目 建议
日志监控 pm2 logs, 接入阿里云 SLS(日志服务)
健康检查 编写 /health 接口,Nginx 可配置 upstream health check
自动重启 PM2 已支持崩溃自动重启;结合 systemd 双重保障
备份 定期备份数据库 + 代码(阿里云快照 / OSS 备份)
监控告警 使用阿里云云监控 + 钉钉/企业微信 webhook 报警

需要我提供:

  • 📦 完整的 Dockerfile + docker-compose.yml 部署方案?
  • 🔧 针对 Express/Koa/NestJS 的示例项目结构?
  • 🛡️ 如何集成阿里云 RDS MySQL / Redis 的示例配置?

欢迎告诉我你的技术栈和具体需求,我可以进一步定制方案!