13 10 月 2026

WordPress 太重,Hexo 要编译,Ghost 要 Node。如果你只是想写文章、有个能访问的博客,Typecho 是最省心的选择:PHP 单文件安装、数据库可选 SQLite、后台简洁、资源占用极低。

这篇带你从一台空白云服务器开始,装好 LNMP(Linux + Nginx + MySQL + PHP),部署 Typecho,配上 HTTPS,完整走一遍。

财富云计算 的云服务器很适合跑 Typecho,1 核 2G 就能流畅运行。做内网服务、测试环境、游戏服务端可选 NAT 型(无独立公网 IP,价格比独立 IP 机型省一半以上)。

一、为什么选 Typecho

对比TypechoWordPressHexo
语言PHPPHPNode(静态生成)
数据库MySQL/SQLite/PostgreSQLMySQL无
安装上传即用五分钟安装向导需本地生成再部署
资源占用极低(1核1G 可跑)中(建议 2核2G+)静态,几乎为零
动态功能(评论/搜索)有有需第三方
主题插件生态一般极丰富丰富
适合个人博客、文档站各类网站纯静态博客

结论:想快速有个能写、能评论、能搜索的动态博客,且服务器配置不高——Typecho 是最佳选择。本站就是 Typecho 搭建的。


二、环境准备

以下以 Ubuntu 22.04 / Debian 12 为例(CentOS 命令会标注差异)。

1)更新系统

apt update && apt upgrade -y

2)安装 Nginx

apt install nginx -y
systemctl enable --now nginx

3)安装 PHP 及扩展

apt install php-fpm php-mysql php-gd php-curl php-mbstring php-xml php-zip -y
php -v
systemctl enable --now php8.2-fpm     # 版本号按实际

CentOS:

yum install epel-release -y
yum install https://rpms.remirepo.net/enterprise/remi-release-8.rpm -y
yum module enable php:8.2 -y
yum install php php-fpm php-mysqlnd php-gd php-curl php-mbstring php-xml php-zip -y
systemctl enable --now php-fpm

4)安装数据库(二选一)

方案 A:SQLite(最简单,推荐小博客)

apt install php-sqlite3 -y

不需要装数据库服务,Typecho 会把数据存成一个文件。备份直接拷文件。

方案 B:MySQL/MariaDB(并发更好)

apt install mariadb-server -y
systemctl enable --now mariadb
mysql_secure_installation        # 按提示设 root 密码、删匿名用户等

建库:

mysql -u root -p
CREATE DATABASE typecho DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'typecho'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON typecho.* TO 'typecho'@'localhost';
FLUSH PRIVILEGES;
EXIT;

三、下载并部署 Typecho

1)下载

cd /tmp
wget https://typecho.org/downloads/1.2.1-release.tar.gz
# 或官方 GitHub
# wget https://github.com/typecho/typecho/releases/download/v1.2.1/v1.2.1-release.tar.gz

mkdir -p /var/www/blog
tar -xzf 1.2.1-release.tar.gz -C /var/www/blog --strip-components=1
版本号以官网为准,建议去 typecho.org 看最新版。

2)设置权限

chown -R www-data:www-data /var/www/blog      # CentOS 是 nginx:nginx
find /var/www/blog -type d -exec chmod 755 {} \;
find /var/www/blog -type f -exec chmod 644 {} \;
chmod 755 /var/www/blog/usr/uploads            # 上传目录需要可写

四、配置 Nginx

nano /etc/nginx/sites-available/blog
server {
    listen 80;
    server_name blog.example.com;      # 改成你的域名

    root /var/www/blog;
    index index.php index.html;

    access_log /var/log/nginx/blog.access.log;
    error_log  /var/log/nginx/blog.error.log;

    client_max_body_size 20m;          # 上传限制

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    # 禁止访问敏感文件
    location ~ /\. {
        deny all;
    }
    location ~* \.(sql|bak|swp|old)$ {
        deny all;
    }

    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|gif|ico|css|js|woff2)$ {
        expires 30d;
        access_log off;
    }
}

启用:

ln -s /etc/nginx/sites-available/blog /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginx

PHP-FPM socket 路径确认:

ls /run/php/
# php8.1-fpm.sock / php8.2-fpm.sock —— 配置里要一致

五、Web 安装向导

浏览器访问 http://blog.example.com,进入安装页面。

  1. 确认环境检测通过
  2. 填数据库信息:

    • SQLite:选 SQLite,设置数据库文件名(如 typecho.db)
    • MySQL:填数据库名 typecho、用户名 typecho、密码、主机 localhost、表前缀 typecho_
  3. 创建管理员账号:用户名、密码、邮箱(别用 admin,容易被爆破)
  4. 完成安装

安装后务必:

# 安装程序只在首次使用,确认没问题后可删除
rm -f /var/www/blog/install.php

六、配置 HTTPS

apt install certbot python3-certbot-nginx -y
certbot --nginx -d blog.example.com

按提示选择"强制跳转 HTTPS",之后 Certbot 会自动改 Nginx 配置。

验证自动续期:

certbot renew --dry-run

详见本站《免费 SSL 证书申请与 HTTPS 部署》。


七、伪静态(去掉 index.php)

Typecho 默认 URL 形如 https://xxx.com/index.php/archives/1/,去掉 index.php 更好看也更利于 SEO。

Nginx 层:上面的配置已经用 try_files $uri $uri/ /index.php?$args; 实现了。

后台开启:

  1. 登录后台 → 设置 → 永久链接
  2. 勾选"启用伪静态"
  3. 选择 URL 风格(推荐:/archives/{cid}/ 或 /{slug}.html)
  4. 保存

如果保存后 404,检查 Nginx 配置是否正确、PHP-FPM 是否运行。


八、常用优化

1)启用 Gzip

在 /etc/nginx/nginx.conf 的 http 块:

gzip on;
gzip_comp_level 6;
gzip_min_length 1024;
gzip_types text/plain text/css application/json application/javascript
           application/xml text/xml image/svg+xml;

2)PHP 优化

nano /etc/php/8.2/fpm/php.ini
memory_limit = 128M
upload_max_filesize = 20M
post_max_size = 22M
max_execution_time = 60
opcache.enable = 1
opcache.memory_consumption = 64
systemctl restart php8.2-fpm

开启 OPcache 收益明显,PHP 性能可提升数倍:

apt install php-opcache -y

3)PHP-FPM 进程数(1核2G 参考)

nano /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 10
pm.start_servers = 2
pm.min_spare_servers = 2
pm.max_spare_servers = 5

配置低就调小,避免内存不够。

4)隐藏版本号

server_tokens off;
nano /etc/php/8.2/fpm/php.ini
expose_php = Off

九、备份策略

SQLite 方案(超简单):

#!/bin/bash
DATE=$(date +%F)
tar -czf /backup/blog-$DATE.tar.gz /var/www/blog
find /backup -name "blog-*.tar.gz" -mtime +30 -delete

MySQL 方案:

#!/bin/bash
DATE=$(date +%F)
mysqldump -u typecho -p'密码' typecho | gzip > /backup/typecho-$DATE.sql.gz
tar -czf /backup/blog-files-$DATE.tar.gz /var/www/blog/usr/uploads
find /backup -name "typecho-*" -mtime +30 -delete

加进 crontab 每天跑,详见《服务器备份与快照策略》。


十、安全加固

1)改后台路径

默认后台是 /admin/,容易被扫。可以在 config.inc.php 里改:

/** 后台路径 */
define('__TYPECHO_ADMIN_DIR__', '/mysecret-admin/');

需要同时把 admin 目录改名:

mv /var/www/blog/admin /var/www/blog/mysecret-admin

2)禁用文件编辑

后台"外观 → 编辑主题"可以直接改 PHP 文件,被入侵后是致命入口。建议关掉(部分版本可在 config.inc.php):

define('__TYPECHO_DISABLE_PLUGIN_EDITOR__', true);

3)限制后台访问 IP(可选)

location ~ ^/(mysecret-admin|admin) {
    allow 你的IP;
    deny all;
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.2-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
}

访问后台 location 也要正常解析 PHP,别只写 allow/deny。

4)其他

  • 管理员账号不要叫 admin,密码强且唯一
  • 装 fail2ban(见《fail2ban 防暴力破解实战配置》)
  • 定期升级 Typecho 版本
  • 删除不用的插件和主题
  • 防火墙只开 80/443/SSH

十一、常见问题

问题原因 / 解决
502 Bad GatewayPHP-FPM 没启动,或 socket 路径不对 → systemctl status php8.2-fpm、ls /run/php/
安装页提示目录不可写chown -R www-data:www-data /var/www/blog
上传图片失败client_max_body_size 太小、upload_max_filesize 太小、uploads 目录权限
伪静态 404Nginx 的 try_files 没配,或后台没开启伪静态
页面 500看 /var/log/nginx/blog.error.log,多半是插件或权限
后台登录不了检查 cookie 域名设置、HTTPS 混合内容
安装后无法登录检查数据库表前缀、清浏览器 cookie
主题显示错乱静态资源 404,检查 root 路径和伪静态

看日志永远是第一步:

tail -f /var/log/nginx/blog.error.log
journalctl -u php8.2-fpm -f

十二、进阶玩法

  • 多站点:一台服务器跑多个 Typecho,用 Nginx 多 server 块(见《Nginx 反向代理与多站点配置》)
  • CDN 加速:静态资源走 CDN,或整站接入
  • 对象存储:图片上传走 OSS/COS,减轻服务器压力(Typecho 有对应插件)
  • 邮件通知:配 SMTP 插件实现评论通知
  • Markdown 编辑器:Typecho 原生支持 Markdown,装 EditorMD 等插件体验更好
  • 迁移:打包 /var/www/blog + 导出数据库,在新机器还原,改 config.inc.php

十三、成本建议

Typecho 非常轻量:

规模建议配置
个人博客,日访问 < 10001 核 1G / 2G
小型站点,日访问 1000~50002 核 2G / 4G
图片较多加对象存储 + CDN

省钱技巧:

  1. 先买低配,资源不够再升级
  2. 图片放对象存储(比升级带宽便宜)
  3. 静态资源走 CDN
  4. 做内网/测试环境用 NAT 型,成本低一半以上

财富云计算 的云服务器适合部署 Typecho,1 核 2G 起步即可流畅运行,支持随时升级。如果只是在内网做文档站、测试环境,或跑游戏服务端,NAT 型云服务器(无独立公网 IP)价格比带独立 IP 的机型省一半以上,性价比非常高。

相关阅读:

  • 《Nginx 安装与配置入门》
  • 《免费 SSL 证书申请与 HTTPS 部署》
  • 《服务器备份与快照策略》
  • 《网站常见漏洞与基础防护》
延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:域名解析与 DNS 记录详解:A、CNAME、MX、TXT 到底怎么填
  2. 下一篇:网站打开慢的排查流程:从感觉卡到定位具体原因
发表评论 8