聊聊 WordPress

为什么之前不使用 wordpress

没有找到比较好的主题,但是现在有了。其实也是 Hexo 那边迁移过来的主题,不管怎么样,反正是有了。

为什么现在又开始使用 wordpress

静态博客 hexo 等无法逃避的问题,就是需要构建才能发布。就算你配置好 gitlab runner,也要 push 上去之后才能看到。不然你就要本地配置环境了。
同样是动态博客的 ghost 也面临着一个问题,就是支持度不够,我随便一个写作软件,比如 mweb 是直接支持 wordpress 的,但是 ghost 就是不支持,要么还要自己二次开发,对于越来越少时间的自己,并不划算。

怎么搭建

现在 docker 的技术很成熟,基本上配置对了,就能很容器的拉起来 wordpress 了。
我这边情况是这样的,因为贫穷,这个主机可能是不能只是跑wordpress的,所以这边配置了服务有

创建互联网络

因为每个服务都是单独使用 docker-compose 起来的,默认情况下,他们是不能互相连接的。需要为他们创建一个网桥,让他们都加入这个网桥,然后连接起来。
创建一个名字为 nginx 的网络

docker network create nginx

创建 mysql

docker-compose 如下

version: '2'
services:
  db:
    image: mysql:8.0.16
    command: --default-authentication-plugin=mysql_native_password
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: xxxx
    volumes:
      - mysql:/var/lib/mysql
    ports:
      - 3306:3306
volumes:
  mysql:
networks:
  default:
    external:
      name: nginx

需要注意配置加上 nginx 作为默认网络,如果不需要外部调试,可以不需要映射外部端口

创建 nginx-proxy-manager

因为 niginx-proxy-manager 并不支持 docker run 中配置 database,只能创建通过创建 一个 config 来配置数据库(其实想想是可以改一下用来支持的)

配置如下

{
  "database": {
    "engine": "mysql",
    "host": "db",
    "name": "nginx-manager",
    "user": "nginx",
    "password": "xxxxxxx",
    "port": 3306
  }
}

因为在容器互联的环境中,db 其实就是上次启动 mysql 的名字,根据这个能直接找到 mysql 容器的 ip

当然数据库也是需要创建 nginx 这个用户和 nginx-manager 这个数据库表的
我因为贪方便,直接把 conf 打包配置在镜像中了,这样我直接启动即可。
docker-compose 如下

version: '2'
services:
  nginx-manager:
    image: daocloud.io/hangox/mys:nginx-manager
    restart: always
    ports:
      - 80:80
      - 81:81
      - 43:443
    volumes:
      - data:/data
      - letsencrypt:/etc/letsencrypt
      - app:/app
      - nginx:/etc/nginx
    networks:
      - default
networks:
  default:
    external:
      name: nginx
volumes:
  data:
  letsencrypt:
  nginx:
  app:

其中 81 端口是用来访问配置页面的

记得登录进去把默认的管理员账号密码改掉

最后启动 wordpress

wordpress 这里就很简单了, docker-compose 如下

version: '2'
services:
  wordpress:
    image: wordpress
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: xxxxxxx
      WORDPRESS_DB_NAME: wordpress
    networks:
    - default
networks:
  default:
    external:
      name: nginx

nginx-proxy 配置

因为 nginx 图形化之后配置变得简单很多,这里就不讲了,讲一下主要配置项

nginx.hangox.com 是用来登录 nginx-proxy-manager 后台的,blog.hangox.com 因为是容器互联,配置的代理地址直接就是 http://wordpress

wordpress 主题

我这里用的主题是这款 NexT 这款默认带 markdown 和好看的代码高亮,可以直接使用。