将博客迁移到了 Typecho

杂记808 字

更新日志

  • 2023-03-22 部署方式更改成了 docker-compose

到目前为止,我已经记不清这是第几次折腾博客了,我希望这是最后一次。

这两年一直在用的是 hugo ,其实还是很不错的,生成 html 后用 shell 脚本直接就可以发布,但是由于自己比较懒,一直没有去搞评论模块,因为觉着感觉很麻烦,毕竟博客系统千千万,实在不行咱就换。

当前博客的架构

当前博客架构.png

HTTP 服务器选择使用 Caddy ,这是因为之前使用 hexo 的时候就选用了 Caddy 作为 HTTP 服务器,主要是使用他可以减少更多的手动配置,比如自动生成 SSL 证书,这样就非常方便,要不然还得去申请证书,部署证书,麻烦死了,同时 Caddy 的配置文件相对于 Nginx 而言非常简单,看个半个小时基本上就可以上手了。

因为是个人博客完全可以不考虑性能问题,Nginx 和 Caddy 的性能差异其实可以完全不考虑,怎么方便怎么来,没有安全漏洞就可以。

以下是配置文件:

xxx.xxx.xx {
  log {
        output file /data/logs/www/www.maksim.website.log
  }
  tls [email protected]
  reverse_proxy /* localhost:8999 {
    header_up X-Forwarded-Host {host}
  }
}

短短几行的配置就已经搞定了,是不是很简单。

选择的 Docker Image。

因为随着 Docker 在工作中的使用越来越多,习惯之后简直就是懒人福音,再也不用去下载各种安装包,然后再各种编译安装了,使用 Docker 压缩了大量的时间,让我可以有时间干其他事情,我目前的机器配置很垃圾,编译 PHP7 的话估计至少需要 10 分钟左右,这还没算中间可能存在各种各样的问题,人生苦短,及时用 Docker,而且日后迁移也非常方便。

docker image 选择了官方封装的镜像,地址如下:

typecho/Dockerfile: Docker Image packaging for Typecho (github.com)

安装命令:

docker run --name typecho-server -v  /var/typecho:/app/usr  \  
-p 8999:8080
-e TYPECHO_SITE_URL=https://your-domain.com \
-d joyqi/typecho:nightly-php7.4 

在安装过程中我使用的 Sqlite ,因为一个博客系统流量其实并不大,再使用 MySQL 就有些重了,而且还增加了使用成本,我的 VPS 配置很低,再跑一个 MySQL 真的是要了老命。

[root@vultrguest ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          821Mi       281Mi        77Mi        16Mi       461Mi       388Mi
Swap:         2.3Gi       120Mi       2.2Gi

现在内存就已经快耗尽了,已经开启了 Swap。

注意:在选择 Sqlite 的时候,可能有些 Bug,跑在 docker 里的 typecho 不会给自动生成 db 文件,所以需要在外面使用 sqlite3 xxxx.db 了,来生成 db 文件,并且将 db 文件的上层目录的文件权限设置成 777,否则 typecho 将无法操作 typecho。

这样一来 typecho 就已经搭建好了,过段时间其实还是要迁移到我的 k8s 集群上面。

迁移到了亚马逊

亚马逊一直有优惠活动,可以说很给力,1 年的免费期,所以就把博客迁移到了亚马逊上。

不过这次使用了 docker-compose,之前的 caddy 是直接启动的进程,这次为了方便,同时也是为了以后迁移方便,所以选择了 docker-compose,这样在做迁移工作就省时省力了。

目录结构如下:

drwxr-xr-x 4 root root  48 3月  20 14:09 caddy
-rw-r--r-- 1 root root 933 3月  20 14:01 docker-compose.yaml
drwxrwxrwx 6   33 tape 111 3月  22 11:17 typecho

docker-compose.yaml 如下:

version: '3'

services:
  caddy:
    image: caddy
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - $PWD/caddy/Caddyfile:/etc/caddy/Caddyfile
      - $PWD/caddy/data:/data
    restart: always
    environment:
      - TZ=Asia/Shanghai
    networks:
      - frontend

  typecho:
    image: joyqi/typecho:nightly-php7.4-apache
    volumes:
      - $PWD/typecho:/app/usr
    restart: always
    expose:
      - "80"
    environment:
      - TZ=Asia/Shanghai
      - TYPECHO_DB_ADAPTER=Pdo_SQLite
      - TYPECHO_SITE_URL=https://www.maksim.website
    depends_on:
      - caddy
    networks:
      - frontend
networks:
  frontend:

一些问题

  1. 由于使用的是 docker 创建的项目,一些插件和模板在安装的时候,需要依靠挂在的目录,这个时候需要注意文件权限。
  2. 没有找到日志记录在哪里,需要在看一下。
maksim
Maksim(一笑,吡罗),PHPer,Goper
OωO
开启隐私评论,您的评论仅作者和评论双方可见