Ubuntu 上 ThinkPHP 项目部署与调试
一 环境准备与版本兼容
- 更新系统并安装基础组件(以 Ubuntu 20.04/22.04 为例,PHP 版本请与项目匹配):
- 安装:Nginx/Apache、PHP-FPM、MySQL、Composer
- 命令:sudo apt update && sudo apt install -y nginx php-fpm php-mysql mysql-server composer
- PHP 扩展建议启用:PDO、OpenSSL、MBstring、CURL、XML、GD、ZIP、BCMath(按需增减)
- ThinkPHP 版本与 PHP 兼容建议:
- ThinkPHP 5.0+:需 PHP >= 5.6.0
- ThinkPHP 6.0:需 PHP >= 7.2.5
- 验证:php -v、nginx -t、systemctl status php*-fpm、systemctl status mysql
二 部署步骤
- 上传或拉取代码(示例目录:/var/www/html/your_project)
- Git:git clone /var/www/html/your_project
- 或 SCP/Rsync 上传后进入项目目录
- 安装依赖:composer install --optimize-autoloader --no-dev
- 配置环境
- 数据库等写入 .env 或相应配置文件(如 database.php),确保 runtime 目录可写
- 权限:sudo chown -R www-data:www-data /var/www/html/your_project && sudo chmod -R 755 /var/www/html/your_project
- Web 服务器根目录必须指向 public
- Nginx 示例(/etc/nginx/sites-available/your_project)
- Apache 方案(可选)
- 生产建议
- 关闭调试:将 config/app.php 中的 ‘app_debug’ => false
- 启用 HTTPS(Let’s Encrypt):sudo certbot --nginx -d your_domain.com(或 --apache)
三 调试与常见问题排查
- 开发期快速验证
- 进入项目目录执行:php think run -H 0.0.0.0 -p 8000(仅开发环境使用)
- 查看日志定位问题
- Nginx:/var/log/nginx/error.log
- PHP-FPM:/var/log/php7.4-fpm.log(按实际版本)
- 常见错误与修复
- 502 Bad Gateway:检查 PHP-FPM 是否运行(systemctl status php*-fpm),核对 Nginx 中 fastcgi_pass 的 socket 路径 与 PHP-FPM 监听一致
- 路由 404/白屏:确认 Nginx 的 try_files $uri $uri/ /index.php?$query_string; 已配置;确保 Web 根目录为 public
- Permission denied:确认 runtime、日志、上传目录对 www-data 可写
- Composer 安装慢:composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
- 数据库连接失败:核对 .env/database.php 中 host、port、dbname、user、password 是否正确,数据库是否允许远程/本地连接
四 生产优化与安全加固
- 性能优化
- 启用 OPcache(生产环境强烈建议)
- 使用 Redis 做会话/缓存(需安装并配置相应扩展与驱动)
- 安全建议
- 关闭调试模式(‘app_debug’ => false)
- 禁止访问 .env 等敏感文件(Nginx location ~ /.env { deny all; })
- 仅开放必要端口(如 80/443),使用 UFW 或云安全组限制来源
- 定期更新系统、PHP、Nginx、MySQL 与依赖包,关注框架安全公告