在 CentOS 服务器上部署和运行 ThinkPHP 框架是构建稳定 Web 应用的常见选择,本文将提供一个清晰、分步的指南,帮助您从零开始在 CentOS 环境中成功运行一个 ThinkPHP 项目,整个过程涵盖了环境准备、框架安装、Web 服务器配置以及权限设置等关键环节。

环境准备
在开始之前,请确保您的 CentOS 服务器已经安装并运行了基础的 LNMP(Linux, Nginx, MySQL, PHP)或 LAMP(Linux, Apache, MySQL, PHP)环境,本文将以性能更优的 LNMP 环境为例进行讲解,以下是各组件的推荐版本要求:
| 组件 | 推荐版本 | 说明 |
|---|---|---|
| CentOS | x / 8.x | 主流稳定版本 |
| Nginx | 18+ | 高性能 Web 服务器 |
| PHP | 4+ / 8.0+ | ThinkPHP 6.0+ 要求 |
| MySQL | 7+ / 8.0+ | 数据库服务 |
| Composer | 最新版 | PHP 依赖管理工具 |
PHP 扩展也是关键一环,请确保已安装 php-fpm, php-mysql, php-gd, php-curl, php-zip, php-xml, php-mbstring 等常用扩展,您可以通过 yum install php74-php-fpm php74-php-mysqlnd ... 等命令进行安装(根据您的 PHP 版本和源调整包名)。
第一步:安装 Composer
Composer 是现代 PHP 开发的核心,用于管理项目依赖,如果您的系统中尚未安装 Composer,请执行以下命令进行全局安装:
# 下载并安装 curl -sS https://getcomposer.org/installer | php # 移动到全局可执行路径 mv composer.phar /usr/local/bin/composer # 赋予执行权限 chmod +x /usr/local/bin/composer # 验证安装 composer --version
为了提高国内下载速度,建议配置 Composer 中国镜像:
composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
第二步:创建 ThinkPHP 项目
使用 Composer 可以非常方便地创建一个新的 ThinkPHP 项目,假设我们将项目部署在 /var/www/ 目录下,项目名称为 tp:

# 进入 Web 根目录 cd /var/www/ # 创建 ThinkPHP 6.x 项目 composer create-project topthink/think tp
执行完毕后,Composer 会自动下载 ThinkPHP 框架及其所有依赖,并在 /var/www/tp 目录下生成一个完整的项目结构。
第三步:配置 Nginx
这是让 ThinkPHP 项目能够通过浏览器访问的核心步骤,我们需要为 Nginx 创建一个新的站点配置文件,以确保所有请求都能正确地被路由到框架的入口文件 public/index.php。
创建一个新的配置文件,/etc/nginx/conf.d/tp.conf:
server {
listen 80;
server_name your_domain.com; # 替换为您的域名或服务器 IP
root /var/www/tp/public; # 重点:指向项目 public 目录
index index.php index.html index.htm;
# URL 重写规则,隐藏 index.php
location / {
try_files $uri $uri/ /index.php?$query_string;
}
# PHP 脚本请求转发给 PHP-FPM 处理
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm/www.sock; # 根据您的 php-fpm 配置修改
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# 禁止访问 .htaccess 等隐藏文件
location ~ /\. {
deny all;
}
}
配置要点解析:
root指令必须指向项目的public目录,这是出于安全考虑。location /块中的try_files指令是实现 ThinkPHP 美化 URL(PATHINFO)的关键,它会将不存在的文件或目录请求统一重定向到index.php。
配置完成后,使用 nginx -t 检查语法是否正确,若无误,则重新加载 Nginx 配置:

systemctl reload nginx
第四步:设置目录权限
Web 服务器(Nginx)需要对项目中的特定目录拥有读写权限,尤其是 runtime(日志、缓存等)和 public(上传文件等)目录。
# 将整个项目目录的所有权赋予 Nginx 运行用户(通常是 nginx 或 www-data) chown -R nginx:nginx /var/www/tp # 设置目录权限 chmod -R 755 /var/www/tp chmod -R 775 /var/www/tp/runtime chmod -R 775 /var/www/tp/public
至此,所有配置均已完成,在浏览器中访问您的域名或服务器 IP 地址,如果一切顺利,您将看到 ThinkPHP 的默认欢迎页面。
相关问答 FAQs
Q1: 访问页面时出现 Nginx 404 Not Found 错误,但文件确实存在,是什么原因?
A1: 这通常是 Nginx 配置问题,最常见的原因有两个:请检查 nginx.conf 或站点配置文件中的 root 指令,确保它绝对指向了项目的 public 目录(/var/www/tp/public),确认 location / 块内的 try_files $uri $uri/ /index.php?$query_string; 配置正确且已生效,修改配置后,记得使用 systemctl reload nginx 重新加载服务。
Q2: 页面显示一片空白或 500 Server Error,我该如何排查?
A2: 这种问题通常是 PHP 代码执行错误或权限不足导致的,查看 Nginx 的错误日志(通常位于 /var/log/nginx/error.log)和 PHP-FPM 的错误日志(路径各异,常见于 /var/log/php-fpm/ 或 /var/opt/remi/php74/log/php-fpm/),日志中会记录具体的错误信息,常见原因包括:runtime 目录不可写、缺少必要的 PHP 扩展(如 fileinfo)、或代码本身存在语法错误,根据日志提示进行针对性修复即可。