1. 介绍

  Typecho 是一款基于PHP开发的轻量化博客,源码大小不到 600 KB。可别看体量小就认为它功能残缺,博客该有的功能它可是样样不少!如果你正好需要搭建以轻量为主的博客,不妨就尝试一下 Typecho,虽是小小麻雀但却也五脏俱全。
  Typecho 官方推荐的安装方式其实是源码安装,也就是说,它不适合用 Docker 来部署。事实是 Docker 部署会为其“增重”,但架不住用 Docker 部署方便维护,并且实际操作起来也不算复杂,Suny 这里还是选用该方式来进行部署。

2. 搭建环境

  • 服务器:本次搭建用的是雨云的服务器(当然你也可以选用腾讯云或是阿里云等云服务商,但最好选非大陆地区的服务器
  • 系统:Debian 11
  • 一枚域名,做好 DNS 解析
  • 提前安装好 Docker、Docker-compose
  • 【本文采用但非必要】:反代工具 Nginx Proxy Manager

3. 搭建方法

3.1 搭建

初始化服务器

sudo -i # 切换到 root 用户

apt update -y  # 升级 packages

apt install wget curl sudo vim git  # 安装常用工具

新建软件目录:

mkdir -p /root/data/docker_data/typecho

cd /root/data/docker_data/typecho

创建几个必要文件:

3.1.1 mysql

cd /root/data/docker_data/typecho

nano mysql.env

输入以下内容:

MYSQL_ROOT_PASSWORD=root_pass
MYSQL_DATABASE=typecho
MYSQL_USER=username
MYSQL_PASSWORD=password

3.1.2 php-fpm

cd /root/data/docker_data/typecho

mkdir php

cd php

vim Dockerfile #php 配置

输入以下内容:

FROM php:7.3.29-fpm
RUN apt-get update \
    && docker-php-ext-install pdo_mysql \ # 在官方镜像基础上添加 pdo_mysql
    && echo "output_buffering = 4096" > /usr/local/etc/php/conf.d/php.ini \  # 设置 buffer 为一个内存页 4kb
    && echo "date.timezone = PRC" >> /usr/local/etc/php/conf.d/php.ini # 设置时区为 PRC

3.1.3 nginx

注意
需要配置 rewrite 规则(typecho 后台的地址重写功能),如需指定域名,则要配置 server_name 字段。

cd /root/data/docker_data/typecho

mkdir nginx

cd nginx

vim default.conf

输入以下内容:

server {
    listen 80 default_server;
    root /var/www/html;
    index index.php;

    access_log /var/log/nginx/typecho_access.log main;
    if (!-e $request_filename) {
        rewrite ^(.*)$ /index.php$1 last; # 配置 rewrite 规则
    }
    location / {
        index index.html index.htm index.php;

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

    location ~ \.php(.*)$ {
        fastcgi_pass   php: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;
    }
}

下载源码:

cd /root/data/docker_data/typecho/typecho

wget https://github.com/typecho/typecho/releases/download/v1.2.0/typecho.zip

apt install zip -y 

unzip typecho.zip

创建docker-compose文件:

cd /root/data/docker_data/typecho

vim docker-compose.yml

输入以下内容:

version: "3"

services:
  nginx:
    image: nginx
    ports:
      - "8223:80"    # 左边可以改成任意没使用的端口
    restart: always
    environment:
      - TZ=Asia/Shanghai
    volumes:
      - ./typecho:/var/www/html
      - ./nginx:/etc/nginx/conf.d
      - ./logs:/var/log/nginx
    depends_on:
      - php
    networks:
      - web

  php:
    build: php
    restart: always
    expose:
      - "9000"       # 不暴露公网
    volumes:
      - ./typecho:/var/www/html
    environment:
      - TZ=Asia/Shanghai
    depends_on:
      - mysql
    networks:
      - web

  mysql:
    image: mysql:5.7
    restart: always
    environment:
      - TZ=Asia/Shanghai
    expose:
      - "3306"  # 不暴露公网
    volumes:
      - ./mysql/data:/var/lib/mysql
      - ./mysql/logs:/var/log/mysql
      - ./mysql/conf:/etc/mysql/conf.d
    env_file:
      - mysql.env
    networks:
      - web

networks:
  web:

检查端口是否被占用:

lsof -i:8223  # 如果端口被占用,重新自定义端口

如果无占用,运行:

docker-compose up -d 

 访问:http://服务器ip:8223 打开Typecho安装页面

3.2 更新

cd /root/data/docker_data/typecho  # 进入docker-compose所在的文件夹

docker-compose pull    # 拉取最新的镜像

docker-compose up -d   # 重新更新当前镜像

3.3 卸载

sudo -i  # 切换到root

cd /root/data/docker_data/typecho # 进入docker-compose所在的文件夹

docker-compose down    # 停止容器,此时不会删除映射到本地的数据

cd ~

rm -rf /root/data/docker_data/typecho  # 完全删除映射到本地的数据

4. 反向代理

 反向代理使用 Nginx Proxy Manager,在开始添加反向代理之前,确保已经做好了域名解析。现在,让我们按下图所示登录面板进行操作。


提示
填写的域名IP端口需对应,本文中的端口为 8223

 填写IP时,如果该服务和 Nginx Proxy Manager 在同一服务器中,则可以填入 Docker 容器的内部IP

 做完以上所有操作后,就可以通过访问域名来完成安装。

5. 使用教程

  • 数据库适配器无需修改,其余项目参照 3.1.1 mysql 小节内容进行填写即可
  • 复制初始化配置框内的内容,将其粘贴至 config.inc.php 文件中,点击继续安装即可完成安装

6. Typecho 项目链接

跳转项目请点我

7. 参考资料

Typecho项目官网
使用Docker-compose部署个人博客Typecho
docker-compose重建typecho博客
10分钟搭建一个Typecho博客|太破口!念念不忘,必有回响!