尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Linux服务器用宝塔面板部署ThinkCMF完整指南

Linux服务器用宝塔面板部署ThinkCMF完整指南 说到在Linux服务器上装ThinkCMF我自己的体会是用宝塔面板绝对是最快、最省心的路子没有之一。这不是替面板打广告而是我前后帮朋友和自己部署过好几套ThinkCMF站点后踩够了命令行编译的坑才总结出来的结论。ThinkCMF这个框架本身不复杂它基于ThinkPHP目录结构、入口文件、运行目录这些逻辑跟很多PHP框架一脉相承。但新手第一次在裸Linux上部署时最容易被三件事卡住PHP版本和扩展装不对、网站运行目录指向错误、伪静态规则没生效。这三件事随便遇上哪一个都能让你折腾一晚上。而宝塔恰好把服务器环境打包成了可视化操作PHP版本随时切换、扩展一键安装、伪静态模板点一下就能用把最大的几个坑提前给你填平了。这篇文章就以Linux服务器为例从零开始带你走一遍完整流程服务器准备、宝塔安装、ThinkCMF部署、数据库配置、安装向导、常见问题排查以及上线前的安全加固。适合刚买了服务器准备搭站的新手也适合以前习惯手撸LNMP、现在想换个省心方案的PHP开发者。1. 开始前先确认这几件事服务器、系统与ThinkCMF环境要求很多人在装到一半才发现服务器配置不对或者PHP版本不兼容然后又推倒重来。我在踩过几次这种弯路后养成了一个习惯动手之前先花十分钟把环境要求过一遍确认每项都满足再开工。这一节就是帮你把这十分钟省下来。1.1 服务器配置怎么选才不至于浪费钱部署ThinkCMF这种PHP项目对服务器配置的要求其实不算高。如果你只是搭一个个人博客或者小型企业官网1核2G的云服务器就完全能跑得动如果后面还要挂应用市场、跑队列任务、做图片裁剪这类耗资源的操作建议直接上2核4G这个配置对大多数中小站点来说未来三年基本不会再因为硬件发愁。带宽反而是更值得关注的指标。我见过有朋友把CPU买得很高但带宽只有1M网页加载慢得像幻灯片。ThinkCMF默认有不少静态资源加上图片和CSS/JS文件如果带宽太小用户访问体验会很糟糕。预算允许的话带宽至少选3M起步或者用按量付费的模式访问高峰时不怕卡。系统这块宝塔支持CentOS、Ubuntu、Debian等多个发行版。我自己用得最多的是CentOS 7.9和Debian 12都挺稳。如果你以前没接触过Linux我建议选CentOS 7.9网上遇到问题时能搜到的资料最多宝塔对它的兼容性也最成熟。要注意的是系统最好是全新的装好就立刻去部署环境避免服务器上还残留着其他软件到时候端口冲突、依赖漂移这种问题排查起来特别磨人。1.2 ThinkCMF对PHP和数据库的真实要求别凭感觉选版本ThinkCMF目前市面上用得比较多的是两个大版本ThinkCMF 5.1基于ThinkPHP 5.1和ThinkCMF 6.0基于ThinkPHP 6.0。虽然两个版本在部署逻辑上基本一致但环境要求有细微差别。PHP版本官方要求是7.1以上我自己实际跑下来推荐用PHP 7.4兼容性最稳。ThinkCMF 6.0虽然理论支持PHP 8.0但我实测发现部分第三方插件和扩展对PHP 8的支持还不够完善容易白屏报错。如果你不是专门在搞PHP 8的适配老老实实选7.4就对了。数据库MySQL 5.7或以上。我建议直接装MySQL 8.0宝塔上点几下就能装好既省事性能也更好不用再去纠结5.7和8.0的差异。Web服务Nginx长期稳定官方推荐的伪静态配置也是以Nginx为准。PHP扩展需要确保安装好pdo_mysql、fileinfo、curl、openssl、mbstring、gd这几个常用扩展它们在ThinkCMF运行和安装向导检测时都会被用到。提示文件上传、缩略图生成依赖fileinfo和gd扩展如果漏装安装向导会直接提示红色错误根本走不到下一步。1.3 安装宝塔面板一条命令的事但要注意这三个细节服务器系统装好之后SSH登录上去安装宝塔。安装命令以宝塔官网最新发布的为准大致长这样curl -sSfL https://download.bt.cn/install/install_panel.sh | bash执行之后就是等待脚本自己跑完。这个过程当中我总结了三个容易出问题的细节SSH窗口千万不要关。安装过程中如果断开可能会留下半装的环境再想重装还得先清理麻烦不说还容易出幺蛾子。安装完成后务必记录面板地址和默认账号密码。脚本结束时会在屏幕上打印这些信息建议直接复制到本地备忘录里别想着“回头再看”真等你回头翻终端记录往往已经找不到了。登录面板前记得在云控制台的安全组里放行对应的端口。宝塔面板默认使用一个随机端口脚本安装完会显示如果你在安全组里没放行浏览器就会一直转圈打不开面板。面板登录进去之后第一次会让你选择安装套件。站点是PHP项目选“LNMP”套件然后按它提示等Nginx、MySQL、PHP安装完成就行。这个过程看服务器性能通常5到15分钟不等。装完之后在软件商店里确认一下PHP的版本如果默认装的不是7.4自己再装一个7.4后面新建站点时方便切换。2. 在宝塔里把站点骨架搭好创建网站、上传源码与目录权限环境准备好了接下来这步就正式开始搭站点。很多人习惯先把源码上传到服务器再去建站点我反过来的先在宝塔里把站点创建好让目录结构、Nginx配置这些基础环境先就位再上传代码这样不容易出路径混乱的问题。2.1 在宝塔里新建站点字段怎么填最合理面板左侧点“网站”然后点“添加站点”。这里有几个字段需要认真填域名填你计划绑定的域名比如www.example.com。如果你暂时没有域名也可以先填服务器IP等备案或者域名解析搞好之后再通过“域名管理”添加不影响后续操作。根目录宝塔会根据域名自动生成一个路径默认在/www/wwwroot/你的域名下。这个路径建议保持默认后面找文件方便。PHP版本一定要选PHP 7.4。这一步如果选错后面代码部署好了才发现版本不对又得重新切麻烦。FTP和数据库第一次建站我建议都选择“不创建”。FTP现在基本用不到宝塔自带的文件管理器比FTP好用太多数据库咱们单独手动创建这样能更清楚地看到库名、用户名、密码分别是什么避免后面安装向导填错。创建成功后这个站点已经自带了一个默认的Nginx配置虽然现在里面还没有任何代码但整个请求链路已经通了。你可以先访问一下域名或者IP正常会显示一个默认页面说明Nginx工作正常。这里我想多啰嗦一句很多新手会把“建站”理解成一个很神秘的操作其实在宝塔里建站就是创建一个Nginx配置把域名指向一个目录仅此而已。搞清楚这个本质后面遇到404、访问异常时你就有了排查方向——先看配置指向的目录对不对。2.2 下载ThinkCMF源码用Git clone还是面板里的文件管理ThinkCMF的源码托管在Gitee上有两种获取方式一种是在服务器上直接用Git拉取。先通过SSH进入站点根目录然后执行cd /www/wwwroot/你的域名 git clone https://gitee.com/thinkcmf/thinkcmf.git .注意命令最后的这个点表示克隆到当前目录这样不会多出一层thinkcmf文件夹省得后面还要移动文件。如果你不喜欢用命令行也可以在本机下载ThinkCMF的zip压缩包然后通过宝塔的“文件”管理器上传到站点根目录之后在线解压。两种方式我都用过个人更推荐Git方式原因有两个一是免去上传解压的时间几百兆的源码包传到服务器再解压有时候还挺慢的二是以后官方发布了新版本在服务器上执行git pull就能直接更新代码比去官网重新下载替换方便得多。源码文件全部就位之后打开站点根目录你应该能看到app、public、vendor、data、composer.json这些文件和目录。看到这些说明源码算真正到位了。2.3 运行目录设置与伪静态配置这一步决定你访问的是首页还是404ThinkCMF的入口文件在public目录下也就是说网站真正要暴露给用户访问的根目录应该是public而不是整个项目根目录。这是ThinkPHP框架的标准结构目的是为了安全——通过这种方式应用的核心代码文件都在public外用户无法直接通过URL访问到应用代码。所以咱们需要告诉Nginx当用户访问你的域名时实际去public目录里找文件。在宝塔的“网站”列表里找到你的站点点“设置”切到“网站目录”页签把“运行目录”从默认的“/”改成“/public”然后保存。注意宝塔这里有个“防跨站攻击”的可选项默认是开启的建议保持开启不影响运行目录设置。保存之后再到“伪静态”页签里选择thinkphp模板直接保存。这一步的作用是让Nginx把所有不存在的文件请求都交给index.php去处理。这也是ThinkPHP单入口模式的要求如果不配置这条规则当你访问文章详情、分类列表这些URL时就会得到404。我见过的绝大多数“为什么我访问域名是404”的求助帖根因基本都在这两条配置上要么运行目录没改要么伪静态规则没加。这两步操作完了你的Nginx就已经完全准备好接待ThinkCMF了。2.4 文件权限没设置对安装向导根本跑不起来ThinkCMF运行过程中需要向某些目录写入文件比如缓存、日志、上传的图片。如果这些目录没有写权限安装向导会在环境检查阶段直接报错。在宝塔的“文件”管理器里进入站点根目录点击右上角的“终端”按钮或者直接SSH到服务器执行下面的命令来统一调整权限chown -R www:www /www/wwwroot/你的域名 find /www/wwwroot/你的域名 -type d -exec chmod 755 {} \; find /www/wwwroot/你的域名 -type f -exec chmod 644 {} \;第一条命令把站点目录的所有者改成www用户这是Nginx和PHP-FPM的运行用户后两条命令分别给目录和文件设置常规权限。注意chmod -R 777这种操作非常不建议。虽然它能解决一时的权限报错但等于把整站文件的写入权限向所有用户开放一旦服务器上跑了其他有漏洞的应用黑客能通过这些文件直接篡改你的网站代码。在ThinkCMF中data目录存放缓存、日志、public/upload目录存放上传文件对写权限的要求比较高当你只需要针对性放权时优先给这两个目录配好写权限就够了。这段操作完站点骨架全部搭建完毕域名能通Nginx能接到请求源码到位运行目录正确伪静态规则就绪权限干净。接下来就应该处理数据库了。3. 数据库导入与安装向导怎么填才不出错ThinkCMF和很多PHP应用一样安装时需要一个数据库来存放用户、文章、配置这些数据。我见过不少人在这个环节卡住多数情况是把数据库名、用户名、密码搞混或者字符集选错了导致后面的中文全部乱码。3.1 手动创建数据库三个关键点要记牢在宝塔面板左侧点击“数据库”然后点“添加数据库”。这里会让你填写三个信息数据库名、用户名、密码。宝塔为了和账户权限匹配实际创建的库名和用户名都会带上你填的前缀比如你填的是thinkcmf最终显示出来的可能长这样yourprefix_thinkcmf这个不要觉得奇怪是宝塔的命名习惯。三个关键点数据库名和用户名建议都用纯小写字母加数字不要用特殊符号避免后面在配置文件或SQL语句里出现转义问题。密码尽量自己手动输入用字母、数字、特殊符号混合。宝塔的“生成”按钮虽然方便但生成的密码太长太乱手动复制时容易落下字符反而不好。字符集一定要选utf8mb4。ThinkCMF的文章内容、用户昵称这些字段可能存储表情符号只有utf8mb4能完整支持utf8mb4是utf8的超集兼容性更好。创建完成之后你手头应该掌握这组信息数据库名带前缀、用户名带前缀、密码、数据库地址本机通常填127.0.0.1即可、端口默认3306。安装向导里全部要用到建议先放好在备忘录里。3.2 访问安装向导按顺序填完所有检查项现在访问你的域名正常情况下Nginx会把请求交给ThinkCMF的入口文件系统检测到还没有安装会自动跳转到安装向导。如果它没有自动跳转可以手动访问http://你的域名/install.php或者http://你的域名/index.php?s/install进入安装向导后第一步是环境检查页面。它会列出PHP版本、扩展加载情况、目录权限等检查项绿色打勾就是通过红色打叉就要先解决。常见的红色项就是我前面说到的fileinfo、gd等扩展缺失这时回到宝塔的“PHP设置”里在“安装扩展”中找到缺失项一键安装后重启PHP即可非常方便。检查全部通过后进入下一步填写数据库信息和管理员账号。数据库信息就按照刚才创建的那组资料填写管理员账号建议不要用admin这种常见的用户名可以选一个不那么容易被猜到但又比较好记的。密码一定要设置得复杂一些这个账号以后是要登录后台管理整站的安全级别不能低。填完点击安装画面会滚动一段时间然后提示安装成功。这个过程它其实是在做三件事把初始化SQL导入数据库、生成data/conf/database.php配置文件、写入安装锁文件防止重复安装。3.3 安装完成后立刻要做的一件事登录后台并清理缓存安装成功后页面一般会提示访问前台首页和后台地址。后台默认地址是http://你的域名/admin输入刚才设置的管理员账号密码登录进去。如果登录后页面样式错乱或者操作起来感觉卡顿不用急先到后台的“缓存管理”里清一次缓存让框架重新生成运行时文件。ThinkCMF这类框架的缓存机制很多时候会留下旧数据手动清一次能规避很多怪毛病。前台首页这时候也应该能正常打开了页面上能看到ThinkCMF默认带的一些示例数据比如文章、页面内容等。到这一步整套部署就基本完成了你可以开始在后台上传自己的内容替换默认的演示数据。这里我想补充一个判断标准一套部署是不是成功不能只看“后台能登录”还要看“前台的路由能不能正常解析”。你可以试着点击前台任意一个文章详情页如果URL能正常跳转并显示内容说明伪静态规则和运行目录都配置得没问题如果点进去404那多半还是伪静态规则不对回去检查。4. 部署后踩过的问题从404到500的排查清单写技术文章只讲顺利的路没什么意思反而那些把人卡住的坑最值得说。我自己部署ThinkCMF这几次几乎把常见的错误都撞了个遍这一节我把它们整理成速查表再加上几个印象深刻的案例给大家留个参考。4.1 常见问题速查表现象、原因、解决办法一目了然现象可能原因解决办法访问域名显示404Nginx默认页或者直接空白运行目录没有改成/public站点设置 - 网站目录 - 运行目录选 /public访问除了首页之外的内页全部404伪静态规则没配置站点设置 - 伪静态 - 选择thinkphp规则页面提示“PHP版本过低”或直接白屏500站点PHP版本不是7.x站点设置 - PHP版本 - 切换为7.4安装向导环境检查提示fileinfo、gd扩展缺失PHP扩展未安装宝塔PHP设置 - 安装扩展 - 安装对应扩展并重启数据库连接失败库名、用户名或密码填错核对宝塔数据库管理页的创建信息确认端口为3306安装成功但后台登录后是乱码数据库字符集不是utf8mb4数据库管理里确认字符集必要时重新创建数据库再装一次上传图片失败提示“目录没有写权限”或直接报500upload目录权限不足确保站点目录属主为wwwpublic/upload可写重复安装提示“安装程序已锁定”上次安装中断或已经装完删除站点根目录data/install.lock文件再刷新安装地址表格里列的这些是我见到最多的情况几乎覆盖了90%的新手求助帖。4.2 三个让我印象深刻的真实案例都差点把我逼疯先说第一个我第一次在一台新服务器上部署ThinkCMF时按照网上的教程一步步操作结果访问域名一直在转圈然后跳到一个莫名其妙的错误页面。后来才发现云服务商的安全组和系统防火墙都开着端口80根本没放行。这一点在宝塔面板里看不出问题因为面板用的是其他端口能正常访问但Nginx的80端口却对外不通。排查时一定要记得看两个地方云控制台的安全组规则以及宝塔“安全”页签里的系统防火墙两个都要放行80端口。第二个案例是伪静态规则选错了。宝塔的伪静态模板里有很多选择项thinkphp、laravel5、codeigniter等等。当时我图省事选了laravel5规则结果前台首页能打开但点进文章详情页全是404。原因很简单不同框架的路由规则不一样伪静态规则是跟着框架走的必须选thinkphp模板才对。后来在站点设置里把伪静态改成thinkphp模板问题立刻消失。第三个案例比较冷门安装完了后台一片白屏F12控制台报500错误。查了半年资料才发现是PHP的opcache扩展缓存了旧的PHP代码导致框架的更新没生效。解决办法是在PHP设置里把opcache的缓存清理一下或者直接重启PHP-FPM白屏问题就没了。遇到奇奇怪怪的白屏500先重启PHP服务这几乎能解决一半问题。4.3 看到错误别慌宝塔自带日志比搜索引擎好用遇到问题最忌讳的是凭感觉乱猜。宝塔面板自带了“日志”功能在“网站”列表的站点设置里能看到“网站日志”和“错误日志”两个入口。大部分问题的线索都藏在错误日志里。比如你访问首页转圈打开错误日志会看到类似“FastCGI sent in stderr: PHP message: PHP Fatal error”的字样顺着这条记录去搜索引擎查结果会非常明确。我以前排查问题也是喜欢直接在浏览器里看错误码后来才意识到服务器日志才是最准确的第一手资料。记住一个思路报什么错就查什么日志日志看不懂就复制关键词搜索。别自己瞎猜也别一上来就把整个环境重新装一遍那样只会浪费时间。5. 上线前的安全加固后台保护、SSL与自动备份装好能跑只是第一步。既然是Linux服务器上线前该做的安全措施一个都不能省。别等到被入侵了再后悔这些操作加起来也就十分钟。5.1 修改后台入口给ThinkCMF加一道自定义访问路径ThinkCMF默认的后台地址是/admin这是公开的谁都知道。也就是说只要你的域名可访问任何人输入域名/admin就能看到后台登录页。这时候如果账号密码强度不够很容易被暴力破解。最简单的加固办法是修改后台访问路径。ThinkCMF支持通过配置来修改后台入口在app/admin/目录下的配置文件中找到对应的路由配置项把默认的admin改成你自己定义的一个不常用的目录名比如myadmin2024这种。改完保存再去访问原来的/admin就会404只有访问你自定义的路径才能看到登录页。如果你不想动代码也可以用宝塔的“网站目录保护”功能在站点设置里给后台目录加一层访问密码效果类似多一层Nginx层的验证也很有效。注意修改后台路径后别忘了测试一下新路径是否能正常访问。如果不小心把配置改坏了后台可能会整个打不开这时去检查data/conf下的配置文件还原回去就好。5.2 开启HTTPS一条免费SSL证书就能搞定现在浏览器对HTTP网站的标记越来越不友好而且搜索引擎也更倾向收录HTTPS站点。开启SSL不仅能保护数据传输安全还能提升访客对网站的信任感。宝塔让这个操作变得极其简单在站点设置里找到“SSL”页签选择“Let‘s Encrypt”免费证书勾选你的域名点申请等一两分钟证书自动签发然后开启“强制HTTPS”开关。整个过程不需要你自己去操作任何证书文件宝塔全帮你处理好了。开启强制HTTPS之后建议再到“网站目录”页签的“防跨站攻击”旁边确认一下没有影响。同时如果你的网站有分页、详情页这些,记得清一次缓存再测试几遍确保HTTP跳HTTPS后路由还是正常的。5.3 定时备份站点和数据库比事后想办法恢复强一百倍服务器上的数据说白了就是你的网站命根子。代码可以重新下载但数据库里的文章、用户、配置丢了就是真的没了。所以定时备份这件事我建议在部署完成的第一时间就配置好。宝塔的“计划任务”功能可以做到自动化备份。添加一个Shell脚本类型的计划任务每天凌晨自动打包站点目录并备份数据库备份文件保留最近7份就够。甚至可以在任务里直接加上把备份传到其他存储的步骤异地容灾才算真到位。我个人最常用的方案是每天凌晨3点备份数据库每天凌晨4点备份整站文件保留最近7份。这样既不会占太多磁盘空间又保证了最坏情况下只丢失一天的数据。备份做完之后一定要想办法验证备份文件能正常解压和恢复。别等出事了才发现备份文件是损坏的这种教训在运维圈太常见了。说到这整套ThinkCMF部署流程就全走完了。从服务器选购、宝塔安装、源码部署、数据库创建到安全加固每一环节我都尽量把它拆开揉碎讲清楚。我个人的经验是在Linux服务器上搭PHP项目宝塔的价值不仅仅在于省事更在于它把一堆容易出错的可视化选项摆在你面前每个操作都变得可检查、可回退这才是新手最需要的安全感。希望这篇文章能让你少踩几个坑顺利把自己的站点跑起来。
返回列表