ThinkPHP6(TP6)使用宝塔面板部署服务完整步骤
一、部署前置说明
本文适用于宝塔面板(Linux系统)部署ThinkPHP6项目,全程基于可视化操作,无需复杂命令行,适配新手及开发者快速部署。部署前需确认:
-
服务器已安装宝塔面板(未安装可参考宝塔官方教程:https://www.bt.cn/);
-
本地TP6项目已开发完成,且能正常本地运行;
-
服务器已开放80(HTTP)、443(HTTPS,可选)端口,宝塔面板可正常登录。
核心注意:服务器环境版本需与本地开发环境一致,避免版本兼容问题导致部署失败。
二、服务器环境搭建(宝塔面板操作)
2.1 安装核心软件
打开宝塔面板(访问地址:http://服务器IP:8888,初始账号密码在服务器购买后获取),进入「软件商店」,搜索并安装以下3个核心组件,版本严格匹配推荐值:
-
Nginx:选择「最新稳定版」(无需自定义版本,默认稳定版即可);
-
MySQL:选择
5.7或8.0版本(与本地开发环境的MySQL版本一致,避免数据库语法兼容问题); -
PHP:选择PHP
8.0版本(TP6官方推荐版本,禁止使用8.3及以上版本,会出现框架兼容报错)。
安装完成后,确认所有软件状态为「运行中」,若未运行,点击「启动」按钮。
2.2 安装PHP必装扩展
TP6运行依赖特定PHP扩展,缺失扩展会直接导致项目白屏、功能失效,操作步骤如下:
-
在宝塔面板左侧导航栏,点击「软件管理」,找到已安装的「PHP-8.0」,点击右侧「设置」;
-
切换到「安装扩展」选项卡,勾选以下扩展:
fileinfo、openssl、mbstring、pdo\_mysql、redis; -
点击「安装」,等待所有扩展安装完成后,点击「重启」按钮,重启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」格式,后续上传到服务器数据库。
四、宝塔面板新建站点
站点配置是部署核心,错误配置会导致项目空白、无法访问,严格按以下步骤操作:
-
宝塔面板左侧导航栏,点击「网站」→「添加站点」;
-
填写站点基础信息:
-
域名:无域名可直接填写服务器公网/局域网IP;有域名则填写域名;
-
根目录:点击「选择目录」,新建文件夹(建议命名为项目名,如tp6_demo),进入该文件夹,必须是「public」文件夹(TP6的入口文件在public目录下,指向错误会直接白屏);
-
PHP版本:选择「PHP-8.0」(与前面安装的PHP版本一致);
-
数据库:勾选「创建数据库」,自动生成数据库名、用户名、密码,务必记录下来(后续配置.env文件需要);
-
-
点击「提交」,站点创建完成,此时宝塔会自动生成基础Nginx配置。
五、项目文件上传
将本地TP6项目文件上传到服务器站点目录,操作步骤:
-
宝塔面板左侧,点击「文件」,进入站点根目录的上级目录(如/www/wwwroot/tp6_demo/);
-
点击「上传」,选择本地TP6项目的压缩包(建议压缩为.zip格式,上传速度更快),上传完成后点击「解压」;
-
解压后确认目录结构正确,如下所示(缺少任意目录会导致项目无法运行):
/www/wwwroot/tp6_demo/
├─ app/ # 项目核心代码目录
├─ config/ # 项目配置目录
├─ public/ # 网站根目录(已指向站点根目录)
├─ runtime/ # 缓存目录
├─ vendor/ # 依赖包目录
└─ .env # 环境配置文件
六、服务器环境配置(关键步骤)
6.1 导入数据库
-
宝塔面板左侧,点击「数据库」,找到前面创建的数据库,点击右侧「导入」;
-
点击「选择文件」,上传本地导出的「.sql」数据库文件;
-
导入完成后,会提示「导入成功」,此时数据库表结构与本地一致。
-
可使用本地数据库工具链接后进行查看确认。
6.2 修改.env文件(数据库配置)
-
在宝塔文件管理中,找到项目根目录的「.env」文件,双击打开;
-
填写前面记录的宝塔数据库信息,修改后如下(替换为自己的数据库信息):
[DATABASE]
TYPE = mysql
HOSTNAME = 127.0.0.1
DATABASE = tp6_demo_db # 宝塔创建的数据库名
USERNAME = tp6_demo_user # 宝塔数据库用户名
PASSWORD = 12345678 # 宝塔数据库密码
HOSTPORT = 3306
CHARSET = utf8mb4
- 保存文件,确保文件无多余空格、空行(语法错误会导致框架崩溃)。
6.3 配置Nginx伪静态
TP6路由依赖伪静态配置,未配置会导致除首页外所有路由404错误,操作步骤:
-
宝塔面板「网站」列表,找到新建的站点,点击右侧「设置」;
-
切换到「伪静态」选项卡,清空原有内容,选择
thinkphp模板,粘贴TP6官方伪静态规则:
location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}
-
点击「保存」,伪静态配置生效。
-
这步完成后可先查看对应的网站地址,如无白屏现象出现即项目部署完毕。
6.4 调整Nginx索引文件优先级
默认情况下,Nginx优先解析index.html,会导致PHP文件不执行、页面空白,需修改索引顺序:
-
站点「设置」→「配置文件」,找到「index」指令;
-
将「index.php」移至最前面,修改后如下:
index index.php index.html index.htm default.php default.htm;
- 点击「保存」,重启Nginx服务(宝塔「软件管理」→「Nginx」→「重启」)。
6.5 配置目录权限
Linux系统下,目录权限不足会导致TP6无法写入缓存,直接白屏(通常创建时默认是755权限),操作步骤:
-
宝塔「网站」→ 找到站点,点击右侧「终端」;
-
依次执行以下命令(替换路径中的「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
- 命令执行完成后,关闭终端即可。
6.6 清理服务器项目缓存
上传项目后,需清理缓存确保配置生效,操作步骤:
- 进入站点终端,执行以下命令:
# 删除runtime缓存文件
rm -rf runtime/*
# 重新生成Composer自动加载文件
composer dump-autoload
# 清空TP6配置缓存
php think clear
- 命令执行完成后,缓存清理完毕。
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;
}
七、部署测试与验证
-
打开浏览器,输入站点域名或服务器IP(如http://192.168.110.151);
-
若显示TP6欢迎页或项目首页,说明部署成功;
-
测试路由访问:访问项目内任意接口或页面(如http://192.168.110.151/test),能正常显示即说明路由配置生效;
-
测试数据库连接:访问需要查询数据库的页面,能正常显示数据即说明数据库配置正确。
八、生产环境优化(可选)
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缓存,避免缓存残留导致服务器配置不生效。
更多推荐
所有评论(0)