在飞牛系统上搭建 Typecho 博客系统 - 原创持续更新
博客站:https://moji.565882.xyz
什么是Typecho
这是一款基于 PHP 的博客软件,旨在成为世界上最强大的博客引擎。Typecho 是根据 GNU 通用公共许可证 2.0 发布的。

主要特点
- 支持多个数据库(MariaDB、MySQL、SQLite、PostgreSQL)
- Markdown 支持
- 插件支持
- 主题支持
- 自定义字段
- 自定义页面
Docker容器部署
分两个部分,一个是Typecho,另一个是数据库Mariadb,独立数据库是为了将数据库作为公共数据库使用,方便其它容器链接和管理。
涉及到的资源
- typecho:
- mariadb
Linuxserver.io:https://docs.linuxserver.io/images/docker-mariadb/#usage
- adminer
hub.docker.com:https://hub.docker.com/_/adminer/tags
测试主题
- 老朱开源主题WaterDrop:https://github.com/ZShijun/WaterDrop
- 木灵鱼儿开源主题Typecho_Theme_JJ:https://github.com/mulingyuer/Typecho_Theme_JJ
- 开源主题Joe:https://github.com/HaoOuBa/Joe
1. 博客系统Typecho

docker-compose
version: '3.7'
services:
typecho:
image: joyqi/typecho:nightly-php8.2-apache
container_name: typecho-server
restart: always
environment:
- TYPECHO_SITE_URL=https://your-domain.com # 替换为您自己的域名
ports:
- 8080:80 # 端口只是一个例子,你可以把它改成任何你想要的端口 `8080`
volumes:
- /var/typecho:/app/usr # 将本地目录挂载到容器目录以获取持久性数据
docker run(可选,需要命令行操作)
# 拉起镜像
sudo docker pull joyqi/typecho:nightly-php8.2-apache
# 运行docker run命令
sudo docker run -d --name typecho-server -e TYPECHO_SITE_URL=https://your-domain.com -v /var/typecho:/app/usr joyqi/typecho:nightly-php8.2-apache
2. 数据库Mariadb

docker-compose
---
version: "2"
services:
mariadb:
image: linuxserver/mariadb
container_name: mariadb
environment:
- PUID=1000
- PGID=1001
- MYSQL_ROOT_PASSWORD= # 密码
- TZ=Asia/Shanghai
volumes:
- ./config:/config
ports:
- 3336:3306
networks:
- mynet
restart: unless-stopped
# 可视化管理工具 adminer
adminer:
image: adminer
container_name: adminer
environment:
- ADMINER_DEFAULT_SERVER=mariadb
ports:
- 8030:8080
networks:
- mynet
restart: unless-stopped
networks:
mynet:
external:
name: mynet
程序安装
1. MariaDB 创建数据库typecho

2. 初始化 Typecho

**1. 易配置失败点:**数据库适配器选择注意。 如果选择Mysql原生函数适配器,会报错`error`,而MariaDB旨在保持与MySQL的高度兼容性,要选择`pdo驱动Mysql适配器`。


- 新上传主题启用失败,预览不显示,读取不了文件
index.php

**解决办法:**修改新主题权限,给予公共读取权限。
可以安装应用1panel,这个是服务器管理工具。

其它补充
- 亲测版本注意错误:
这个镜像版本在配置SQlite数据库时会一直报错,原因是安装程序无法自动生成sqlite数据库文件。
joyqi/typecho:nightly-php7.4-apache
解决办法:
在官方仓库有解决办法:https://github.com/typecho/Dockerfile/issues/29

进入容器输入命令:
`chown -R www-data:www-data /app/usr`

- 如果选择SQlite数据库,直接选择 SQlite 原生函数适配器。但这个数据库很多主题不支持,大多主题是Mysql数据库开发的。

庐山真面目
前两年也安装过,后来迁移服务器就停了一直没再开。现在算是重拾起来但发现快忘得差不多了,一些易出错的地方花了我不少时间排查错误。故记录下来以便查询。


插件扩展
1. LZStat
基于 typecho 的浏览量、点赞量统计插件。
- 支持浏览量统计与显示
- 支持点赞量统计与显示
- 支持文章列表自定义排序
- 支持浏览量、点赞量异步接口调用
- 实现浏览量、点赞量当天不重复计算
- 支持点赞在当天取消
- 实现防抖策略,避免多次重复提交
- 实现榜单查询功能
