# 告别宝塔和WordPress：低配服务器从零搭建Typecho博客完整教程

**URL:** <https://forum.rainyun.com/t/topic/13319>\
**Category:** 云服务器 RCS\
**Created:** [2026 年7 月 24 日 05:47 UTC](https://forum.rainyun.com/t/topic/13319 "2026-07-24T05:47:52Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

作者： ![gzy](https://forum.rainyun.com/user_avatar/forum.rainyun.com/gzy/32/12796_2.png) [@gzy](https://forum.rainyun.com/u/gzy)\
发布日期： [2026 年7 月 24 日 05:47 UTC](https://forum.rainyun.com/t/topic/13319/1 "2026-07-24T05:47:53Z")

</div>

​

原文来自我的个人博客：[告别宝塔和WordPress：低配服务器从零搭建Typecho博客完整教程 - 叹惋博客](https://twbk.cn/237.html "告别宝塔和WordPress：低配服务器从零搭建Typecho博客完整教程 - 叹惋博客")

## **一、为什么写这篇东西**

手里有台[雨云](https://www.rainyun.com/xls_)低配云服务器，一直放着吃灰。装WordPress吧，怕跑不动；用Hexo吧，每次写完文章要生成、部署，总觉得不够爽快。我就想找个“打开后台→写→发布”三步走完的方案，折腾了一圈，最后Typecho留下来了。

（不过我自己的博客还是用的wordpress哈哈，主要服务器配置够）

这篇文章就是我操作的全记录—— **不用宝塔、不用1Panel，全在命令行里敲** 。服务器配置不用高，几十块一个月的机器完全够用。你要是也有台闲置的低配服务器，想搭个纯粹写东西的地方，可以参考看看。

* * *

## **二、为什么选Typecho而不是别的**

**为什么不装WordPress？**

WordPress确实什么都能干，插件主题多到用不完。但代价也明显，核心代码臃肿，每次打开一个页面，后台要加载一大堆用不上的模块。我观察过内存占用，刚装完的WordPress空载就能吃掉很多内存，再加上MySQL，低配机器直接就喘不上气了。Typecho核心代码只有400KB上下，数据表才7张，同样是跑博客，Typecho清爽太多了。

**为什么不用Hexo、Hugo这类静态博客？**

静态博客快是真的快，几乎不占服务器资源。但我个人不太能接受那个工作流——写完文章要在本地生成静态文件，然后用git或者rsync推到服务器上。多了一步就觉得麻烦，有时候写了一小段想直接发出去，还要开终端敲命令，挺劝退的。Typecho是动态博客，后台写完点发布就完事了，写东西的冲动还在，文章已经上线了。

**为什么不直接用宝塔面板或者1Panel？**

宝塔安装完之后，自己就要占很多内存，还有各种后台进程一直在跑，对低配机器来说负担不小。1Panel跑在Docker上，容器本身也有开销。

我自己的想法比较简单：服务器资源本来就不多，能省一点是一点。直接装Nginx、PHP、数据库这三个核心东西，不要面板，不要额外服务，内存占用最低，也没有乱七八糟的后台进程。

* * *

## **三、准备工作**

开始之前你得准备好这几样：

1.一台云服务器，我这里用的是[雨云服务器](https://www.rainyun.com/xls_)，系统选的 **Ubuntu Server 24.04 LTS** （下面所有命令基于这个版本）

2.一个已经解析到服务器IP的域名，没有的话直接用IP访问也行，但后面配SSL会比较折腾

3.服务器安全组里 **80端口** 和 **22端口** 要放行，不然网页打不开，SSH也连不上

* * *

## **四、更新系统并装基础工具**

新机器拿到手第一件事就是更新软件源。这个习惯建议养成，尤其Ubuntu 24.04刚出没多久，很多包还在频繁更新。

```auto
sudo apt update && sudo apt upgrade -y

```

`update`是更新软件源索引，`upgrade`才是真正升级已安装的包。第一次跑的时候会列出很多包要更新，等它跑完就好（我跑了挺久的，别急，慢慢等就好了）。

接着装几个后面会用到的小工具：

```auto
sudo apt install -y wget unzip curl git

```

1.`wget`用来从网上下载文件

2.`unzip`用来解压zip压缩包

3.`curl`用来测试接口或者下载东西

4.`git`后面装主题插件可能会用到

* * *

## **五、装Nginx**

Nginx比Apache轻量很多，同样的硬件配置，Nginx能支撑的并发连接数比Apache高不少。处理静态文件（css、js、图片）的时候，Nginx直接用sendfile系统调用，不经过用户态拷贝，内存占用很低。

执行安装：

```auto
sudo apt install -y nginx

```

装完之后检查一下版本：

```auto
nginx -v

```

正常会显示`nginx version: nginx/1.24.0`（Ubuntu 24.04默认装的是1.24版本）。

![](https://forum.rainyun.com/uploads/default/original/2X/e/ed51307931bb8c87a890131526afc6fd4ee710c2.png)

启动Nginx并让它开机自己跑起来：

```auto
sudo systemctl start nginx
sudo systemctl enable nginx

```

`start`是立即启动，`enable`是把Nginx加到开机启动项里，下次重启服务器不用再手动敲命令。

验证是否启动成功：

```auto
sudo systemctl status nginx

```

看到`active (running)`就是正常的，按`q`退出来。

 ![](https://forum.rainyun.com/uploads/default/original/2X/e/eae1ce2f96fd86c2f1dab1190acae2b47635b3d7.png)

这时候打开浏览器，输入服务器的公网IP地址，能看到Nginx的默认欢迎页：

```auto
Welcome to nginx!

```

 ![](https://forum.rainyun.com/uploads/default/original/2X/c/ccd3177a2c5acd842a3e9e3d15e4c72b9320253b.png)

看到这个页面说明Nginx安装成功，可以往下走了。

* * *

## **六、装PHP**

Ubuntu 24.04默认仓库里的PHP版本是8.3。Typecho官方要求PHP 7.4以上，8.3完全没问题，而且8.3比7.4性能更好，内存管理也更优化。

安装PHP 8.3以及Typecho需要的扩展：

```auto
sudo apt install -y php8.3-fpm php8.3-mysql php8.3-sqlite3 php8.3-gd php8.3-mbstring php8.3-xml php8.3-curl php8.3-opcache php8.3-zip

```

这些扩展各自的作用我列一下：

- `php8.3-fpm`：PHP的FastCGI进程管理器，Nginx通过它来处理PHP请求
- `php8.3-mysql`：MySQL数据库驱动，如果用SQLite的话这个其实可以不用，但装了也不碍事
- `php8.3-sqlite3`：SQLite数据库驱动，我后面会用这个
- `php8.3-gd`：图像处理库，博客里的缩略图、验证码之类的需要它
- `php8.3-mbstring`：多字节字符串支持，处理中文必须要有
- `php8.3-xml`：XML解析，Typecho的Feed输出用得到
- `php8.3-curl`：HTTP请求库，有些插件需要远程获取数据
- `php8.3-opcache`：PHP字节码缓存，能显著提升执行速度
- `php8.3-zip`：Zip压缩支持，在线安装主题插件会用到

装完后查看PHP版本：

```auto
php -v

```

应该显示PHP 8.3.x。

![](https://forum.rainyun.com/uploads/default/original/2X/5/5ce4728d2058f2fbdea9e9a04cd43fa3f30dffa7.png)

启动PHP-FPM并设置开机自启：

```auto
sudo systemctl start php8.3-fpm
sudo systemctl enable php8.3-fpm

```

检查状态：

```auto
sudo systemctl status php8.3-fpm

```

看到`active (running)`就说明没问题。

 ![](https://forum.rainyun.com/uploads/default/original/2X/6/6bfab0bc19e3e6421a2bcc2d03483d64a2825092.png)

* * *

## **七、选数据库**

Typecho支持三种数据库：MySQL、PostgreSQL和SQLite。

**我强烈推荐低配服务器用SQLite。**

原因是SQLite不需要单独运行一个数据库服务进程，数据就存在网站目录下的一个文件里，不占额外内存，不需要配置用户名密码，也不需要操心数据库连接池。对于个人博客来说，SQLite的性能完全够用，我博客写了快两百篇文章，SQLite响应依然很快。

如果你非要装MySQL，可以装MariaDB（MySQL的一个分支，更轻量）：

```auto
sudo apt install -y mariadb-server

```

安装过程中没有提示设置root密码的话，装完后运行：

```auto
sudo mysql_secure_installation

```

根据提示设置root密码、删除匿名用户、禁止远程root登录等。

然后创建Typecho专用的数据库和用户：

```auto
sudo mysql -u root -p

```

进去之后执行：

```auto
CREATE DATABASE typecho DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON typecho.* TO 'typecho_user'@'localhost' IDENTIFIED BY '你的密码';
FLUSH PRIVILEGES;
EXIT;

```

不过这篇教程后面我会用SQLite来演示，省事。

* * *

## **八、下载Typecho**

先去Typecho的GitHub Releases页面看一眼最新版本号。写这篇的时候最新稳定版是1.3.0，操作的时候建议去确认一下有没有更新的版本。

进入临时目录下载安装包：

```auto
cd /tmp
wget https://github.com/typecho/typecho/releases/latest/download/typecho.zip

```

如果`wget`下载太慢，可以换成国内镜像或者先下载到本地再传到服务器。用`scp`传也可以：

```auto
scp /本地路径/typecho.zip root@你的服务器IP:/tmp/

```

解压：

```auto
unzip typecho.zip

```

解压后当前目录下有一个`build`文件夹，里面才是真正的Typecho程序文件。

* * *

## **九、创建网站目录**

我习惯把网站文件放在`/var/www/`下面，这也是大多数Linux发行版默认的Web目录位置。

创建目录并把Typecho文件移过去：

```auto
sudo mkdir -p /var/www/typecho
sudo cp -r /tmp/. /var/www/typecho/

```

查看一下目录结构：

```auto
ls -la /var/www/typecho/

```

应该能看到`admin/`、`install/`、`usr/`、`var/`、`index.php`、`install.php`这些文件和文件夹。

 ![](https://forum.rainyun.com/uploads/default/original/2X/f/f70e0099e38b14bfce69ff3a0400a289a5604651.jpeg)

常见问题：

| 问题 | 解决方法 |
| --- | --- |
| `wget` 下载太慢 | 按 `Ctrl+C` 终止，然后 `apt install -y axel` 装 `axel`，用 `axel -n 4 下载链接` 多线程下载 |
| `unzip: command not found` | `sudo apt install -y unzip` |
| `cp: cannot stat` | 说明路径写错了，先用 `ls -la` 确认当前目录下确实有 `admin`、`var` 等文件夹，再执行复制命令 |
| 复制后 `/var/www/typecho` 是空的 | 检查是否用了 `sudo`，以及目标路径是否正确 |

清理临时文件：

```auto
rm -rf /tmp/build /tmp/typecho.zip

```

* * *

## **十、设置目录权限**

权限这块容易搞错，我仔细说。

Web服务器的运行用户是`www-data`（Nginx和PHP-FPM默认都用这个用户），要让这个用户能读Typecho的所有文件，能写`usr/`目录（用来上传图片、安装主题插件）。

先把所有权给`www-data`：

```auto
sudo chown -R www-data:www-data /var/www/typecho

```

然后设置文件权限：

```auto
sudo find /var/www/typecho -type d -exec chmod 755 {} \;
sudo find /var/www/typecho -type f -exec chmod 644 {} \;

```

这两行是什么意思：`-type d`表示只处理目录，设置为755（所有者可读写执行，其他人可读执行）；`-type f`表示只处理文件，设置为644（所有者可读写，其他人只读）。

`usr/`目录需要可写：

```auto
sudo chmod -R 775 /var/www/typecho/usr

```

775比755多了一个组内用户可写的权限，实际运行中PHP-FPM是以`www-data`用户执行的，这个权限足够。

* * *

## **十一、配置Nginx**

Nginx的站点配置文件放在`/etc/nginx/sites-available/`，启用的时候在`/etc/nginx/sites-enabled/`里建一个软链接。

创建配置文件：

```auto
sudo nano /etc/nginx/sites-available/typecho

```

把下面这段内容贴进去。 **记得把`your_domain.com`换成你自己的域名，没有域名就直接填服务器的公网IP。**

```auto
server {
    listen 80;
    server_name your_domain.com;
    root /var/www/typecho;
    index index.php;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }

    location ~ /(usr|admin)/.*\.(php|phtml)$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }
}

```

解释一下每块是干什么的：

- `listen 80`：监听80端口，也就是HTTP的默认端口
- `server_name`：匹配的域名，访问这个域名才会走这个配置
- `root`：网站文件的根目录
- `index`：默认入口文件，访问目录时自动找index.php
- `location /`块：处理所有请求，`try_files`先找静态文件，找不到就交给index.php处理
- `location ~ \.php$`块：处理PHP文件，通过socket方式传给PHP-FPM
- 最后一个location：安全相关，限制`usr`和`admin`目录下的PHP文件必须经过PHP-FPM处理，防止直接访问恶意脚本

保存后按`Ctrl+X`，按`Y`，再按`Enter`退出。

检查配置语法是否正确：

```auto
sudo nginx -t

```

显示`test is successful`就对了。如果有报错，根据提示修改。

![](https://forum.rainyun.com/uploads/default/original/2X/2/2810484ddd46b0c8d93cf548c05da9ff87c14ed6.png)

禁用默认站点，启用我们刚创建的：

```auto
sudo rm -f /etc/nginx/sites-enabled/default
sudo ln -s /etc/nginx/sites-available/typecho /etc/nginx/sites-enabled/

```

重新加载Nginx让配置生效：

```auto
sudo systemctl reload nginx

```

* * *

## **十二、配置SSL证书和伪静态**

网站搭好之后，可以配置HTTPS。现在主流浏览器对HTTP网站会标记“不安全”，配了SSL之后地址栏显示一把小锁。

**前提条件**

1. 有一个已经解析到这台服务器IP的域名。免费证书不支持纯IP申请，必须绑定域名。
2. 服务器80端口能正常访问。Let’s Encrypt在颁发证书时需要验证域名所有权，通过80端口访问服务器上的特定文件来完成验证。

**安装Certbot**

Certbot是Let’s Encrypt官方推荐的证书申请工具。

```auto
sudo apt install -y certbot python3-certbot-nginx

```

**申请并安装证书（自动方式）**

运行这条命令，Certbot会自动完成证书申请、安装、Nginx配置修改整套流程：

```auto
sudo certbot --nginx -d your_domain.com

```

把`your_domain.com`换成你自己的域名。

第一次运行会让你填邮箱地址、同意服务条款。成功后Certbot会自动修改Nginx配置文件，添加HTTPS并配置HTTP跳转到HTTPS。

**如果不想让Certbot自动改配置（手动方式）**

先只申请证书：

```auto
sudo certbot certonly --nginx -d your_domain.com

```

证书会生成到`/etc/letsencrypt/live/your_domain.com/`

 ![](https://forum.rainyun.com/uploads/default/original/2X/a/a74a4393806d867d851c787b77357ed19946f10e.png)

然后手动编辑Nginx配置，直接替换整个文件内容：

```auto
sudo nano /etc/nginx/sites-available/typecho

```

把下面内容贴进去，记得替换`your_domain.com`：

```auto
server {
    listen 80;
    server_name your_domain.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name your_domain.com;
    root /var/www/typecho;
    index index.php;

    ssl_certificate /etc/letsencrypt/live/your_domain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/your_domain.com/privkey.pem;

    location / {
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php?$1 last;
        }
    }

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }

    location ~ /(usr|admin)/.*\.(php|phtml)$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
    }
}

```

保存后按`Ctrl+X`，按`Y`，再按`Enter`退出。

注意：这里`location /`改成了`if+rewrite`方式，这就是Typecho的伪静态配置， **配SSL的时候顺手就把伪静态一起配完了** ，后面不用再单独配置。

保存后检查并重载：

```auto
sudo nginx -t && sudo systemctl reload nginx

```

**验证证书**

浏览器访问`https://你的域名`，地址栏有小锁就成功了。

![](https://forum.rainyun.com/uploads/default/original/2X/f/f679a01394c51854a738340afb906f9fe85a50c2.png)

```auto
sudo certbot certificates

```

这个命令可以查看证书信息。

**自动续期**

Let’s Encrypt证书有效期90天，Certbot自带自动续期。

```auto
sudo systemctl status certbot.timer

```

显示`active`说明定时器正常运行，会自动续期。

 ![](https://forum.rainyun.com/uploads/default/original/2X/8/8b16df69578acda2771c007718135f0e26f02e3a.png)

**如果不想配SSL**

跳过这一步就行。纯HTTP也能正常访问，只是浏览器显示“不安全”，不影响博客功能。

若要配置伪静态，则修改Nginx配置：

```auto
sudo nano /etc/nginx/sites-available/typecho

```

在`location /`块里改成这样：

```auto
location / {
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php?$1 last;
    }
}

```

* * *

## **十三、通过网页完成安装**

前面的准备工作做完，现在可以打开浏览器了。

在浏览器地址栏输入你的域名或者服务器IP，正常会自动跳转到Typecho的安装页面。

 ![](https://forum.rainyun.com/uploads/default/original/2X/d/d91c76a68e6b7b1fa31bbdd3d8221a589ff405c4.png)

如果页面顶部出现红色的错误提示，注意看提示内容：

- **“缺少xxx扩展”** ：回去用`apt install php8.3-xxx`补装对应的扩展，装完重启PHP-FPM
- **“目录不可写”** ：检查`/var/www/typecho/usr`目录的权限，执行`sudo chmod 775`那一步
- **“404 Not Found”** ：可能是Nginx配置的`root`路径不对，检查一下

没有错误的话，点击页面下方的"下一步"。

接下来进入数据库配置页面：

1. **数据库适配器** ：选"SQLite原生函数适配器"

2. **其他** ：数据库前缀和数据库文件路径保持默认的即可（SQLite的数据文件会存在这个目录下）

 ![](https://forum.rainyun.com/uploads/default/original/2X/4/4340f49847c47e50f2ff6776ad50674ea95da07d.png)

> **如果你前面选的是MySQL，这里要填数据库地址（localhost）、数据库名（typecho）、用户名（typecho\_user）和密码。**

 ![](https://forum.rainyun.com/uploads/default/original/2X/2/22bb4dd443d338ffb5efd9b4f6b64f2ab3d59738.png)

然后填写管理员信息：

用户名：你登录后台用的账号（不要用admin这种太简单的）

密码：至少8位，大小写字母加数字组合

邮箱：用来接收评论通知、找回密码用的

 ![](https://forum.rainyun.com/uploads/default/original/2X/f/f001f9c41ad6ef58aaf4c6d10c6d2841fe5f66ce.png)

填完之后点"确认"，安装过程极快——因为SQLite只需要在`usr/data`目录下创建一个数据库文件，几乎没有等待时间。

安装成功后页面会显示一个初始密码（就是你刚填的那个）

 ![](https://forum.rainyun.com/uploads/default/original/2X/0/039e5d7052779b446b5dd76dbdbe435770469413.png)

* * *

## **十四、收尾和安全加固**

安装完成之后，安装目录`install/`必须删除，不然别人可以通过`/install.php`重装你的博客，后果很严重。

```auto
sudo rm -rf /var/www/typecho/install

```

顺便把`install.php`也删了（其实它就在install目录下，但多检查一下没坏处）：

```auto
sudo rm -f /var/www/typecho/install.php

```

现在访问 `http://你的域名/admin`，用刚才设置的用户名密码登录后台，就能开始写文章了。

* * *

## **十五、性能优化：开启PHP Opcache**

Opcache是PHP内置的字节码缓存模块，能把PHP代码编译后的字节码存在共享内存里，下次请求同样的页面直接取缓存，不用重新编译。对于Typecho这种PHP程序，开启Opcache能减少大概30%-50%的CPU开销。

编辑Opcache配置文件：

```auto
sudo nano /etc/php/8.3/fpm/conf.d/10-opcache.ini

```

找到或者添加以下几行：

```auto
opcache.enable=1
opcache.memory_consumption=64
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.enable_cli=1

```

配置项说明：

- `opcache.enable=1`：开启Opcache
- `opcache.memory_consumption=64`：缓存占用的内存，64MB对Typecho完全够用
- `opcache.max_accelerated_files=4000`：最多缓存4000个PHP文件，Typecho所有文件加起来不到1000个，这个值留了足够余量
- `opcache.revalidate_freq=60`：每60秒检查一次文件是否有更新，开发调试阶段可以设短一点，生产环境设长一些提高性能
- `opcache.enable_cli=1`：在命令行模式下也启用，执行`php`命令时也能享受缓存加速

保存后重启PHP-FPM：

```auto
sudo systemctl restart php8.3-fpm

```

* * *

## **十六、换主题和装插件**

Typecho默认的主题比较朴素，想换个好看点的可以去Typecho官方社区找，或者搜"Typecho 主题推荐"。

安装主题的方法：

```auto
cd /var/www/typecho/usr/themes/
sudo git clone 主题的git地址

```

或者手动下载zip包然后解压到这个目录。

然后在后台 → 控制台 → 外观，就能看到新主题，点击启用就行。

插件的安装方式类似，放到`/var/www/typecho/usr/plugins/`目录，然后在后台 → 控制台 → 插件里面启用。

* * *

## **十七、常见问题排查**

**访问页面出现502 Bad Gateway**

这个最常见的原因是PHP-FPM没有运行。检查一下：

```auto
sudo systemctl status php8.3-fpm

```

如果没启动就：

```auto
sudo systemctl start php8.3-fpm

```

如果启动了但还是502，检查Nginx配置里`fastcgi_pass`的socket路径是否正确。Ubuntu 24.04默认是`unix:/var/run/php/php8.3-fpm.sock`。

**访问页面直接下载php文件**

说明Nginx没有把PHP请求转发给PHP-FPM。检查`location ~ \.php$`这个块是否被注释掉了，以及`fastcgi_pass`是否正确配置。

**SQLite数据库无法写入**

检查`/var/www/typecho/usr/data/`目录的权限，确保`www-data`用户有写权限：

```auto
sudo chown -R www-data:www-data /var/www/typecho/usr/data
sudo chmod 775 /var/www/typecho/usr/data

```

**页面空白没有任何输出**

打开PHP错误日志看看：

```auto
sudo tail -f /var/log/php8.3-fpm.log

```

如果有错误信息会显示在这里，根据提示处理即可。

* * *

## **十八、资源占用参考**

我观察过这套组合的资源占用情况（以低配服务器为例，空载状态）：

Nginx：大概15-25MB内存

PHP-FPM：主进程加上几个worker进程，总共60-80MB

SQLite：数据库文件本身几MB到几十MB，不单独占内存进程

加起来空载内存占用在100-130MB左右，对于512MB内存以上的机器都能流畅运行。

如果开了Opcache，会多占一些内存（配置里设了64MB），但换来的是PHP执行速度的大幅提升，这笔交换是划算的。

* * *

## **十九、写在最后**

整套流程走下来大概半小时，从零到能登录后台开始写文章。我自己的博客现在就用这套方案跑了快两年，没出过什么大问题。

Typecho给我的感觉就是够用、不折腾——它没有WordPress那么多花哨功能，但写东西的核心体验做得很好。对于有一台低配服务器、想搭个干净博客的人来说，这个组合值得试试。

如果操作过程中遇到什么问题，可以把错误提示复制到搜索引擎里找一下，大部分问题别人都踩过坑了。
