稳定运行的关键做法
在 Linux 上让 ThinkPHP 稳定运行,核心是:准备受支持的 PHP 与扩展、使用 Nginx/Apache + PHP-FPM、正确配置 URL 重写与入口、关闭调试并保护敏感文件、打开性能与缓存、接入进程守护与健康检查、做好日志与备份。以下按实践步骤给出要点与示例。
一 环境准备与版本要求
- 选择受支持的 PHP 版本:如 ThinkPHP 8.0 要求 PHP ≥ 8.0;常见可用版本为 PHP 7.4+。安装常用扩展:php-fpm、php-mysqlnd、php-gd、php-mbstring、php-curl、php-xml、php-zip、php-bcmath、php-json。
- 安装 Composer 管理依赖:curl 安装后移动到可执行路径。
- Web 服务建议:Nginx + PHP-FPM(或 Apache + mod_rewrite)。
- 示例(CentOS 7/Alibaba Cloud Linux 3,启用 Remi 的 PHP 8.0 仓库并安装):
- 安装 Remi 源并启用 PHP 8.0:
sudo rpm -Uvh https://mirrors.aliyun.com/remi/enterprise/remi-release-7.rpm
sudo yum-config-manager --enable remi-php80
- 安装 PHP 与扩展:
sudo yum install -y php php-cli php-fpm php-common php-mysqlnd php-gd php-mbstring php-curl php-xml php-zip php-bcmath php-json
- 安装 Composer:
curl -sS https://getcomposer.org/installer | php
sudo mv composer.phar /usr/local/bin/composer
- 验证:php -v、composer --version
以上满足 ThinkPHP 8.0 的运行要求与常见扩展依赖。
二 部署与目录安全
- 放置代码与依赖:将项目放到如 /var/www/your_project,Web 根目录指向 public;执行 composer install 安装依赖。
- 目录权限:确保 runtime 与日志、缓存目录可写(如:chmod -R 755 runtime;生产环境按最小权限与属主设置)。
- 关闭调试与保护敏感文件:
- 生产环境将 config/app.php 中的 ‘app_debug’ => false;
- 禁止访问 .env:Nginx 配置 location ~ /.env { deny all; };
- 建议启用 HTTPS(如 Let’s Encrypt)。
三 Web 服务器与路由配置
- Nginx 推荐配置(要点:root 指向 public、try_files 走 index.php、fastcgi 转发到 PHP-FPM):
server {
listen 80;
server_name your_domain.com;
root /var/www/your_project/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ .php$ {
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php/php8.0-fpm.sock; # 与系统实际 sock 路径一致
}
location ~ /.env { deny all; }
}
- Apache:启用 mod_rewrite,在项目根目录配置 .htaccess 或使用框架路由规则,使请求转发到 public/index.php。
- 常见故障快速排查:
- 502 Bad Gateway:检查 PHP-FPM 是否运行(systemctl status php-fpm)、Nginx 中 fastcgi_pass 路径是否正确;
- 路由 404/失效:确认 Nginx 的 try_files 规则或 Apache 的 Rewrite 已启用。
四 性能优化与缓存
- 开启 OPcache(生产环境强烈建议):在 php.ini 中启用并合理设置 opcache.validate_timestamps(开发可开、生产建议关)、opcache.memory_consumption、opcache.max_accelerated_files 等。
- 会话与缓存:使用 Redis 等作为会话/缓存存储(减少文件 I/O 与锁竞争)。
- 静态资源:开启 Nginx Gzip、设置合适的浏览器缓存策略(Cache-Control/ETag)。
五 进程守护与健康检查
- 使用 systemd 管理 PHP-FPM 与 Nginx,确保异常退出能自动拉起:
- 示例:sudo systemctl enable --now php-fpm nginx
- 定期执行:sudo systemctl status php-fpm、sudo systemctl status nginx
- 建议接入 进程监控/告警(如 systemd 自带监控、第三方守护),并对 access.log / error.log 与 runtime 日志进行集中与轮转(logrotate),便于故障定位与容量控制。
- 上线前在 预发布环境充分回归,灰度或蓝绿发布降低风险。