Typecho是MIT协议开源的轻量级PHP博客/内容管理系统(PHP+MySQL/MariaDB/SQLite),核心特点是极简、高效、低资源占用,原生支持Markdown,可扩展主题与插件,支持静态化、多用户、自定义URL、评论系统,适配个人博客/小众站点,部署简单(PHP环境+数据库即可),支持Docker/宝塔面板一键部署,二次开发友好,数据自主可控。

刘郎阁
刘郎阁

内存占用:90 MB
镜像大小:910 MB

使用感受:8.9 分

1.基础定位:一款基于PHP开发的轻量级开源博客程序,前身为Magike,2008年正式更名,以GPL V2许可证发行。
2.极致轻量:程序本体不足400KB(非Docker项目),核心数据表仅7张,对服务器配置要求低,在低配主机或各类云主机上都能流畅运行。
3.核心功能:原生支持Markdown实时预览,后台为响应式设计,还支持多级分类、自定义字段等实用功能。
4.灵活扩展:通过插件和模板机制扩展功能与外观,无需修改核心代码,可轻松定制博客样式和新增功能。
5.兼容性强:支持MySQL、SQLite等多种数据库,适配跨平台运行,还能兼容BAE、SAE等云主机并支持自动安装。
6.安全稳定:持续更新加固漏洞,有输入过滤等安全机制,GitHub上爱好者提交的代码也让开发版稳定性较优。
7.该项目运行成功后会自动生成3个容器

具体操作

mkdir -p typecho/{data,www} && cd typecho && touch docker-compose.yaml nginx.conf

1.自定义路径新建“ typecho ”文件目录,并进入该目录内

2.在“ typecho ”文件目录下,新建“ data ”文件目录和“ www ”文件目录

3.同时,在“ typecho ”文件目录下,再新建“ docker-compose.yaml ”文件和“ nginx.conf ”文件

4.然后依次将以下对应的代码复制粘贴到“ docker-compose.yaml ”和“ nginx.conf ”文件内

① docker-compose.yaml 文件:

version: '3.7'

services:
  app:
    image: joyqi/typecho:nightly-php7.4-fpm
    container_name: typecho-server
    restart: always
    volumes:
      - ./www:/app
    environment:
      - TIMEZONE=Asia/Shanghai
    depends_on:
      - db
 
  db:
    image: mariadb:10.6
    container_name: typecho-mariadb
    restart: always
    volumes:
      - ./data:/var/lib/mysql
    environment:
      - TZ=Asia/Shanghai
      - MYSQL_ROOT_PASSWORD=VJOcc2025.123          # 数据库管理员账号的密码
      - MYSQL_DATABASE=typecho          # 数据库库名设为了 typecho
      - MYSQL_USER=typecho          # 数据库用户设为了 typecho
      - MYSQL_PASSWORD=VJOcc2025.123          # 数据库用户typecho 对应的密码
      
  web:
    image: nginx
    container_name: typecho-nginx
    restart: always
    ports:
      - 8885:80
    links:
      - app
    volumes:
      - ./nginx.conf:/etc/nginx/nginx.conf:ro
    volumes_from:
      - app
    depends_on:
      - app

② nginx.conf 文件:

worker_processes auto;

error_log  ./error.log warn;
pid        ./nginx.pid;


events {
    worker_connections  1024;
}

http {
    include       ./mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  ./access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    # Prevent nginx HTTP Server Detection
    server_tokens   off;

    keepalive_timeout  65;

    #gzip  on;

    #upstream php-handler {
    #    server app:9000;
    #}

    server {
        listen 80 default_server;
        root /app;
        index index.php;

        access_log ./typecho_access.log main;
        if (!-e $request_filename) {
            rewrite ^(.*)$ /index.php$1 last;
        }

        location / {
            index index.html index.htm index.php;

            if (!-e $request_filename) {
                rewrite . /index.php last;
            }
        }

        location ~\.php(.*)$ {
            fastcgi_pass   app:9000;
            fastcgi_index  index.php;
            fastcgi_param  PATH_TRANSLATED $document_root$fastcgi_path_info;
            fastcgi_split_path_info  ^((?U).+\.php)(/?.+)$;
            fastcgi_param  PATH_INFO  $fastcgi_path_info;
            fastcgi_param  SCRIPT_NAME $fastcgi_script_name;
            fastcgi_param  SCRIPT_FILENAME $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }
    }
}

5.接着执行以下代码:

docker-compose up -d

6.最后使用“ 服务器IP:8885 ”即可访问Typecho项目了。

Typecho Demo
Typecho官网
Typecho项目地址
Typecho基础搭建源代码 提取码:i0b6