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

在阿里云服务器部署基于 PHP 后端 + UniApp 前端的小程序,是一个经典且成熟的架构方案。UniApp 编译后生成的是小程序代码(如微信原生代码),而 PHP 负责处理业务逻辑和数据库交互。

以下是完整的部署流程指南,分为环境准备、后端部署、前端发布、域名与证书配置四个核心步骤:

第一步:阿里云服务器环境准备

  1. 购买与初始化

    • 在阿里云控制台购买一台 ECS 实例(推荐 CentOS 7/8 或 Ubuntu 20.04+)。
    • 安全组配置:务必放行以下端口:
      • 80 (HTTP)
      • 443 (HTTPS,小程序强制要求 HTTPS)
      • 22 (SSH,用于远程连接)
    • 安装基础依赖:git, wget, curl 等。
  2. 搭建运行环境 (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 等,视你的项目需求而定)。

  3. 配置 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 后端代码

  1. 上传代码

    • 将你的 PHP 项目代码上传到服务器指定目录(如 /var/www/html)。
    • 可以使用 scprsync 或 Git 拉取:
      cd /var/www/html
      git clone <你的代码仓库地址> .
  2. 配置数据库

    • 登录 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 文件或数据库配置文件,填入新的数据库账号密码。
  3. 文件权限修复
    确保 Web 服务器用户(通常是 www-data)有写入权限(如果项目需要上传文件或缓存):

    chown -R www-data:www-data /var/www/html
    chmod -R 755 /var/www/html

第三步:部署 UniApp 前端(小程序端)

这里有一个关键概念:UniApp 开发完成后,是编译成“小程序包”的,而不是直接放在服务器上运行的 HTML。

  1. 本地编译

    • 在你的开发电脑上打开 HBuilderX。
    • 选择 发行 -> 小程序 -> 微信小程序
    • 等待编译完成,会生成一个包含 miniprogram 文件夹的压缩包。
  2. 上传至微信公众平台

    • 登录 微信公众平台。
    • 进入“开发管理” -> “开发设置”。
    • 点击“上传代码”,选择刚才编译好的文件夹。
    • 重要:填写“服务器域名”时,必须填入你阿里云服务器的 HTTPS 域名(见第四步)。
  3. 关于 H5 版(可选)

    • 如果你还需要 UniApp 生成的 H5 网页版,可以将 HBuilderX 编译出的 dist 目录下的内容,同样上传到阿里云服务器的 /var/www/html 目录中。此时 Nginx 会直接提供静态页面服务。

第四步:域名备案与 HTTPS 配置(小程序必做)

微信小程序强制要求所有网络请求必须是 HTTPS,且域名必须在微信后台配置白名单。

  1. 域名备案

    • 如果你的域名解析到了中国大陆境内的阿里云服务器,必须先进行 ICP 备案
    • 在阿里云控制台提交备案申请,审核通过后(通常需 10-20 天),才能使用 80/443 端口。
  2. 申请 SSL 证书

    • 在阿里云控制台搜索“SSL 证书”,购买免费版(如 Let’s Encrypt 或云盾免费证书)或付费版。
    • 下载证书文件(.crt.key)。
  3. 配置 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
  4. 微信后台配置

    • 回到微信公众平台 -> 开发管理 -> 开发设置。
    • 在“服务器域名”栏目中,将你配置的 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技术博 » 想要在阿里云服务器部署小程序php和uniapp写的?