一、部署前置说明

本文适用于宝塔面板(Linux系统)部署ThinkPHP6项目,全程基于可视化操作,无需复杂命令行,适配新手及开发者快速部署。部署前需确认:

  • 服务器已安装宝塔面板(未安装可参考宝塔官方教程:https://www.bt.cn/);

  • 本地TP6项目已开发完成,且能正常本地运行;

  • 服务器已开放80(HTTP)、443(HTTPS,可选)端口,宝塔面板可正常登录。

核心注意:服务器环境版本需与本地开发环境一致,避免版本兼容问题导致部署失败。

二、服务器环境搭建(宝塔面板操作)

2.1 安装核心软件

打开宝塔面板(访问地址:http://服务器IP:8888,初始账号密码在服务器购买后获取),进入「软件商店」,搜索并安装以下3个核心组件,版本严格匹配推荐值:

  1. Nginx:选择「最新稳定版」(无需自定义版本,默认稳定版即可);

  2. MySQL:选择5.78.0版本(与本地开发环境的MySQL版本一致,避免数据库语法兼容问题);

  3. PHP:选择PHP8.0版本(TP6官方推荐版本,禁止使用8.3及以上版本,会出现框架兼容报错)。

安装完成后,确认所有软件状态为「运行中」,若未运行,点击「启动」按钮。

2.2 安装PHP必装扩展

TP6运行依赖特定PHP扩展,缺失扩展会直接导致项目白屏、功能失效,操作步骤如下:

  1. 在宝塔面板左侧导航栏,点击「软件管理」,找到已安装的「PHP-8.0」,点击右侧「设置」;

  2. 切换到「安装扩展」选项卡,勾选以下扩展:fileinfo、openssl、mbstring、pdo\_mysql、redis;

  3. 点击「安装」,等待所有扩展安装完成后,点击「重启」按钮,重启PHP服务。

三、本地TP6项目准备

部署前需对本地项目进行简单修改,确保上传服务器后能正常运行,步骤如下:

3.1 清理本地缓存

进入本地TP6项目根目录,删除「runtime」文件夹下的所有文件(缓存文件会导致服务器部署后配置不生效)。

3.2 修改环境配置文件

找到本地项目根目录的.env文件(若没有,复制.example.env并重命名为.env),修改以下核心配置(可暂不填写服务器数据库信息,后续在服务器修改):

# 调试模式:开发环境设true,部署到服务器后改为false(避免泄露敏感信息)
APP_DEBUG = true

[APP]
DEFAULT_TIMEZONE = Asia/Shanghai

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1  # 服务器数据库默认本地连接,无需修改
DATABASE =  # 后续填写宝塔创建的数据库名
USERNAME =  # 后续填写宝塔数据库用户名
PASSWORD =  # 后续填写宝塔数据库密码
HOSTPORT = 3306
CHARSET = utf8mb4
DEBUG = false

3.3 导出本地数据库

使用本地数据库工具(如Navicat、phpMyAdmin),导出TP6项目对应的数据库,保存为「.sql」格式,后续上传到服务器数据库。

四、宝塔面板新建站点

站点配置是部署核心,错误配置会导致项目空白、无法访问,严格按以下步骤操作:

  1. 宝塔面板左侧导航栏,点击「网站」→「添加站点」;

  2. 填写站点基础信息:

    • 域名:无域名可直接填写服务器公网/局域网IP;有域名则填写域名;

    • 根目录:点击「选择目录」,新建文件夹(建议命名为项目名,如tp6_demo),进入该文件夹,必须「public」文件夹(TP6的入口文件在public目录下,指向错误会直接白屏);

    • PHP版本:选择「PHP-8.0」(与前面安装的PHP版本一致);

    • 数据库:勾选「创建数据库」,自动生成数据库名、用户名、密码,务必记录下来(后续配置.env文件需要);

  3. 点击「提交」,站点创建完成,此时宝塔会自动生成基础Nginx配置。

五、项目文件上传

将本地TP6项目文件上传到服务器站点目录,操作步骤:

  1. 宝塔面板左侧,点击「文件」,进入站点根目录的上级目录(如/www/wwwroot/tp6_demo/);

  2. 点击「上传」,选择本地TP6项目的压缩包(建议压缩为.zip格式,上传速度更快),上传完成后点击「解压」;

  3. 解压后确认目录结构正确,如下所示(缺少任意目录会导致项目无法运行):

/www/wwwroot/tp6_demo/
├─ app/          # 项目核心代码目录
├─ config/       # 项目配置目录
├─ public/       # 网站根目录(已指向站点根目录)
├─ runtime/      # 缓存目录
├─ vendor/       # 依赖包目录
└─ .env          # 环境配置文件

六、服务器环境配置(关键步骤)

6.1 导入数据库

  1. 宝塔面板左侧,点击「数据库」,找到前面创建的数据库,点击右侧「导入」;

  2. 点击「选择文件」,上传本地导出的「.sql」数据库文件;

  3. 导入完成后,会提示「导入成功」,此时数据库表结构与本地一致。

  4. 可使用本地数据库工具链接后进行查看确认。

6.2 修改.env文件(数据库配置)

  1. 在宝塔文件管理中,找到项目根目录的「.env」文件,双击打开;

  2. 填写前面记录的宝塔数据库信息,修改后如下(替换为自己的数据库信息):

[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = tp6_demo_db  # 宝塔创建的数据库名
USERNAME = tp6_demo_user # 宝塔数据库用户名
PASSWORD = 12345678     # 宝塔数据库密码
HOSTPORT = 3306
CHARSET = utf8mb4
  1. 保存文件,确保文件无多余空格、空行(语法错误会导致框架崩溃)。

6.3 配置Nginx伪静态

TP6路由依赖伪静态配置,未配置会导致除首页外所有路由404错误,操作步骤:

  1. 宝塔面板「网站」列表,找到新建的站点,点击右侧「设置」;

  2. 切换到「伪静态」选项卡,清空原有内容,选择thinkphp模板,粘贴TP6官方伪静态规则:

location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?s=$1 last;
        break;
    }
}
  1. 点击「保存」,伪静态配置生效。

  2. 这步完成后可先查看对应的网站地址,如无白屏现象出现即项目部署完毕。

6.4 调整Nginx索引文件优先级

默认情况下,Nginx优先解析index.html,会导致PHP文件不执行、页面空白,需修改索引顺序:

  1. 站点「设置」→「配置文件」,找到「index」指令;

  2. 将「index.php」移至最前面,修改后如下:

index index.php index.html index.htm default.php default.htm;
  1. 点击「保存」,重启Nginx服务(宝塔「软件管理」→「Nginx」→「重启」)。

6.5 配置目录权限

Linux系统下,目录权限不足会导致TP6无法写入缓存,直接白屏(通常创建时默认是755权限),操作步骤:

  1. 宝塔「网站」→ 找到站点,点击右侧「终端」;

  2. 依次执行以下命令(替换路径中的「tp6_demo」为自己的项目文件夹名):

# 设置文件所有者为Nginx运行用户www
chown -R www:www /www/wwwroot/tp6_demo
# 设置基础文件权限
chmod -R 755 /www/wwwroot/tp6_demo
# 缓存目录赋予读写权限(核心)
chmod -R 777 /www/wwwroot/tp6_demo/runtime
# 依赖包目录权限修复
chmod -R 777 /www/wwwroot/tp6_demo/vendor
  1. 命令执行完成后,关闭终端即可。

6.6 清理服务器项目缓存

上传项目后,需清理缓存确保配置生效,操作步骤:

  1. 进入站点终端,执行以下命令:
# 删除runtime缓存文件
rm -rf runtime/*
# 重新生成Composer自动加载文件
composer dump-autoload
# 清空TP6配置缓存
php think clear
  1. 命令执行完成后,缓存清理完毕。

6.7 附录:完整站点配置文件

server
{
    listen 80;
    server_name 192.168.110.151;
    index index.php index.html index.htm default.php default.htm default.html;
    root /www/wwwroot/192.168.110.151/public;

    #CERT-APPLY-CHECK--START
    include /www/server/panel/vhost/nginx/well-known/192.168.110.151.conf;
    #CERT-APPLY-CHECK--END
    include /www/server/panel/vhost/nginx/extension/192.168.110.151/*.conf;

    #SSL-START SSL相关配置
    #error_page 404/404.html;
    #SSL-END

    #ERROR-PAGE-START  注释掉默认404,让TP6自己处理
    #error_page 404 /404.html;
    #error_page 502 /502.html;
    #ERROR-PAGE-END

    #PHP-INFO-START
    include enable-php-80.conf;
    #PHP-INFO-END

    # ✅ 直接在这里写死TP6伪静态规则,最可靠
    location / {
        if (!-e $request_filename) {
            rewrite  ^(.*)$  /index.php?s=$1  last;
            break;
        }
    }

    #禁止访问的文件或目录
    location ~ ^/(\.user.ini|\.htaccess|\.git|\.env|\.svn|\.project|LICENSE|README.md)
    {
        return 404;
    }

    #一键申请SSL证书验证目录相关设置
    location ~ \.well-known{
        allow all;
    }

    #禁止在证书验证目录放入敏感文件
    if ( $uri ~ "^/\.well-known/.*\.(php|jsp|py|js|css|lua|ts|go|zip|tar\.gz|rar|7z|sql|bak)$" ) {
        return 403;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
        error_log /dev/null;
        access_log /dev/null;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
        error_log /dev/null;
        access_log /dev/null;
    }

    access_log  /www/wwwlogs/192.168.110.151.log;
    error_log  /www/wwwlogs/192.168.110.151.error.log;
}

七、部署测试与验证

  1. 打开浏览器,输入站点域名或服务器IP(如http://192.168.110.151);

  2. 若显示TP6欢迎页或项目首页,说明部署成功;

  3. 测试路由访问:访问项目内任意接口或页面(如http://192.168.110.151/test),能正常显示即说明路由配置生效;

  4. 测试数据库连接:访问需要查询数据库的页面,能正常显示数据即说明数据库配置正确。

八、生产环境优化(可选)

8.1 关闭调试模式

部署完成并测试无误后,修改「.env」文件,将「APP_DEBUG = true」改为「APP_DEBUG = false」,避免泄露项目敏感信息(如数据库密码、代码路径)。

8.2 放行服务器端口

若为云服务器,需在云控制台(如阿里云、腾讯云)的「安全组」中,添加入站规则,放行80(HTTP)、443(HTTPS,若配置SSL证书)端口,否则外网无法访问。

8.3 配置SSL证书(可选)

若有域名,可在宝塔站点「设置」→「SSL」中,申请免费SSL证书,配置后使用HTTPS访问(更安全,适合生产环境)。

九、常见问题排查

问题现象 常见原因 解决方案
页面完全空白,die()代码不执行 Nginx未将请求转发给PHP-FPM,PHP解析配置错误 检查Nginx配置中「fastcgi_pass」路径是否为「unix:/tmp/php-cgi-80.sock」,重启PHP-FPM和Nginx服务
访问优先显示index.html,不执行index.php Nginx索引文件优先级错误 将「index.php」移至Nginx「index」指令的最前面,重启Nginx
路由访问404,仅index.php?s=可访问 伪静态规则缺失或错误 重新粘贴TP6伪静态规则,保存后重启Nginx
数据库连接失败(报错1045) .env文件中数据库信息错误 核对宝塔数据库名、用户名、密码,确保HOSTNAME为127.0.0.1
页面显示权限不足(Permission denied) 目录权限错误 重新执行目录权限命令,确保runtime目录为777权限

十、部署注意事项

  • 站点根目录必须指向「public」文件夹,禁止指向项目根目录,否则无法加载TP6入口文件;

  • PHP版本严格选择8.0,禁止使用8.3及以上版本,避免框架兼容报错;

  • .env文件禁止出现多余空格、空行,语法错误会导致框架直接崩溃,无法启动;

  • Linux环境下,runtime目录必须赋予777权限,否则无法写入缓存,导致页面空白;

  • 伪静态规则是TP6路由核心,未配置或配置错误,会导致所有非首页路由404;

  • 生产环境必须关闭APP_DEBUG,避免敏感信息泄露,开发环境可开启便于排查错误;

  • 数据库禁止使用root用户,使用宝塔创建的专用数据库用户,提升安全性;

  • Nginx、PHP配置修改后,必须重启对应服务,否则配置不生效;

  • 项目上传前,务必清理本地runtime缓存,避免缓存残留导致服务器配置不生效。

更多推荐