走啊走
加油

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

服务器价格表

在阿里云服务器部署基于 PHP 后端 + UniApp(小程序端) 的项目是一个非常经典且成熟的方案。UniApp 编译后生成的是前端代码(H5/微信小程序原生包),通常不需要直接运行在服务器上,而是通过 PHP 提供 API 接口供小程序调用。

以下是完整的部署流程指南,分为环境准备项目配置文件上传服务启动域名解析五个关键步骤。

1. 核心架构理解

在开始之前,请明确数据流向:

  • 小程序端 (UniApp):负责界面展示和用户交互,通过 uni.request 请求后端 API。
  • 阿里云服务器:运行 Nginx/Apache + PHP + MySQL,提供 RESTful API 接口。
  • 数据库:MySQL 或 MariaDB,存储业务数据。

2. 第一步:阿里云环境准备

A. 购买与初始化

  1. 登录阿里云控制台,购买一台 ECS 云服务器(推荐 Ubuntu 20.04/22.04 或 CentOS 7+)。
  2. 安全组配置:在 ECS 控制台的“安全组”规则中,放行以下端口:
    • 80 (HTTP)
    • 443 (HTTPS,可选但推荐)
    • 22 (SSH,用于远程连接)
    • 3306 (MySQL,强烈建议不要对公网开放,仅允许内网访问)

B. 安装运行环境 (以 Ubuntu 为例)

通过 SSH 工具(如 Xshell, Terminal)连接服务器,执行以下命令一键安装 LAMP/LNMP 栈(推荐使用 LNMP,即 Nginx + PHP + MySQL):

# 更新软件源
sudo apt update

# 安装 Nginx
sudo apt install nginx -y

# 安装 PHP 及常用扩展 (根据项目需求调整版本,如 php8.1)
sudo apt install php-fpm php-mysql php-curl php-gd php-mbstring php-xml php-zip -y

# 安装 MySQL
sudo apt install mysql-server -y
sudo mysql_secure_installation # 设置 root 密码并移除测试库

# 安装 Redis (如果项目需要缓存)
sudo apt install redis-server -y

注意:如果是 CentOS,请使用 yumdnf 进行安装,命令类似 yum install nginx php php-mysql ...


3. 第二步:数据库与后端配置

A. 创建数据库

进入 MySQL 命令行创建项目专用数据库和用户:

mysql -u root -p
CREATE DATABASE my_project_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'my_user'@'localhost' IDENTIFIED BY 'your_strong_password';
GRANT ALL PRIVILEGES ON my_project_db.* TO 'my_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

B. 修改后端代码配置

在你的 PHP 项目根目录(通常是 config.php.env 文件)中,将数据库连接信息修改为刚才创建的:

// config.php 示例
return [
    'database' => [
        'host' => '127.0.0.1', // 本地访问即可,不要填公网 IP
        'port' => '3306',
        'name' => 'my_project_db',
        'user' => 'my_user',
        'password' => 'your_strong_password',
    ],
];

4. 第三步:上传代码到服务器

A. 打包 PHP 项目

将你的 PHP 后端代码(排除 node_modules, vendor 等依赖包,除非你使用 Composer 管理)压缩成 zip 包。

  • 如果使用了 Composer,建议在本地先执行 composer install --no-dev --optimize-autoloader,然后打包上传。

B. 上传方式

推荐使用 scp 命令或 FTP 工具(如 FileZilla)将文件上传到 /var/www/html 或自定义目录(如 /home/wwwroot/project)。

# 本地终端操作示例
scp -r your-project.zip root@<你的服务器IP>:/tmp/

# 登录服务器解压
ssh root@<你的服务器IP>
cd /tmp
unzip your-project.zip
mv project/* /var/www/html/
chown -R www-data:www-data /var/www/html/ # 修改权限

C. UniApp 前端处理

关键点:UniApp 编译后的 H5 代码是静态资源。

  1. 方案一(推荐):将 UniApp 编译为 H5,生成的 dist 文件夹内容直接覆盖到 Nginx 的根目录(与 PHP 后端同级),或者单独部署到 OSS/Nginx 静态区。
  2. 方案二(混合):如果你的 PHP 框架(如 Laravel/ThinkPHP)支持路由接管,可以将 H5 入口放在 PHP 目录下,通过 index.php 统一分发。

5. 第四步:配置 Nginx

编辑 Nginx 配置文件(通常在 /etc/nginx/sites-available/default/etc/nginx/conf.d/your_project.conf):

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;
    }

    # PHP 处理配置
    location ~ .php$ {
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        # 防止路径遍历攻击
        fastcgi_param PATH_INFO $fastcgi_path_info;
    }

    # 禁止访问 .git, .env 等敏感文件
    location ~ /. {
        deny all;
    }
}

重启 Nginx 生效

sudo nginx -t # 检查语法
sudo systemctl restart nginx

6. 第五步:域名与 HTTPS

A. 域名解析

在阿里云 DNS 控制台,添加一条 A 记录

  • 主机记录:www (或 @)
  • 记录值:你的服务器公网 IP
  • TTL:默认

B. 配置 HTTPS (SSL 证书)

小程序强制要求使用 HTTPS。

  1. 在阿里云 SSL 证书控制台申请免费 DV 证书。
  2. 下载证书(Nginx 格式)。
  3. 修改 Nginx 配置开启 HTTPS:
server {
    listen 443 ssl http2;
    server_name your_domain.com;

    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;

    # ... 其他配置同上
}

(或者使用 Certbot 自动申请和管理证书)


7. 第六步:小程序端适配 (UniApp)

回到你的 UniApp 开发环境,修改 manifest.jsonpages.json 中的网络请求地址:

  1. 开发环境:可以使用云开发或本地模拟。
  2. 生产环境

    // main.js 或 api.js 中定义全局 baseUrl
    const BASE_URL = 'https://your_domain.com/api'; 
    
    uni.request({
      url: BASE_URL + '/user/login',
      method: 'POST',
      data: { username: 'test' },
      success(res) {
        console.log(res.data);
      }
    });

重要提示

  • 跨域问题:确保 PHP 后端返回了正确的 CORS 头(虽然小程序通常不严格限制跨域,但服务端最好配置好)。
  • 微信后台配置:登录微信公众平台 -> 开发管理 -> 开发设置,将 https://your_domain.com 添加到 服务器域名 列表中(包括 request 合法域名)。

常见问题排查

问题现象 可能原因 解决方案
502 Bad Gateway PHP-FPM 未启动或端口不对 检查 systemctl status php-fpm,确认 Nginx 配置中 fastcgi_pass 端口正确。
404 Not Found 文件路径错误或 Nginx 配置错误 检查 root 路径是否正确,尝试访问 http://IP/test.php 看是否返回 PHP 代码。
数据库连接失败 防火墙或密码错误 检查 MySQL 用户权限,确认 bind-address 配置,检查 PHP 代码中的密码。
小程序无法请求 域名未备案或未加白名单 中国大陆服务器必须完成 ICP 备案;务必在微信后台添加域名白名单。
权限拒绝 (Permission denied) 文件所有者不是 www-data 执行 chown -R www-data:www-data /var/www/html

按照以上步骤操作,你的 PHP + UniApp 小程序就能成功部署在阿里云上了。如果在具体某个环节(如 Nginx 报错或 PHP 扩展缺失)遇到困难,可以告诉我具体的错误日志,我再为你详细解答。