在阿里云服务器部署由 PHP 后端 + UniApp(小程序端) 组成的应用,是一个经典且成熟的架构方案。
需要明确的是:UniApp 编译后的小程序代码是运行在微信/支付宝等宿主环境中的,不需要部署到阿里云服务器。你需要部署的只是PHP 后端 API 接口以及静态资源(如图片、视频)。
以下是完整的部署流程指南:
第一步:准备工作
-
购买与配置阿里云 ECS 实例
- 选择操作系统:推荐 Ubuntu 20.04/22.04 或 CentOS 7.9(两者皆可,Ubuntu 社区教程更多)。
- 配置建议:开发测试阶段,
2 核 2G或2 核 4G足够;生产环境建议根据并发量调整。 - 安全组设置:务必开放以下端口:
80(HTTP) /443(HTTPS):Web 服务访问。22(SSH):远程连接。3306(MySQL):强烈建议不要直接对公网开放,仅允许本地或特定 IP 访问,或者通过内网白名单控制。
-
准备代码与环境依赖
- PHP 项目:确保你的 PHP 代码中数据库配置、API 域名已修改为阿里云服务器的公网 IP 或域名。
- UniApp 项目:在 HBuilderX 中点击“发行” -> “原生小程序”,生成对应的包(如微信小程序包)。注意:小程序端的
request请求地址需指向你服务器上的 API 域名。 - 域名与 SSL:
- 购买并备案一个域名(国内服务器必须备案)。
- 在阿里云控制台申请免费 SSL 证书(Let’s Encrypt 或阿里云自带),用于 HTTPS 加密(微信小程序强制要求 HTTPS)。
第二步:搭建运行环境 (LNMP/LAMP)
登录阿里云服务器终端(使用 Xshell, Putty 或 Mac/Linux 终端):
1. 安装 Nginx (Web 服务器)
# Ubuntu 示例
sudo apt update
sudo apt install nginx -y
# CentOS 示例
sudo yum install nginx -y
2. 安装 PHP 及扩展
根据你的 PHP 版本需求安装(以 PHP 8.1 为例):
# Ubuntu
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y
# CentOS (需先安装 Remi 源)
sudo yum install php php-fpm php-mysqlnd php-curl php-gd php-mbstring -y
3. 安装 MySQL/MariaDB
# Ubuntu
sudo apt install mysql-server -y
sudo mysql_secure_installation # 设置 root 密码
# CentOS
sudo yum install mariadb-server -y
sudo systemctl start mariadb
sudo mysql_secure_installation
4. 配置 Nginx 与 PHP 联动
编辑 Nginx 配置文件(通常在 /etc/nginx/sites-available/default 或 /etc/nginx/conf.d/your_domain.conf):
server {
listen 80;
server_name your-domain.com; # 替换为你的域名
root /var/www/html/your-project; # 替换为你的项目根目录
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ .php$ {
fastcgi_pass unix:/run/php/php8.1-fpm.sock; # 注意 socket 路径可能因版本不同
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
重启 Nginx 使配置生效: sudo systemctl restart nginx
第三步:部署代码与数据
1. 上传 PHP 后端代码
可以使用 scp、FTP (FileZilla) 或 Git 拉取代码到服务器指定目录。
# 例如将本地项目复制到服务器
scp -r ./my-php-api root@your-ip:/var/www/html/my-project
注意:确保目录权限正确,通常设置为 www-data:www-data。
2. 初始化数据库
进入 MySQL 命令行创建数据库和用户:
CREATE DATABASE uniapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'uniapp_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON uniapp_db.* TO 'uniapp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
然后导入你的 .sql 备份文件:
mysql -u root -p uniapp_db < backup.sql
3. 修改代码配置
检查 PHP 项目中的数据库配置文件(如 .env 或 config.php),填入刚才创建的数据库信息。
第四步:配置 UniApp 小程序端
这是最容易出错的一步,请务必确认:
-
修改请求域名:
在 UniApp 项目中,找到网络请求的基础地址(通常是BASE_URL或apiUrl),将其修改为https://your-domain.com/api/。- 注意:必须带
https,且不能包含端口号(除非非标准端口)。
- 注意:必须带
-
配置合法域名:
登录 微信公众平台 -> 开发管理 -> 开发设置 -> 服务器域名。- 在
request合法域名一栏,添加你的 API 域名(如https://your-domain.com)。 - 如果不配置此步骤,小程序模拟器能跑,但真机调试会报错 "request 非法"。
- 在
-
重新编译发布:
在 HBuilderX 中,点击“发行” -> “原生小程序” -> “微信小程序”。
上传代码至微信后台审核发布。
第五步:进阶优化与运维
-
配置 HTTPS (SSL)
虽然上面提到了,但具体操作推荐使用 Certbot 自动续期:sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d your-domain.com这将自动配置 Nginx 并重定向 HTTP 到 HTTPS。
-
开启 Opcache 和 Redis (可选)
如果并发较高,建议安装 Redis 缓存热点数据,并在 PHP 中开启 Opcache 提升执行效率。 -
定时任务
如果 PHP 代码中有需要定期执行的脚本(如清理过期数据、发送通知),需要在服务器 crontab 中添加计划任务:crontab -e # 添加一行:0 2 * * * php /var/www/html/cron-job.php -
日志监控
定期检查 Nginx 的error.log和 PHP 的错误日志,排查线上问题。
总结流程图
graph TD
A[阿里云 ECS] --> B(安装 LNMP 环境)
B --> C{部署 PHP 后端}
C --> D[上传代码 & 导入数据库]
D --> E[Nginx 配置 & SSL 证书]
F[开发者电脑] --> G(HBuilderX 编写 UniApp)
G --> H[修改 API 请求地址为 https://域名]
H --> I[配置微信后台服务器域名]
I --> J[编译并上传小程序]
E -.-> K[用户访问]
J -.-> K
K --> L[小程序发起 HTTPS 请求]
L --> M[阿里云 PHP 接口处理]
M --> N[返回 JSON 数据]
按照以上步骤操作,你就可以成功在阿里云上部署好这套系统了。如果在具体某个环节(如 Nginx 配置报错、微信域名校验失败)遇到问题,欢迎继续提问!
轻量云Cloud