总体结论
在Ubuntu上,ThinkPHP 可以长期稳定运行。社区与教程普遍给出在Linux/Ubuntu上的部署方法与要点,涵盖 Nginx/Apache + PHP-FPM 的主流组合,满足生产环境的基本要求。只要版本匹配、配置正确、权限与日志到位,稳定性与在其它 Linux 发行版相当。
版本与兼容性要点
- PHP 版本建议:ThinkPHP 5.0+ 需 PHP ≥ 5.6.0;ThinkPHP 6.0 需 PHP ≥ 7.2.5。部署前用
php -v 确认版本,避免不兼容导致异常。
- 常用扩展:建议安装 php-fpm、php-mysql、php-mbstring、php-xml、php-curl 等,满足框架与常见功能(数据库、字符集、网络请求等)需求。
- Web 服务:可选择 Nginx + PHP-FPM 或 Apache(启用 mod_rewrite),两者在 Ubuntu 上都有成熟实践。
部署与运维关键点
- Web 服务配置
- Nginx:在 server 块中使用
try_files $uri $uri/ /index.php?$query_string; 并确保 fastcgi_pass 指向正确的 PHP-FPM socket(如:/var/run/php/php7.4-fpm.sock,需与已安装 PHP 版本一致)。
- Apache:启用 mod_rewrite,并在虚拟主机配置中设置
AllowOverride All,保证路由与 .htaccess 生效。
- 目录与权限:将项目目录属主设为 www-data:www-data,常用权限为 755(可按需细化到 runtime 等目录)。
- 路由与重写:Nginx 使用
try_files 规则;Apache 确保启用重写模块并允许 .htaccess 覆盖。
- 故障排查:优先查看 Nginx 错误日志(/var/log/nginx/error.log) 与 PHP-FPM 日志(/var/log/php7.4-fpm.log),定位 502/404/路由失效等问题更快。
性能与稳定性优化
- 启用 OPcache:显著减少重复编译、降低磁盘 I/O,是提升响应与并发的关键。示例配置:
opcache.enable=1、opcache.memory_consumption=128、opcache.max_accelerated_files=4000、opcache.revalidate_freq=60(按实际内存与发布频率微调)。
- PHP 与数据库:合理设置
memory_limit、max_execution_time 等;为数据库添加合适索引、优化慢查询;必要时引入 Redis/Memcached 做数据缓存。
- 运行环境:保持 PHP 版本更新 获取性能与安全修复;在 WSL2 场景下,OPcache 对“反应慢”的改善尤为明显。
常见风险与规避
- 版本不匹配:如 PHP < 7.2.5 运行 ThinkPHP 6.x 会出现兼容性问题;升级 PHP 或选择对应 ThinkPHP 版本。
- 路由/重写未生效:Nginx 缺少
try_files 或 Apache 未启用 mod_rewrite 与 AllowOverride All,会导致 404 或路由失效。
- 权限错误:目录属主/权限不当会引发“无法写入”“白屏”等,按上文权限设置修正。
- 502 Bad Gateway:多为 PHP-FPM 未运行 或 fastcgi_pass 路径错误,检查服务状态与 socket 路径一致性。
- WSL2 性能问题:未启用 OPcache 时常见“每次请求重复编译、磁盘 I/O 受限”,启用后通常可恢复正常响应。