ubuntu上thinkphp项目如何部署与调试
导读:Ubuntu 上 ThinkPHP 项目部署与调试 一 环境准备与版本兼容 更新系统并安装基础组件(以 Ubuntu 20.04/22.04 为例,PHP 版本请与项目匹配): 安装:Nginx/Apache、PHP-FPM、MySQL...
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)
- 要点:root 指向 public;try_files 支持 PATH_INFO;fastcgi_pass 指向正确的 PHP-FPM socket
- 示例:
server { listen 80; server_name your_domain.com; root /var/www/html/your_project/public; index index.php index.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; # 按实际版本调整 fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } # 安全:禁止访问敏感文件 location ~ /\.env { deny all; } location ~ /\.ht { deny all; } } - 启用站点:sudo ln -s /etc/nginx/sites-available/your_project /etc/nginx/sites-enabled/ & & sudo nginx -t & & sudo systemctl reload nginx
- Apache 方案(可选)
- 启用模块:sudo a2enmod rewrite
- 虚拟主机示例(/etc/apache2/sites-available/your_project.conf)
< VirtualHost *:80> ServerName your_domain.com DocumentRoot /var/www/html/your_project/public < Directory /var/www/html/your_project/public> Options Indexes FollowSymLinks AllowOverride All Require all granted < /Directory> < /VirtualHost> - 启用站点:sudo a2ensite your_project.conf & & sudo systemctl reload apache2
- 生产建议
- 关闭调试:将 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 与依赖包,关注框架安全公告
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu上thinkphp项目如何部署与调试
本文地址: https://pptw.com/jishu/762595.html
