ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Typecho部署教程:宝塔面板+Nginx+PHP+MySQL从零到上线

Typecho部署教程:宝塔面板+Nginx+PHP+MySQL从零到上线 两周前帮一个朋友把博客从虚拟主机迁到自己的 Linux 服务器上用的还是 Typecho。整个过程走完我顺手把部署笔记整理成了这篇博文Linux 系统打底宝塔面板做可视化运维Nginx PHP MySQL 跑 Typecho。Typecho 本身就是个轻量级博客程序安装包不到 1MB后台也清爽尤其适合个人博客、学习笔记和中小型内容站宝塔面板则把 Linux 上最劝退的 LNMP 环境配置、站点创建、SSL 证书申请全部图形化了。你只要有一台云服务器和一个域名跟着下面的流程走半小时左右就能把 Typecho 跑起来。文章里所有步骤都是我在真实环境里踩过坑之后整理出来的新手可以直接照抄老手也可以看看有没有能优化的地方。1. 为什么选 Typecho Linux 宝塔面板而不是其他组合1.1 Typecho 适合谁轻量到可以忽略学习成本Typecho 在国内博客圈里一直有一批死忠用户核心原因就是“轻”。它跟 WordPress 走的是完全不同的路线WordPress 功能多、插件生态大但同时意味着臃肿随便一个页面加载十几个脚本很正常Typecho 则把“写博客”这件事做得很纯粹安装包就几百 KB后台响应速度用“秒开”形容不过分。如果你的需求是认真记录技术笔记、写写生活随笔不想折腾复杂的页面构建器和会员系统Typecho 的默认主题和插件机制基本够用。我见过很多人一上来就选 WordPress结果为了速度装一堆缓存插件为了样式装一堆页面构建器最后服务器配置越拉越高其实博客的核心还是内容。Typecho 则适合那种“不想被建站工具绑架”的人它能把更多精力留给写作本身。当然它也不是没有缺点插件和主题数量远不如 WordPress社区维护节奏也慢但日常写博客完全不受影响。1.2 宝塔面板的价值把服务器运维这件事讲人话Linux 服务器本身是纯命令行的新手第一次进去面对黑乎乎的终端光是装 Nginx、PHP、MySQL 这套 LNMP 环境就能劝退一大半人。宝塔面板做了一件很重要的事把 Linux 上的常见运维操作图形化而且不是那种中看不中用的“控制台”而是真正能改配置、看日志、跑定时任务的管理工具。具体到 Typecho 部署宝塔能帮我们把下面这些事一键搞定安装 Nginx、MySQL、PHP 以及扩展创建网站站点并自动生成 Nginx 配置创建站点数据库并分配账号申请和续期 SSL 证书打包备份网站和数据库以及查看 Nginx 和 PHP 的错误日志。对我来说宝塔最大的价值不是省掉了敲命令的时间而是让“服务器发生了什么”变得可见排错效率高了一个量级。注意宝塔面板免费版对个人建站来说已经很够用了没必要去折腾来源不明的破解插件那些所谓的“开心版”很容易被植入后门拿服务器给别人当肉鸡得不偿失。1.3 同类方案横向对比我为什么没选 Docker有人会问都 202X 年了为什么不用 Docker 部署 Typecho我承认 Docker 确实能保证环境一致性迁移也方便但对 Typecho 这种小型项目来说它引入的复杂度往往大于收益。Typecho 对运行环境要求极低PHP MySQL 就能跑宝塔面板原生安装的环境完全够稳定出了问题社区资料也多。我做了一个简单对比贴出来供你参考。方案环境配置适用人群维护成本迁移难度手动编译/命令行 LNMP高需要熟悉源码编译进阶运维中中宝塔面板 LNMP低点几下完成大多数个人站长低低Docker docker-compose中需要理解容器熟悉容器化的开发者中低如果你本来就在用 Docker 管理其他服务那用 Docker 跑 Typecho 也不是不行如果只是为了这一个博客去学容器编排真没必要。我自己实际部署过三次 Typecho两次走宝塔一次用 Docker最后留在生产环境的反而是宝塔这个方案因为它后续改配置、看日志、备份都太方便了。2. 部署前准备服务器、系统与域名2.1 服务器配置怎么选Linux 发行版该怎么挑Typecho 是真不挑配置。早期我用过 1 核 1G 的小机器跑它Nginx MySQL PHP-FPM 三个进程加起来内存占用也就五六百兆访问量不高的情况下稳稳的。如果你是新手建议从 2 核 2G 起步这样即使后面开了 OPcache、装了各种插件系统依然很从容。带宽方面个人博客 3M 到 5M 足够静态资源后面可以再接 CDN。总之不要在服务器上花冤枉钱Typecho 不值得你为它买高配。系统镜像的选择上我的建议是Debian 12、Ubuntu 22.04、Rocky Linux 9 都可以选一个你稍微熟悉的发行版。现在很多云厂商默认推荐 CentOS但 CentOS 7 已经停止维护新部署不建议再用了。宝塔面板对这些主流的发行版支持都很好安装脚本会自动适配。2.2 域名解析A 记录其实就一步域名解析听起来很专业实际就一步在云服务商的 DNS 控制台里把域名的 A 记录指向服务器公网 IP。如果你还要用 www 域名可以单独再加一条 A 记录主机记录填 wwwIP 填同一个。解析配置好之后建议在本地终端里用 ping 或者 nslookup 验证一下确认解析已生效再继续。不同的 DNS 服务商生效速度不一样有些要几分钟有些要几小时。如果你等得着急可以在服务器的 hosts 文件里临时绑定一下先把博客跑起来但真正访问还是要等解析生效。我在实际操作中还会顺手做一个动作在宝塔面板的“网站”里添加站点时两个域名都填上一个主域名一个 www 域名这样后面就不用再为要不要加 www 而发愁了。2.3 安装宝塔面板命令不难但有两个坑安装宝塔面板最简单的办法是去宝塔官网找到对应系统的安装脚本复制后在服务器终端执行。脚本执行时间受服务器网络影响一般几分钟到十几分钟装完会输出面板地址、默认用户名和密码记得截图保存。安装命令大概长这样以官网最新脚本为准wget -O install.sh https://download.bt.cn/install/install_6.0.sh bash install.sh第一个坑是云服务器的安全组。很多新手装完面板发现浏览器访问不了面板地址问题八成出在安全组没放行端口。现在云厂商默认的安全组只放行 22、80、443 等少数端口你必须在控制台再放行面板端口和端口范围。不同厂商的操作入口不一样但逻辑都是“入方向规则”里加一条允许。第二个坑是首次登录后的安全设置。宝塔默认的 8888 端口和随机安全入口虽然能用但建议进面板后马上做两件事改一个不容易猜的端口并绑定一个安全入口路径。绑定安全入口后访问面板的 URL 会多一个路径后缀能挡掉大部分扫描器。这些都是面板初始化向导里的选项直接照做就行。3. 环境初始化与创建网站LNMP 安装、站点和数据库3.1 第一次进面板先装 LNMP版本怎么选登录宝塔面板后首页会有一个“软件推荐”或者“一键安装”的区域常见选择是 LNMPLinux Nginx MySQL PHP和 LAMP把 Nginx 换成 Apache。对 Typecho 来说直接选 LNMPNginx 的并发能力和伪静态配置都比 Apache 简洁。我有时候会看到有人为了省内存选择只装 Nginx PHP数据库用 SQLite但 Typecho 的日常使用还是 MySQL 更顺手后面备份、迁移、查数据都方便所以环境我建议一次装齐。组件版本可以这样选Nginx稳定版即可1.22 或 1.24 都行。MySQL5.7 是稳到不能再稳的选择如果服务器内存小于 1G可以考虑 5.7因为它比 8.0 吃内存少很多。8.0 也不是不行只是对一个博客来说性能差异感知不出来。PHP推荐 8.0 或 8.1。Typecho 1.2.x 兼容 PHP 8 系列而且 8 系列运行效率更高。装完之后记得在 PHP 设置里确认pdo_mysql、mbstring、openssl、fileinfo这些扩展已经开启Typecho 安装时依赖它们。宝塔默认一般都会启用但检查一遍更稳妥。3.2 添加站点数据库密码当场就要记好环境装完后在宝塔面板左侧菜单点“网站”然后“添加站点”。在这个页面里填写域名、选择 PHP 版本宝塔会帮你自动创建网站目录。页面往下拉到“数据库”区域选择“MySQL”并填一个数据库名、用户名和密码。这里我必须重点提醒密码尽量设置成包含大小写、数字和特殊字符的强密码并且立刻记录到自己的密码管理器里。很多人在这一步随便填了一个简单密码结果密码保存在浏览器里换台电脑就找不到了。数据库密码不像网站后台密码忘记之后找回很麻烦。另外创建站点时最好顺便把“FTP”一起创建或者干脆不用 FTP直接用宝塔的文件管理器上传文件。FTP 用起来有小概率出现文件属主不对或者权限问题对新手不友好我建议直接用面板自带的文件管理器上传和解压都是图形界面不容易出错。3.3 Typecho 源码下载与上传别把目录结构搞错添加完站点后网站根目录默认会有一个index.html这是宝塔生成的默认页面可以在确认站点访问正常后删掉。接下来下载 Typecho 源码有两种常用方式。方式一是用 SSH 在服务器上下载并解压cd /www/wwwroot/你的域名 wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip unzip typecho.zip如果提示没有 unzip先安装# Debian/Ubuntu apt install -y unzip # Rocky Linux/CentOS 系 yum install -y unzip解压后会生成一个build目录Typecho 的所有源码都在这个目录里。接下来有两种选择把 build 目录里的文件全部剪切到站点根目录或者到宝塔“网站”-“设置”-“网站目录”把运行目录直接指向/build。我习惯用前一种因为后续目录结构更清爽上传插件和主题时也更好找位置。移动文件的命令是cd /www/wwwroot/你的域名 cp -rf build/. ./ rm -rf build跑完之后强烈建议执行一条权限修正命令chown -R www:www /www/wwwroot/你的域名宝塔的 PHP-FPM 进程是以 www 用户运行的源码如果以 root 用户复制过去文件属主是 root虽然读取问题不大但后面安装插件、上传附件时很容易出现没有写权限的诡异错误。这一步就是提前排雷。4. 安装 Typecho 与核心配置从向导到 HTTPS4.1 浏览器安装向导数据库信息填清楚就成功一半源码放到位后浏览器直接访问你的域名就会看到 Typecho 的安装向导。如果你的域名还没解析生效也可以用http://服务器IP临时访问但安装完成后记得在后台把站点地址改成最终使用的域名。安装向导最关键的一步是填写数据库信息这里对应的是 3.2 节创建站点时生成的库名、用户名和密码。默认的数据库地址填localhost端口一般不用填保持默认即可。下面几项按实际情况简单填一下然后就等它写入配置文件。安装完成后会进入第二步设置管理员账号和密码这里不要再偷懒后台密码建议用密码管理器生成一个单独的强密码。安装结束后站点目录下会自动生成一个config.inc.php这是 Typecho 的核心配置文件里面保存了数据库连接信息。这个文件不需要手动改但注意不要把它传到公开目录之外的地方更不要泄露给别人里面存着数据库密码。4.2 伪静态与永久链接Nginx 规则这样配Typecho 默认的链接长这样/index.php/archives/123.html中间的index.php看着很碍眼也不利于链接美观。去掉它的方法就是配置伪静态。先在宝塔网站设置里找到“伪静态”选择 Typecho 规则然后保存。如果你愿意手动确认Typecho 在 Nginx 下的规则其实就是下面这一段location / { if (!-e $request_filename) { rewrite ^(.*)$ /index.php$1 last; } }伪静态为什么要配这个原理很简单当请求的文件在服务器上不存在时把请求重写到index.php上让 Typecho 的入口文件接管路由。如果你的站点目录下面确实有同名文件也可以不被重写所以用-e先判断文件是否存在。配好伪静态后进 Typecho 后台的“设置”-“永久链接”选择你喜欢的链接结构。我个人习惯用/archives/{cid}.html看起来干净也方便搜索引擎理解。改完链接结构后旧的链接地址可能会失效如果在网上已经发布过文章建议保持跟之前一致的格式避免流量丢失。4.3 SSL 证书一键申请 Lets Encrypt 并开启强制 HTTPS国内现在打开浏览器访问的时候如果地址栏显示“不安全”很多用户下意识就会关掉。给 Typecho 配置 HTTPS 已经不是可选项而是基本操作。宝塔面板把这件事做到了极致在“网站”-“设置”-“SSL”里选择 Lets Encrypt 证书填上你的域名点申请一分钟内证书就签发完成。申请成功后同一个页面会有一个“强制 HTTPS”的开关建议直接打开。这样所有 HTTP 请求都会 301 跳转到 HTTPS不会出现“一会儿带锁一会儿不带锁”的情况。如果你的站同时有主域名和 www 域名记得把两个域名都勾选到证书里或者至少让其中一个跳转到另一个。还有一个容易忽略的细节Lets Encrypt 证书有效期是 90 天宝塔面板会自动续期但续期依赖域名的解析记录。如果哪天你的域名换了解析服务商或者服务器 IP 变了续期脚本会失败。定期到面板的“计划任务”里检查一下续期任务是否正常执行能省掉很多麻烦。4.4 目录权限与后台保护新站点最容易忽略的 3 件事新站上线后下面三个安全动作我建议别偷懒。第一目录权限别一刀切 777。网站根目录下目录权限设置为 755普通文件设置为 644。只要文件属主是 wwwTypecho 就能够正常写入没必要给所有人写权限。如果你发现某个目录需要写但提示没权限优先用chown -R www:www调整属主而不是直接 777。第二隐藏 Nginx 版本号和基础错误信息。大部分扫站工具都会先看 Server 头判断你用什么服务、什么版本然后去找对应漏洞。你可以在 Nginx 配置里的http段加一行server_tokens off;让版本号不再显示。宝塔的 Nginx 管理里也有类似选项找不到的话手动改配置也很快。第三对后台路径/admin做访问控制。Typecho 后台路径固定这没法在程序里改但可以用 Nginx 限制来源 IP。适合那种有固定出口 IP 的用户比如自己办公室网络或者家有公网 IP 的情况。location ^~ /admin/ { allow 你的IP地址; deny all; }如果你没有固定 IP不建议用这条规则否则哪天 IP 变了你自己都进不了后台只能去服务器终端改配置。5. 常见问题与排查技巧实录5.1 安装时数据库连接失败尤其是 No such file or directoryTypecho 安装时最大的“劝退点”就是数据库连接。最常见的一种报错是SQLSTATE[HY000] [2002] No such file or directory看到这个英文很多人第一反应是数据库密码错了其实多数时候不是密码问题。这个报错的原因是 PHP 使用 Unix Socket 去连接 MySQL但找不到对应 Socket 文件。PHP 默认连接本地 MySQL 时会走 Socket 路径而宝塔里的 MySQL Socket 文件路径与 PHP 编译时的默认路径可能不一致。解决方法是回到安装向导把数据库地址从localhost改成127.0.0.1强制 PHP 走 TCP 方式连接 MySQL绝大多数情况下立刻就好。如果改成127.0.0.1之后报Connection refused那就要检查 MySQL 服务是否在运行或者 MySQL 是否只监听了本地地址。可以在宝塔软件商店里看 MySQL 的运行状态确认没问题再回到安装向导。5.2 页面 404有时不是伪静态的锅博客装好之后首页或文章页访问 404先用排除法定位。第一步看网站根目录下有没有index.php如果没有说明源码解压结构错了——很多人把build目录本身当成了站点目录根目录下实际没有入口文件这不 404 才怪。第二步检查伪静态规则。宝塔里虽然提供了 Typecho 规则但如果你手动改过 Nginx 配置文件或者后来切换过 PHP 版本规则可能没生效。改完伪静态后最好到 Nginx 设置里点一下“重载配置”光保存不生效的情况很常见。第三步看错误日志。宝塔的 Nginx 错误日志路径一般在/www/wwwlogs/你的域名.error.log打开后能看到具体的 404 是哪个请求路径能帮你更快定位是目录问题还是重写规则问题。5.3 上传主题插件失败、后台白屏上传主题或者安装插件时提示失败或者传完后台直接白屏这大概率是目录权限问题。Typecho 的usr/themes和usr/plugins目录需要 PHP 进程可写如果你的文件属主不是 www就会失败。在根目录执行一遍chown -R www:www /www/wwwroot/你的域名然后重新上传。后台白屏的另一个原因是 PHP 版本太新某些老插件不兼容。Typecho 插件大多是很久之前写的对 PHP 8 支持并不完美。解决办法是先通过宝塔切换 PHP 版本来临时确认是不是版本兼容问题如果确定是某个插件导致把插件目录从usr/plugins里先移走等后台恢复正常再决定要不要用这个插件。5.4 Typecho 部署问题速查表我把这几个典型问题整理成一个速查表收藏起来比临时百度方便。问题现象常见原因解决方式面板地址打不开安全组未放行面板端口到云控制台放行对应端口安装时连不上数据库数据库地址 localhost 走了 Socket改成 127.0.0.1数据库密码报错密码中包含特殊字符或填写错误用 phpMyAdmin 测试连接文章页 404伪静态未配置或未重载配置 Typecho 规则并重载 Nginx后台白屏插件不兼容当前 PHP 版本停用插件或切换 PHP 版本上传文件失败目录属主不正确chown -R www:www 站点目录后台无法登录Cookie 作用域和站点 URL 不一致检查后台“设置”中的站点地址图片加载慢原图直出且无缓存开启 gzip 或接入 CDN/图床6. 部署完成后的日常运维与性能优化6.1 备份策略不出事永远不知道它值钱站点上线后第一件事应该是配置自动备份。宝塔面板的“计划任务”功能可以直接添加“备份数据库”和“备份网站”两个任务周期设为每天一次保留最近 3 到 5 份备份即可。备份保存在服务器本地的/www/backup下不会占用太多空间Typecho 的数据量一般都很小。不过我必须强调备份文件如果只存在服务器本机那备份的意义就打折了。有一天服务器系统盘损坏本地备份也会一起消失。所以我习惯另外做一步把备份目录打包下载到自己的电脑或者同步到云存储。宝塔面板本身支持将备份发送到对象存储配置一下就多一条后路。手动恢复的方式也很简单在“计划任务”的备份列表里找到对应备份点击“恢复”即可数据库和网站文件都能一键还原。6.2 性能优化PHP-FPM、OPcache、gzip 三板斧Typecho 本身已经够快但服务器上的默认配置是按“通用站点”优化的几个关键参数值得自己再调一调。第一板斧是 PHP-FPM。如果你 2G 内存可以在 PHP 设置的“性能调整”里把运行模式改成动态并设置pm.max_children 30左右。每个 PHP-FPM 进程大约占 30M 到 50M 内存30 个子进程大概吃 1G 左右不会触发内存告警。参数大概如下pm dynamic pm.max_children 30 pm.start_servers 5 pm.min_spare_servers 5 pm.max_spare_servers 15第二板斧是 OPcache。PHP 是解释型语言每次请求都要把 PHP 文件翻译成字节码再执行会白白消耗 CPU。开启 OPcache 后翻译好的字节码直接存在内存里下次请求直接复用对 Typecho 这种项目能带来肉眼可见的提速。宝塔 PHP 设置里可以一键开启默认参数基本够用。第三板斧是 Nginx gzip 压缩。代码、JS、CSS 这些文本类资源开启 gzip 之后体积能减少 60% 以上。在 Nginx 配置的 server 段加入gzip on; gzip_min_length 1k; gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xmlrss;这三板斧落实之后一个完全没有 CDN 的 Typecho 站点首次访问速度都会有明显提升更不用说后续浏览器的静态资源缓存生效之后。6.3 日志、监控和安全收尾上线之后别以为就完事了实际上运维才刚开始。宝塔面板自带“监控”功能可以看到 CPU、内存、磁盘、带宽的实时和历史趋势。日常不必天天盯但每隔一段时间扫一眼能发现很多隐患比如内存持续上涨、磁盘慢慢占满之类。安全收尾方面我给自己的每一台服务器都会做几件事SSH 端口从 22 改成一个高位端口关闭 SSH 的 root 密码登录改用密钥登录。这些都在系统层面配置跟宝塔面板没关系但非常重要的安全习惯。改端口前记得先在云安全组放行新端口否则改完自己就进不去了这种尴尬我经历过一次之后就再也不敢忘。每隔几周我还会到宝塔的“安全”菜单里看下登录日志和 SSH 登录日志如果发现大量失败尝试那就说明有人在扫你的机器该加固就赶快加固。前前后后帮朋友和自己部署过十多次 Typecho我最大的体会是这个博客程序真的不难90% 的问题都出在环境、权限和伪静态这三件事上。很多人一看命令就慌但用宝塔面板把环境可视化之后Typecho 的难度已经低到“稍微细心一点就能独立完成”。最后再分享一个我自己的习惯所有部署步骤我都会顺手记成一份简短的笔记包括数据库账号、后台地址、备份位置、改过的端口因为它能省掉你半年后“这是我自己装的站吗”的迷茫。
返回列表