编辑
2026-10-25
项目分享
00

目录

简介
部署
有服务器、域名
1. 前置条件
2. 安装 Nginx、PHP、数据库
3. 建数据库
4. 下载源码
5. 目录权限
6. 走安装向导
7. Nginx 配置
8. HTTPS
9. DNS(三家对比)
10. 检查清单
宝塔面板部署
常见故障对照
个人博客配置
基本设置
固定链接
主题与插件
分类、标签与页面
评论与反垃圾
SEO 与订阅
备份
多端写作实现
核心模型
后台在线写作
桌面与手机方案对比
写作纪律
日常发布流程

简介

Typecho 是一个轻量级的 PHP 博客程序,最早发布于 2008 年,国内老牌个人博客系统之一。它的特点是「小」:程序本体只有几百 KB,装上就能用,后台简洁,对服务器要求极低。

核心特点与优势:

  • 体积极小:官方 1.3.0 的安装包 typecho.zip 只有约 565 KB,1 核 1G 甚至更低配的服务器、虚拟主机都能跑,加载快。

  • 安装简单:上传源码 → 建数据库 → 浏览器访问 install.php,五分钟走完。

  • 数据库自由:MySQL、PostgreSQL、SQLite 都支持,小站用 SQLite 连数据库服务都不用装。

  • 后台克制:文章、分类、标签、页面、评论、外观、插件,没有多余模块,写博客够用。

  • 主题插件生态稳定:主题放 usr/themes/,插件放 usr/plugins/,上传启用即可,不需要重新构建。

  • 原生静态化友好:配合 Nginx 伪静态,文章 URL 可以做成 /archives/123/ 或 /posts/slug.html 这种干净形式。

需要说明的局限:

  • 动态 PHP 程序,必须有服务器或虚拟主机,不能部署到 GitHub Pages。
  • 插件数量远少于 WordPress,很多需求要改主题或写插件。
  • 官方迭代节奏慢,新特性少,但核心稳定、安全更新一直在跟。

和 WordPress 的取舍:

维度TypechoWordPress
资源占用极低,小内存机器可跑较高,插件多了更明显
上手速度装完即用,后台简单功能多但选项也多
插件生态少而精覆盖一切需求
安全面代码少、攻击面小插件和主题是主要风险来源
适合个人纯写作、低配机器需要复杂功能、多人运营

部署

Typecho 是 PHP 程序,部署 = Web 服务器 + PHP + 数据库 + 源码目录。国内最常见的两条路:自己装 LNMP,或者用宝塔面板。

有服务器、域名

1. 前置条件

  • 云服务器一台,1 核 1G / 1 核 512M 都能跑;系统 Ubuntu 22.04 / 24.04。
  • 域名一个。国内服务器必须先完成 ICP 备案。
  • 安全组 / ufw 放行 22 / 80 / 443。
  • 准备好数据库名、用户名、密码(下面会建)。

2. 安装 Nginx、PHP、数据库

bash
sudo apt update sudo apt install -y nginx mariadb-server \ php-fpm php-mysql php-mbstring php-curl php-xml php-gd php-zip unzip git php -v # 确认版本,7.4 以上即可,Ubuntu 24.04 默认 8.3 ls /run/php/ # 记下 fpm sock 文件名,后面 Nginx 要用

Typecho 依赖的扩展主要是 mbstring、curl、gd(缩略图)、xml,漏了会在安装页或后台上传时报错。

3. 建数据库

bash
sudo mysql
sql
CREATE DATABASE typecho DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'typecho'@'localhost' IDENTIFIED BY '换成强密码'; GRANT ALL PRIVILEGES ON typecho.* TO 'typecho'@'localhost'; FLUSH PRIVILEGES; EXIT;

字符集必须是 utf8mb4,否则 emoji 和部分中文会写不进去。

4. 下载源码

用官方仓库的 tag 拉取,避免第三方打包夹带东西:

bash
cd /var/www sudo git clone --depth 1 --branch v1.3.0 https://github.com/typecho/typecho.git typecho sudo rm -rf /var/www/typecho/.git

版本号按 Releases 页的最新稳定版替换。也可以从官网下载压缩包,解压到 /var/www/typecho。

5. 目录权限

bash
sudo chown -R www-data:www-data /var/www/typecho sudo find /var/www/typecho -type d -exec chmod 755 {} \; sudo find /var/www/typecho -type f -exec chmod 644 {} \;

安装向导要在根目录写 config.inc.php,所以整个目录归 www-data。装完之后再收紧权限也不迟,但不要一上来就设成只读。

6. 走安装向导

浏览器访问 http://服务器IP/install.php(域名解析好之后换成域名):

  1. 数据库类型选 MySQL(或 MariaDB),地址填 localhost;
  2. 填数据库名、用户名、密码,表前缀保持默认 typecho_;
  3. 设置站点名称、站点地址(必须带 http:// 或 https://)、管理员账号密码;
  4. 安装完成后会生成 config.inc.php。

装完做两件事:

bash
sudo rm /var/www/typecho/install.php # 确认安装成功、数据已备份后再删

以及登录后台 http://服务器IP/admin,先改一次管理员密码。

7. Nginx 配置

/etc/nginx/sites-available/typecho.conf:

nginx
server { listen 80; listen [::]:80; server_name blog.example.com; root /var/www/typecho; index index.php index.html; client_max_body_size 64m; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~ \.php$ { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php8.3-fpm.sock; } location ~ /\. { deny all; } location ~* \.(css|js|png|jpe?g|webp|svg|woff2?|ico)$ { expires 7d; add_header Cache-Control "public, max-age=604800"; } }

fastcgi_pass 里的 PHP 版本按 ls /run/php/ 的结果改(8.2 / 8.3 都可能)。

启用:

bash
sudo ln -s /etc/nginx/sites-available/typecho.conf /etc/nginx/sites-enabled/ sudo rm -f /etc/nginx/sites-enabled/default sudo nginx -t && sudo systemctl reload nginx

伪静态说明:Typecho 后台「设置 → 永久链接」勾选「启用地址重写」后,上面的 try_files 就能工作。如果仍有个别路径 404,换成官方 rewrite 规则:

nginx
location / { if (-f $request_filename/index.html) { rewrite (.*) $1/index.html break; } if (-f $request_filename/index.php) { rewrite (.*) $1/index.php; } if (!-f $request_filename) { rewrite (.*) /index.php; } }

8. HTTPS

bash
sudo apt install -y certbot python3-certbot-nginx sudo certbot --nginx -d blog.example.com sudo certbot renew --dry-run

签发成功后,把后台「设置 → 基本 → 站点地址」从 http:// 改成 https://,否则后台里生成的链接还是 http。

9. DNS(三家对比)

服务器 IP 假设 1.2.3.4:

服务商入口记录注意点
CloudflareDNS → RecordsA blog → 1.2.3.4橙云时 SSL/TLS 用 Full (strict);签证书先灰云
阿里云 / 腾讯云云解析 DNS → 添加记录A blog → 1.2.3.4,TTL 600国内服务器先备案
DNSPod域名解析 → 添加记录A blog → 1.2.3.4,TTL 600等 TTL 过期再验证
bash
dig +short blog.example.com curl -I https://blog.example.com

10. 检查清单

  • php -v ≥ 7.4,php -m 里有 mbstring / curl / gd / xml
  • 数据库字符集是 utf8mb4
  • 安装完成后 install.php 已删除,config.inc.php 存在
  • 后台「永久链接」已启用,文章链接能直接打开(不带 index.php)
  • HTTPS 生效,站点地址已改成 https://
  • 上传一张图片成功,文件落在 usr/uploads/
  • 数据库和 usr/uploads/ 已做一次备份

宝塔面板部署

国内虚拟主机 / 面板用户的常规路径:

  1. 服务器安装宝塔面板,登录面板;
  2. 软件商店安装 Nginx、PHP(7.4 / 8.1 / 8.2 均可)、MySQL;
  3. 网站 → 添加站点:填域名,同时勾选「创建数据库」,记下库名、用户名、密码;
  4. 把 Typecho 源码压缩包上传到站点根目录并解压;
  5. 浏览器访问 https://域名/install.php,按向导填数据库信息;
  6. 网站 → 设置 → 伪静态,规则选 typecho(面板自带);
  7. 网站 → 设置 → SSL,申请 Let's Encrypt 证书,开启「强制 HTTPS」;
  8. 后台把站点地址改成 https://域名。

宝塔的好处是 PHP 扩展、伪静态、证书都是按钮;代价是多一层面板,出问题时要同时看面板日志和 Nginx 日志。

常见故障对照

现象原因处理
文章页 404伪静态未开或规则不对后台开启地址重写;Nginx 加 try_files 或官方 rewrite
首页 500权限 / PHP 扩展缺失看 /var/log/nginx/error.log 和 PHP-FPM 日志;补扩展
安装页空白PHP 版本过低或缺 mbstringphp -m 检查,装扩展后重启 fpm
上传图片失败超过 upload_max_filesize / Nginx 上限改 php.ini 与 client_max_body_size,重启 fpm
后台登录后跳回 http站点地址还是 http改「设置 → 基本 → 站点地址」
打开 install.php 提示已安装config.inc.php 还在确认要重装再删除该文件,重新走向导
中文乱码数据库字符集不是 utf8mb4建库时指定,已建库需要转码
内存不足 502PHP-FPM 进程被 OOM降 pm.max_children 或加内存

个人博客配置

Typecho 的配置集中在后台,装完主题插件即可用。

基本设置

后台 → 设置 → 基本:

  • 站点名称、站点描述(首页 description 来源);
  • 站点地址:必须带协议,换域名或上 HTTPS 后第一时间改;
  • 时区:Asia/Shanghai;
  • 允许注册:个人博客建议关闭。

固定链接

后台 → 设置 → 永久链接:

  • 勾选「启用地址重写」;
  • 自定义格式推荐 /archives/{cid}/(稳定、不随标题变化)或 /posts/{slug}.html(可读性好);
  • 改格式后旧链接会失效,文章少时无所谓,多了要配 301。

主题与插件

  • 主题:usr/themes/ 下放主题目录,后台 → 控制台 → 外观 → 启用;
  • 插件:usr/plugins/ 下放插件目录,后台 → 控制台 → 插件 → 启用;
  • 主题和插件目录名不能改,否则后台识别不到;
  • 升级 Typecho 前先禁用插件,避免兼容问题导致白屏。

分类、标签与页面

  • 后台 → 管理 → 分类:建好分类,文章编辑页里勾选;
  • 标签直接在文章里填;
  • 独立页面用「创建页面」,适合关于、友链、留言板;
  • 导航在「外观 → 设置外观」里配置,多数主题会读取页面列表。

评论与反垃圾

后台 → 设置 → 讨论:开启「评论审核」和「评论需要填写邮箱」;垃圾评论多时装反垃圾插件(验证码、Akismet 类)。个人博客建议默认先审后发。

SEO 与订阅

  • 站点描述写清定位,文章摘要用「自定义摘要」字段;
  • Typecho 自带 /feed/ RSS 输出,可直接提交;
  • 站点地图装 sitemap 插件生成 sitemap.xml,再提交到搜索平台;
  • 上 HTTPS 后检查文章页源码里的 canonical 是否为新域名。

备份

三样东西:

bash
# 数据库 mysqldump -u typecho -p typecho > typecho-$(date +%F).sql # 上传的文件、主题、插件 tar -czf typecho-files-$(date +%F).tar.gz /var/www/typecho/usr /var/www/typecho/config.inc.php

恢复时先还原数据库,再把 usr/ 和 config.inc.php 放回原位。

多端写作实现

核心模型

内容在数据库,浏览器登录后台即写。没有 Git、没有构建,写完点发布就上线。

手机 / 电脑浏览器 → https://域名/admin → 写文章 → 发布

后台在线写作

  • 后台编辑器支持 Markdown(若当前版本默认不是 Markdown,可在设置或插件里切换),代码块、表格、图片插入都能用;
  • 图片上传进 usr/uploads/,按年月归档;
  • 文章可以设为草稿、私密、密码保护,也可以定时发布(按当前版本支持情况);
  • 手机浏览器可以完整使用后台,建议把 /admin 加到主屏幕。

桌面与手机方案对比

方案平台优点代价
浏览器后台全平台零配置,随时写,图片直接传长文编辑体验一般,依赖网络
XML-RPC 客户端桌面 / 手机可离线写、批量管理(MetaWeblog 协议)客户端配置繁琐,入口不是 /xmlrpc.php
本地 Markdown + 复制粘贴全平台用熟悉的编辑器,版本自己控图片要单独上传,格式需手动对齐

Typecho 支持 XML-RPC(MetaWeblog 协议),入口是 https://域名/action/xmlrpc——1.3.0 的根目录里已经没有 xmlrpc.php 了,老教程里的地址不要照抄;MarsEdit 一类客户端填这个地址即可。接口对公网开放存在暴力破解风险,不用时建议在 Nginx 里把 /action/xmlrpc 限制为只允许自己的 IP。

写作纪律

  • 文章摘要手动填,列表页和分享卡片都用它,自动截断经常截得莫名其妙。
  • 图片上传后压缩:宽 ≤ 1600px,jpg / webp,单张 < 300KB,小内存服务器尤其要注意。
  • 固定分类体系(3~5 个),标签随手加,别把分类当标签用。
  • 换域名、上 HTTPS 后,立刻更新站点地址,并检查文章里的站内绝对链接。
  • 改主题源码前备份,升级主题时直接覆盖文件会丢改动。

日常发布流程

Typecho 没有「发布命令」,流程就是:

  1. 浏览器登录后台;
  2. 新建文章,填标题、分类、标签、摘要;
  3. 正文写完,上传图片,预览一次;
  4. 发布;
  5. 手机打开前台确认排版。

如果同时维护静态站(Hugo / Hexo),建议分工明确:Typecho 放随手记,静态站放长文,避免同一篇内容两处维护。

本文作者:Weee

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!