ThinkPHP Linux版如何迁移
小樊
37
2026-01-04 23:20:52
ThinkPHP Linux 版迁移实操指南
一 准备与环境检查
- 备份与计划:先对现有代码与数据库做完整备份,明确迁移窗口、回滚方案与验证清单。
- 目标环境:安装并验证 Linux + Web 服务器(Nginx/Apache)+ PHP + MySQL,确保 PHP 版本满足项目要求并已启用必要扩展(如 PDO、GD、mbstring、openssl 等)。
- 传输工具:准备 SCP/SFTP/FTP 等工具,用于上传项目与数据库备份文件。
- 依赖管理:如项目使用 Composer,在服务器安装 Composer 以便安装依赖与执行迁移命令。
- 安全与权限:规划运行用户、目录归属与最小权限策略,避免上线后写入失败或安全风险。
二 迁移步骤
- 上传代码
- 将本地项目完整上传至服务器,常见站点根目录:
- Apache:/var/www/html
- Nginx:/usr/share/nginx/html
- 如使用版本控制,可直接在服务器 git clone 项目仓库。
- 安装依赖
- 在项目根目录执行:
- composer install --optimize-autoloader --no-dev
- 如需执行迁移命令(如使用 ThinkPHP 迁移工具):
- php think migrate:run(确保已配置好数据库连接与迁移文件)。
- 配置数据库连接
- 编辑配置文件 config/database.php,设置 数据库名、用户名、密码、主机、端口 等,确保与 Linux 上的数据库实例一致。
- 如使用 .env 管理环境,同步更新相关变量。
- 导入数据库
- 将本地导出的 .sql 备份导入到目标库:
- 命令行示例:mysql -u 用户名 -p 数据库名 < backup.sql
- 导入后核对表结构与初始数据是否完整。
- 设置目录权限
- 确保运行用户对以下目录具备写入权限:
- runtime/(缓存、日志、会话等)
- public/uploads/(上传文件)
- 推荐做法:为运行用户授予所属组并配置目录权限为 0755/0775,必要时仅对需要写入的子目录放宽至 0777,避免全站 0777。
- Web 服务器配置
- Apache:启用 mod_rewrite,在虚拟主机或 .htaccess 中开启重写;确保 AllowOverride All 生效。
- Nginx:配置 try_files $uri $uri/ /index.php?$query_string; 将所有非静态资源请求转发到入口 public/index.php。
- 如使用子目录部署,需同步调整重写规则与项目配置的根路径。
- 访问与验证
- 通过浏览器访问域名或 IP:端口,核对首页、登录、列表、上传、验证码等核心功能。
- 查看 runtime/log/ 日志与 php-fpm/nginx 错误日志,快速定位 404、500、类不存在、数据库连接失败等问题。
三 常见问题与排查
- 路由 404 或入口不对:确认 Web 服务器将请求转发到 public/index.php;检查 URL 重写 是否生效。
- 模板/模块不存在:Linux 区分大小写,核对文件名、类名、命名空间与调用写法是否一致。
- 验证码/图片不显示:安装并启用 GD 扩展,排查字体与文件写入权限。
- 缓存/日志写入失败:为 runtime/ 及上传目录设置正确的拥有者与权限。
- 数据库连接失败:核对 database.php 配置、数据库主机可达性、账号权限与防火墙策略。
- 依赖缺失:执行 composer install 安装扩展包,避免类未找到错误。
四 数据库迁移注意事项
- 全量备份:迁移前对数据库与代码同时备份,确保可回滚。
- 版本兼容:源/目标 MySQL 版本差异可能导致兼容性问题,必要时评估升级与转换策略。
- 迁移计划:明确步骤、顺序与责任人,减少业务中断窗口。
- 充分测试:在预发布环境验证数据一致性与业务功能。
- 监控与回滚:上线过程保持监控,准备回滚方案以应对异常。
- 文档更新:同步更新部署与运维文档,便于团队后续维护。