奋斗
努力

想要在阿里云服务器部署小程序php和uniapp写的?

云计算

在阿里云服务器部署基于 PHP 后端 + UniApp 前端(小程序) 的项目,是一个经典且成熟的架构方案。

需要明确的是:UniApp 编译后的代码是运行在微信/支付宝等客户端上的,不需要部署在服务器上。 你真正需要部署在阿里云服务器上的,是 UniApp 编译生成的 H5 或 App 包(用于预览或混合开发) 以及 PHP 后端 API

以下是完整的部署流程和关键注意事项:

第一步:环境准备与网络配置

  1. 购买并配置云服务器 (ECS)

    • 选择操作系统:推荐 CentOS 7.9+Ubuntu 20.04/22.04 LTS
    • 配置建议:根据项目并发量,入门级推荐 2 核 4G 起步。
    • 安全组设置(至关重要)
      • 放行 80 (HTTP) 和 443 (HTTPS) 端口。
      • 如果本地调试,可能需要临时开放 SSH (22) 端口,生产环境建议限制 IP。
      • 注意:不要直接开放数据库端口(如 MySQL 的 3306),应仅允许应用服务器访问或通过内网访问。
  2. 域名与 SSL 证书

    • 购买并备案一个域名(国内服务器必须备案)。
    • 将域名解析到 ECS 的公网 IP。
    • 申请 SSL 证书:小程序接口调用强制要求 HTTPS。可以在阿里云控制台免费申请 Let’s Encrypt 或付费证书,并下载 .crt.key 文件备用。

第二步:安装运行环境 (LNMP 架构)

你需要搭建 Linux + Nginx + MySQL + PHP 环境。推荐使用宝塔面板简化操作,或者手动安装。

方案 A:使用宝塔面板 (推荐新手)

  1. 在阿里云 ECS 安装宝塔面板脚本。
  2. 登录宝塔后台,创建网站,选择 Nginx 伪静态模式。
  3. 在软件商店安装 MySQL 5.7/8.0PHP 8.x(建议版本)。
  4. 上传你的 PHP 后端代码到网站目录(例如 /www/wwwroot/your-domain.com)。
  5. 修改 php.ini 配置,开启必要的扩展(如 fileinfo, pdo_mysql, openssl 等)。

方案 B:手动安装 (适合运维人员)

# 以 Ubuntu 为例
sudo apt update
sudo apt install nginx mysql-server php-fpm php-mysql php-curl php-gd php-mbstring
sudo systemctl start nginx
sudo systemctl start mysql

第三步:部署 PHP 后端

  1. 数据库迁移

    • 在本地导出 SQL 文件 (mysqldump)。
    • 在服务器创建对应的数据库和用户。
    • 导入 SQL 文件。
    • 修改配置文件:找到 PHP 项目的数据库连接配置文件(如 .envconfig.php),将数据库地址改为 localhost,密码和用户名改为服务器上的设置。
  2. 代码上传与权限

    • 使用 FTP 工具(如 FileZilla)或 Git 拉取代码到服务器。
    • 设置权限:确保 Web 用户(通常是 wwwnginx)对 uploadsruntime 等需要写缓存或日志的目录有写入权限。
    • chown -R www:www /path/to/project
      chmod -R 755 /path/to/project
  3. 配置 Nginx (伪静态)

    • 如果是 ThinkPHP/Laravel/Laravue 等框架,需要在 Nginx 配置文件中添加伪静态规则。
    • ThinkPHP 示例:
      location / {
          if (!-e $request_filename){
              rewrite  ^(.*)$  /index.php/$1 last;
              break;
          }
      }

第四步:处理 UniApp 相关事务

这里有两个场景,请根据你的需求选择:

场景一:纯小程序发布(最常见)

  • 无需部署 UniApp 代码到服务器
  • 开发者只需在电脑端 HBuilderX 中点击“发行” -> “微信小程序”,上传代码包到微信后台。
  • 小程序通过 HTTP/HTTPS 请求你的 PHP 后端 API 获取数据。
  • 关键点:确保 PHP 后端开启了 CORS(跨域)支持,或者在 Nginx 中配置 Access-Control-Allow-Origin
    add_header Access-Control-Allow-Origin *;

场景二:H5 版或混合 App 预览

如果你需要将 UniApp 编译为 H5 部署在服务器上供浏览器访问:

  1. 在 HBuilderX 中点击“发行” -> "H5"。
  2. 将生成的 dist_build 文件夹中的内容上传到服务器的 Nginx 站点根目录(通常与 PHP 放在不同子目录,如 /h5,或者合并部署)。
  3. 配置 Nginx 路由,区分 API 请求和静态资源请求。

第五步:常见问题排查清单

  1. 跨域问题 (CORS)

    • 现象:小程序能打开,但请求接口报错 Network Error 或控制台报 CORS。
    • 解决:检查 PHP 响应头是否包含 Access-Control-Allow-Origin: https://你的域名,或者 Nginx 配置中正确设置了该 Header。
  2. HTTPS 强制跳转

    • 小程序强制要求 HTTPS。如果用户访问 HTTP 接口,微信会拦截。
    • 解决:在 Nginx 配置中强制 301 重定向到 HTTPS。
  3. 文件上传失败

    • 现象:上传图片或文件提示失败。
    • 原因:upload_max_filesizepost_max_sizephp.ini 中太小,或者 Nginx 的 client_max_body_size 限制。
    • 解决:调大这两个参数并重启服务。
  4. 时间时区不一致

    • 现象:数据库中保存的时间比实际晚 8 小时。
    • 解决:在 php.ini 中设置 date.timezone = Asia/Shanghai

总结流程图

graph TD
    A[开发者本地] -->|打包上传 | B(微信公众平台)
    C[开发者本地] -->|编译 H5/打包 App | D{分发方式}
    D -->|H5 预览 | E[阿里云 Nginx 静态目录]
    D -->|App 上架 | F[应用市场/安装包]

    G[阿里云 ECS] -->|运行 | H[PHP 后端 API]
    G -->|存储 | I[MySQL 数据库]

    B -.->|请求 API | H
    E -.->|请求 API | H
    H <-->|读写数据 | I

    style H fill:#f9f,stroke:#333,stroke-width:2px
    style I fill:#bbf,stroke:#333,stroke-width:2px

核心结论:你只需要在阿里云上部署 PHP 后端MySQL 数据库,并确保配置好 Nginx (HTTPS)CORS。UniApp 的小程序部分直接通过微信官方渠道提交审核,无需经过你的服务器。

未经允许不得转载:云服务器 » 想要在阿里云服务器部署小程序php和uniapp写的?