在阿里云服务器上部署基于 PHP(后端) 和 UniApp(前端/小程序端) 的项目,通常需要将项目拆分为两个部分进行部署:
- 后端 API:使用 PHP 编写,部署在阿里云服务器。
- 前端页面:UniApp 编译后的代码上传到微信/支付宝等小程序平台(或通过 H5 形式部署到 Web 服务器)。
⚠️ 注意:小程序不能直接运行 PHP 或 Node.js 代码。小程序前端代码必须通过官方开发者工具编译后上传至对应平台审核发布。
✅ 整体架构示意
[用户] → [微信小程序 / H5页面]
↓ (HTTP请求)
[阿里云服务器: Nginx/Apache + PHP-FPM]
↓ (调用数据库)
[MySQL / Redis 等数据库服务]
🛠️ 部署步骤详解
一、准备阿里云服务器
- 购买 ECS 实例(推荐 CentOS 7+/Ubuntu 20.04+)
- 配置安全组规则:开放端口
80(HTTP)、443(HTTPS)、22(SSH) - 登录服务器,更新系统:
sudo yum update -y # CentOS sudo apt update && sudo apt upgrade -y # Ubuntu
二、安装 Web 服务器 + PHP + MySQL
以 LNMP(Linux + Nginx + MySQL + PHP)为例:
1. 安装 Nginx
sudo yum install nginx -y # CentOS
# 或
sudo apt install nginx -y # Ubuntu
sudo systemctl enable nginx
sudo systemctl start nginx
2. 安装 PHP 及常用扩展
# CentOS
sudo yum install php php-fpm php-mysqlnd php-json php-curl php-gd php-mbstring php-xml php-zip -y
# Ubuntu
sudo apt install php-fpm php-mysql php-json php-curl php-gd php-mbstring php-xml php-zip -y
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
3. 安装 MySQL
# CentOS
sudo yum install mysql-server -y
sudo systemctl enable mysqld
sudo systemctl start mysqld
# Ubuntu
sudo apt install mysql-server -y
sudo systemctl enable mysql
sudo systemctl start mysql
设置 root 密码并创建数据库和用户:
CREATE DATABASE your_db_name;
CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON your_db_name.* TO 'your_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
三、部署 PHP 后端代码
-
将你的 PHP 项目上传到服务器,例如
/var/www/html/your_project -
确保目录权限正确:
sudo chown -R nginx:nginx /var/www/html/your_project sudo chmod -R 755 /var/www/html/your_project -
配置 Nginx 支持 PHP:
编辑/etc/nginx/conf.d/default.conf或新建一个 server 块:server { listen 80; server_name your_domain.com; # 替换为你的域名或 IP root /var/www/html/your_project/public; # Laravel/Symfony 等项目通常 public 是入口 index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ .php$ { fastcgi_pass unix:/run/php/php-fpm.sock; # CentOS 路径可能不同 fastcgi_index index.php; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } -
重启 Nginx:
sudo systemctl restart nginx -
测试 PHP 是否正常工作:
在public/index.php放一个<?php phpinfo(); ?>,访问http://your_ip/info.php
四、配置 HTTPS(可选但推荐)
使用 Let’s Encrypt 免费 SSL 证书:
sudo yum install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com
按提示完成配置,自动更新 cron job 会已设置。
五、UniApp 前端部署说明
情况1:发布为微信小程序
- 使用 HBuilderX 打开 UniApp 项目
- 点击“发行” → “微信小程序”
- 输入 AppID,生成二维码或提交代码包
- 通过微信开发者工具上传代码至微信公众平台审核发布
- ❌ 不需要部署到阿里云服务器!
情况2:发布为 H5 网页版
- 在 HBuilderX 中“发行” → “网站-PC Web 或 手机H5”
- 生成静态文件(HTML/CSS/JS)
- 将这些文件上传到阿里云服务器的 Nginx 目录下(如
/var/www/html/h5) - 配置 Nginx 指向该目录即可通过浏览器访问
六、连接前后端
-
小程序/H5 前端通过
wx.request()或uni.request()调用阿里云服务器上的 PHP API -
示例:
uni.request({ url: 'https://your_domain.com/api/getData', method: 'GET', success(res) { console.log(res.data); } }); -
PHP 后端需处理跨域问题(CORS),或在 Nginx 中配置:
add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS'; add_header Access-Control-Allow-Headers 'Content-Type, Authorization';
七、其他建议
| 项目 | 建议 |
|---|---|
| 数据库备份 | 定期 mysqldump 或使用阿里云 RDS |
| 日志监控 | 查看 /var/log/nginx/error.log 和 PHP 错误日志 |
| 安全防护 | 安装 fail2ban、启用防火墙、限制 PHP 危险函数 |
| 性能优化 | 启用 OPcache、Gzip 压缩、CDN(可选) |
| 域名备案 | 如果使用自定义域名,需在工信部完成 ICP 备案 |
📦 替代方案:使用宝塔面板简化部署
如果你不想手动配置 LNMP,可以安装 宝塔 Linux 面板:
curl -sSO https://download.bt.cn/install/install_panel.sh && bash install_panel.sh
然后通过 Web 界面一键安装 Nginx、PHP、MySQL,上传代码、绑定域名、配置 SSL,非常友好。
✅ 总结
| 组件 | 部署位置 | 说明 |
|---|---|---|
| PHP 后端 API | 阿里云 ECS | 需要 Nginx + PHP-FPM + MySQL |
| UniApp 小程序前端 | 微信平台 | 通过 HBuilderX 编译上传,无需服务器 |
| UniApp H5 前端 | 阿里云 ECS | 编译后作为静态资源部署到 Nginx |
如你有具体框架(如 ThinkPHP、Laravel、原生 PHP),我可以提供更详细的配置指导。欢迎补充细节!
云知识CLOUD