云服务器搭建 ThinkPHP 站点

本文介绍了在云服务器部署 ThinkPHP 网站的完整流程,包括环境准备(Linux 系统Nginx/Apache、PHP 7.4+、MySQL)、ThinkPHP 项目上传与目录配置、Nginx 反向代理伪静态规则设置(重点处理 public 目录和 PATH_INFO 路由)、数据库连接配置及常见权限与路径问题排查,强调安全加固(如禁止访问 runtime 和 config 目录)与生产环境优化建议。

云服务器上快速搭建 ThinkPHP 站点实战指南

数字化项目落地中,如何高效稳定地将 ThinkPHP 应用上线至生产环境,是开发者常面临的实际课题,本文以主流云服务商(如阿里云、腾讯云)的 CentOS 7/8 Ubuntu 22.04 为例,提供一套精简、可复现、无冗余的部署流程——全程无需宝塔面板,直击步骤,助你 30 分钟内完成一个安全可用的 ThinkPHP 8.x 站点上线。

基础准备:选型与连接
选用轻量应用服务器(LAMP/LEMP 均可,本文以 Nginx + PHP-FPM + MySQL 组合为例),确保实例已开放 80(HTTP)、443(HTTPS)及 22(SSH)端口,通过 SSH 登录后,先更新系统:

sudo apt update && sudo apt upgrade -y  # Ubuntu  
# 或  
sudo yum update -y  # CentOS  

环境安装:极简但完整
安装 Nginx、MySQL 和 PHP 8.1+(ThinkPHP 8 要求 PHP ≥ 8.0):

# Ubuntu 示例(使用ondrej PPA)  
sudo apt install nginx mysql-server php8.1-fpm php8.1-mysql php8.1-curl php8.1-xml php8.1-mbstring php8.1-zip php8.1-opcache -y  

启动并设为开机自启:

sudo systemctl enable nginx php8.1-fpm mysql  
sudo systemctl start nginx php8.1-fpm mysql  

配置 ThinkPHP 运行环境

  1. 建站点目录
    sudo mkdir -p /var/www/thinkphp  
    sudo chown -R $USER:$USER /var/www/thinkphp  
  2. 部署代码:进入目录,用 Composer 安装最新 ThinkPHP(推荐 8.0 LTS):
    cd /var/www/thinkphp  
    composer create-project topthink/think . --no-dev  
  3. 关键安全设置
  • public 目录设为 Web 根目录(非项目根目录!),防止 app/config/ 等敏感目录被直接访问;
  • 修改 public/index.php 中的 define('APP_PATH', __DIR__ . '/../app/'); 确保路径正确;
  • app/middleware.php 中启用 TrustHosts 中间件,限制可信域名

Nginx 配置:适配 ThinkPHP 路由
新建 /etc/nginx/sites-available/thinkphp

server {
    listen 80;
    server_name your-domain.com;
    root /var/www/thinkphp/public;
    index index.php;
    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?s=$1 last;
        }
    }
    location ~ \.php$ {
        FastCGI_pass unix:/run/php/php8.1-fpm.sock;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    # 防止敏感目录泄露  
    location ~ ^/(app|config|route|runtime|vendor|\.env) { deny all; }
}

启用配置:

sudo ln -sf /etc/nginx/sites-available/thinkphp /etc/nginx/sites-enabled/  
sudo nginx -t && sudo systemctl reload nginx  

数据库与权限收尾
登录 MySQL 创建数据库:

CREATE DATABASE thinkphp DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;  
CREATE USER 'tpuser'@'localhost' IDENTIFIED BY 'StrongPass123!';  
GRANT ALL ON thinkphp.* TO 'tpuser'@'localhost';  
FLUSH PRIVILEGES;  

修改 .env 文件,填入数据库配置,并将 APP_DEBUG=false 关闭调试模式——这是生产环境必须项。

验证与优化
访问 http://your-domain.com,若显示 ThinkPHP 默认欢迎页,即部署成功,建议后续:

  • 启用 HTTPS(用 Certbot 一键免费签发);
  • 配置 runtime/ 目录权限:sudo chmod -R 755 runtime/
  • 设置定时清理日志(如 find runtime/log -name "*.log" -mtime +7 -delete)。

整个过程不依赖图形界面、不安装冗余组件,所有命令均可复制执行,ThinkPHP 的优雅路由与云服务器弹性资源结合,让中小项目上线既轻量又可靠——真正的「写好代码,一键上线」,始于一次干净的云上部署。

(全文共1486字)