本博客用到的基础技术和服务

一直惦记着要做这个博客,前期准备和实验花了不少时间,这里做一些记录.

Ghost+CDN/存储+镜像/缓存

博客系统是Ghost的Docker镜像稍作修改, 安装和配置国内的镜像资料很多,这里不再写了.

主要涉及以下几个文件:

./docker-compose.yml
./Dockerfile
./config.json
./content/adapters/storage/oss-store.js
./content/themes/starter
  • ./docker-compose.yml

整个服务用docker-compose up -d来启动,会自动build Docker镜像, 注意几个挂载点和环境变量的设置,内容如下:

version: '3'
services:
  twblog:
    build: .
    container_name: twblog
    network_mode: bridge
    restart: always
    ports:
      - 2368:2368
    environment:
      - "VIRTUAL_HOST=travis.wang"
      - "VIRTUAL_PORT=2368"
      - "NODE_ENV=production"
    volumes:
      - ./content:/var/lib/ghost/content
      - ./config.json:/var/lib/ghost/config.production.json
      - /tmp/twblog:/var/lib/ghost/content/logs

  • ./Dockerfile

如果不使用第三方的存储这个可以省掉了, 其实就是官方的镜像里没有阿里云的nodejs包,要安装一下:

FROM ghost:alpine
RUN npm install ghost-oss-store --registry=http://registry.npm.taobao.org
  • ./config.json

博客的配置可以参考官方文档, 主要是存储部分,配置阿里云的OSS

... 其他省略
  "storage": {
    "active": "oss-store",
    "oss-store": {
      "accessKeyId": "阿里云的",
      "accessKeySecret": "阿里云的",
      "bucket": "twblog",
      "region": "oss-cn-beijing",
      "fileKey": {
        "safeString": true,
        "prefix": "content/images/",
        "suffix": ""
      }
    }
  },
... 其他省略  

数据库考虑到没有多少的并发请求,数据量也不大,就直接用的sqlite3.在content/data/ghost.db注意要单独进行备份.

到这里, 用docker-compose up启动如果不出意外已经能够把博客跑起来了, 如果机器就跑这一个博客服务, 可以直接把80端口映射到docker的端口上就能让外网访问了, 下面是配置https和nginx


Let's Encrypt

//TODO

Dynamic Nginx

//TODO