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

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

需要明确的是:UniApp 编译后的代码本质上是 H5、小程序原生包或 App 包

  • 如果你开发的是微信小程序/支付宝小程序:前端代码由微信/支付宝平台托管,你只需要部署 PHP 后端 API。
  • 如果你开发的是H5 版本(通过浏览器访问):你需要将 UniApp 编译出的 dist 目录上传到服务器进行托管。

以下是完整的部署流程指南:

第一步:准备阿里云环境

  1. 购买与配置

    • 在阿里云控制台购买一台 ECS 云服务器(推荐 CentOS 7.9+ 或 Ubuntu 20.04+)。
    • 安全组配置:务必开放以下端口,否则无法访问:
      • 80 (HTTP)
      • 443 (HTTPS,如需启用加密)
      • 22 (SSH 远程连接)
      • 3306 (MySQL,仅允许内网或特定 IP,不建议直接对公网开放)
  2. 安装基础软件栈 (LNMP)
    推荐使用宝塔面板(Baota)简化操作,或者手动安装。这里以宝塔面板为例(适合新手),若习惯命令行可参考下方的“手动安装”部分。

    • 宝塔面板安装命令 (以 CentOS 为例):
      yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh ed8484bec
    • 登录面板后,在“软件商店”一键安装:
      • Nginx (Web 服务器)
      • MySQL 5.7/8.0 (数据库)
      • PHP (建议 7.4 或 8.1,视你的项目依赖而定)
      • Redis (可选,用于缓存)

第二步:部署 PHP 后端

假设你的 PHP 项目代码位于本地电脑,文件结构通常包含 index.php, config.php, vendor 等。

  1. 创建网站

    • 在宝塔面板点击【网站】->【添加站点】。
    • 输入域名(需先在阿里云 DNS 解析该域名指向你的服务器 IP)。
    • 选择对应的 PHP 版本(如 PHP 8.1)。
    • 勾选“创建数据库”,设置好用户名和密码。
  2. 上传代码

    • 使用 FTP 工具(如 FileZilla)或宝塔的【文件】功能,将你的 PHP 后端代码上传到网站根目录(通常是 /www/wwwroot/你的域名/public 或类似路径)。
    • 注意:确保 .htaccess (Nginx 下为伪静态规则) 已正确配置。如果是 Laravel 框架,记得修改 public 目录下的路由入口。
  3. 配置数据库连接

    • 修改项目中的数据库配置文件(如 .envconfig/database.php)。
    • 填入刚才创建的数据库名、用户名、密码。
    • 主机地址:如果在同一台服务器,通常填 localhost127.0.0.1;如果数据库分离,则填内网 IP。
  4. 运行迁移 (如有)

    • 如果使用了 Laravel 等框架,需通过 SSH 进入服务器执行:
      php artisan migrate --force
      php artisan config:cache

第三步:部署 UniApp 前端

根据你想运行的形态,分为两种情况:

情况 A:部署为 H5 网页版(用户通过浏览器访问)

  1. 本地打包

    • 在本地 IDE(HBuilderX)中,选择“发行” -> “网站”。
    • 选择 "H5" 类型,生成 dist 文件夹。
    • 这个文件夹里包含了 index.html, js, css, images 等静态资源。
  2. 上传至服务器

    • dist 文件夹内的所有文件上传到你在第二步创建的网站根目录中。
    • 重要:确保 index.html 是默认首页文件。
  3. 配置 Nginx 伪静态 (关键)
    UniApp 生成的 H5 页面通常使用 Vue Router 的 History 模式,如果 Nginx 不配置,刷新页面会报 404。

    在宝塔面板【网站】->【配置文件】中,找到对应内容并修改:

    location / {
        try_files $uri $uri/ /index.html;
    }

    (这行配置的意思是:如果找不到具体文件或目录,就重定向回 index.html,让前端路由接管)

  4. 修改接口地址

    • 检查 UniApp 代码中的 request 请求地址。
    • 确保它指向的是生产环境的 PHP 服务器域名(例如 https://api.yourdomain.com),而不是本地的 localhost

情况 B:部署为微信小程序(主流方式)

如果你的目标是发布微信小程序:

  1. 无需部署 UniApp 前端代码到阿里云
  2. 前端代码在 HBuilderX 中点击“发行” -> “小程序” -> “微信开发者工具”或直接提交到微信后台。
  3. 微信会将前端代码托管在腾讯服务器上。
  4. 唯一需要做的是:确保你的 PHP 后端 API 已经成功部署在阿里云,并且小程序代码中的 baseUrl 指向了阿里云的域名。

第四步:HTTPS 与安全加固(必须步骤)

现在的环境只能 HTTP 访问,但现代浏览器和微信小程序强制要求 HTTPS。

  1. 申请 SSL 证书

    • 在阿里云控制台搜索“SSL 证书”,免费版(DV 型)通常够用。
    • 下载证书文件(.crt.key)。
  2. 在宝塔/Nginx 配置 HTTPS

    • 在宝塔面板【网站】->【SSL】,上传证书文件。
    • 开启“强制 HTTPS"开关。
    • 保存并重载 Nginx。
  3. 配置跨域 (CORS)

    • 由于前端(H5)和后端(API)可能在不同域名下,需要在 PHP 后端响应头中允许跨域。
    • 在 PHP 代码最开头添加:
      header("Access-Control-Allow-Origin: *"); // 生产环境建议指定具体域名
      header("Access-Control-Allow-Methods: GET, POST, OPTIONS");
      header("Access-Control-Allow-Headers: Content-Type, Authorization");

常见问题排查

问题现象 可能原因 解决方案
502 Bad Gateway Nginx 无法连接到 PHP-FPM 检查 PHP 服务是否启动,查看 Nginx 错误日志 (/www/wwwlogs/error.log)
404 Not Found 路径错误或伪静态未配置 检查文件是否传到了正确的根目录;确认 Nginx 配置了 try_files
数据库连接失败 密码错误或权限不足 检查 .env 配置;在 MySQL 中授权用户远程访问权限
小程序无法调用接口 域名未备案或未配 HTTPS 微信小程序要求域名必须 ICP 备案且必须是 HTTPS
图片加载不出来 路径相对/绝对错误 检查 CSS/JS 中的图片路径,建议使用绝对路径或动态拼接域名

总结建议

  1. 域名备案:在中国大陆使用阿里云服务器,域名必须在工信部完成 ICP 备案,否则 Nginx 会被拦截。
  2. 环境隔离:开发环境和生产环境尽量分开,不要直接在生产环境调试代码。
  3. 备份:定期在宝塔面板使用“备份”功能备份数据库和网站文件。

按照以上步骤操作,你就可以顺利在阿里云上跑起你的 PHP + UniApp 项目了。如果有具体的报错信息,欢迎继续提问!

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