在阿里云服务器部署基于 PHP 后端 + UniApp 前端的小程序,是一个经典且成熟的架构方案。UniApp 编译后生成的是小程序代码(如微信原生代码),而 PHP 负责处理业务逻辑和数据库交互。
以下是完整的部署流程指南,分为环境准备、后端部署、前端发布、域名与证书配置四个核心步骤:
第一步:阿里云服务器环境准备
-
购买与初始化
- 在阿里云控制台购买一台 ECS 实例(推荐 CentOS 7/8 或 Ubuntu 20.04+)。
- 安全组配置:务必放行以下端口:
80(HTTP)443(HTTPS,小程序强制要求 HTTPS)22(SSH,用于远程连接)
- 安装基础依赖:
git,wget,curl等。
-
搭建运行环境 (LNMP)
你需要安装 Nginx (Web 服务器)、MySQL (数据库)、PHP。以 Ubuntu 为例:# 更新源 sudo apt update # 安装 Nginx, MySQL, PHP-FPM 及相关扩展 sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-json php-gd -y # 启动服务并设置开机自启 sudo systemctl start nginx sudo systemctl enable nginx sudo systemctl start mysql sudo systemctl enable mysql注意:安装 PHP 时建议安装常用扩展(如
php-mbstring,php-xml,php-zip等,视你的项目需求而定)。 -
配置 Nginx 虚拟主机
创建站点配置文件(例如/etc/nginx/sites-available/myapp):server { listen 80; server_name your_domain.com; # 替换为你的域名 root /var/www/html; # 你的项目根目录 index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass unix:/run/php/php-fpm.sock; # 根据实际版本调整路径 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } # 禁止访问隐藏文件 location ~ /. { deny all; } }启用配置并重启 Nginx:
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/ sudo rm /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl restart nginx
第二步:部署 PHP 后端代码
-
上传代码
- 将你的 PHP 项目代码上传到服务器指定目录(如
/var/www/html)。 - 可以使用
scp、rsync或 Git 拉取:cd /var/www/html git clone <你的代码仓库地址> .
- 将你的 PHP 项目代码上传到服务器指定目录(如
-
配置数据库
- 登录 MySQL:
sudo mysql -u root -p - 创建数据库和用户,导入 SQL 文件:
CREATE DATABASE myapp_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; GRANT ALL PRIVILEGES ON myapp_db.* TO 'myapp_user'@'localhost' IDENTIFIED BY 'strong_password'; FLUSH PRIVILEGES; - 修改项目中的
.env文件或数据库配置文件,填入新的数据库账号密码。
- 登录 MySQL:
-
文件权限修复
确保 Web 服务器用户(通常是www-data)有写入权限(如果项目需要上传文件或缓存):chown -R www-data:www-data /var/www/html chmod -R 755 /var/www/html
第三步:部署 UniApp 前端(小程序端)
这里有一个关键概念:UniApp 开发完成后,是编译成“小程序包”的,而不是直接放在服务器上运行的 HTML。
-
本地编译
- 在你的开发电脑上打开 HBuilderX。
- 选择
发行->小程序->微信小程序。 - 等待编译完成,会生成一个包含
miniprogram文件夹的压缩包。
-
上传至微信公众平台
- 登录 微信公众平台。
- 进入“开发管理” -> “开发设置”。
- 点击“上传代码”,选择刚才编译好的文件夹。
- 重要:填写“服务器域名”时,必须填入你阿里云服务器的 HTTPS 域名(见第四步)。
-
关于 H5 版(可选)
- 如果你还需要 UniApp 生成的 H5 网页版,可以将 HBuilderX 编译出的
dist目录下的内容,同样上传到阿里云服务器的/var/www/html目录中。此时 Nginx 会直接提供静态页面服务。
- 如果你还需要 UniApp 生成的 H5 网页版,可以将 HBuilderX 编译出的
第四步:域名备案与 HTTPS 配置(小程序必做)
微信小程序强制要求所有网络请求必须是 HTTPS,且域名必须在微信后台配置白名单。
-
域名备案
- 如果你的域名解析到了中国大陆境内的阿里云服务器,必须先进行 ICP 备案。
- 在阿里云控制台提交备案申请,审核通过后(通常需 10-20 天),才能使用 80/443 端口。
-
申请 SSL 证书
- 在阿里云控制台搜索“SSL 证书”,购买免费版(如 Let’s Encrypt 或云盾免费证书)或付费版。
- 下载证书文件(
.crt和.key)。
-
配置 Nginx 开启 HTTPS
修改 Nginx 配置文件,添加 HTTPS 监听:server { listen 443 ssl http2; server_name your_domain.com; ssl_certificate /path/to/your/cert.pem; ssl_certificate_key /path/to/your/key.key; ssl_session_timeout 5m; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers HIGH:!aNULL:!MD5; root /var/www/html; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass unix:/run/php/php-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } # 可选:强制 HTTP 跳转 HTTPS server { listen 80; server_name your_domain.com; return 301 https://$server_name$request_uri; }保存后测试并重启 Nginx:
sudo nginx -t && sudo systemctl reload nginx -
微信后台配置
- 回到微信公众平台 -> 开发管理 -> 开发设置。
- 在“服务器域名”栏目中,将你配置的 HTTPS 域名添加到 request合法域名 列表中。
- 如果是 H5 模式,还需配置 webview 合法域名。
常见问题排查
- 跨域问题 (CORS):
小程序调用接口时,PHP 后端需要在响应头中添加允许跨域的 Header(虽然小程序对同源策略不如浏览器严格,但为了规范,建议配置):// 在 PHP 入口文件顶部 header("Access-Control-Allow-Origin: *"); // 生产环境建议指定具体域名 header("Access-Control-Allow-Methods: GET, POST, OPTIONS"); header("Access-Control-Allow-Headers: Content-Type, Authorization"); - 403 Forbidden:
检查 Nginx 配置文件中的root路径是否正确,以及chown权限是否赋予给了www-data。 - 无法连接数据库:
检查防火墙是否拦截了内网端口,或者 MySQL 的bind-address是否限制为127.0.0.1。 - HBuilderX 预览报错:
如果在 HBuilderX 中使用真机调试,确保手机和电脑在同一局域网,且服务器域名已正确配置在微信后台。
按照以上步骤操作,你就可以成功在阿里云上部署一套完整的 PHP + UniApp 小程序系统了。
CLOUD技术博