Docker系列 WordPress系列 搭建WordPress个人博客

发布于 2022-07-02  38 次阅读


前言

通过Docker系列 你需要个人博客吗,你基本上已经确定自己要不要玩一个WordPress个人博客了。如果你需要的话,就来看一下怎么安装WordPress个人博客吧!

注意:目前不太建议在未开放443端口的机器上安装Docker版WordPress。经过测试,如果要在没有开放443/80端口的服务器上给wordpress布署反向代理和ssl证书是非常困难的,这个困难主要来于wordpress本身对于安全性的控制。通过调试复杂的nginx操作或可成功,但目前基于Nginx proxy manager(非80/非443端口)的管理方式暂时还未取得成功。当然,更重要的原因是,如果你的博客地址有个端口号,会给人一种很不正式的感觉

下面开始安装吧!

测试环境

我是在自己的VPS上进行测试的:

uname -a # Linux VM-12-8-ubuntu 5.4.0-42-generic #46-Ubuntu SMP Fri Jul 10 00:24:02 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
docker --version # Docker version 20.10.5, build 55c4c88
docker-compose --version # docker-compose version 1.28.6, build 5db8d86f

准备工作

按需修改工作目录:

work=~/docker/wordpress && mkdir -p $work/{db,app} && cd $work

按需修改端口,开启防火墙:

sudo ufw allow 4145/tcp comment 'wordpress' && sudo ufw reload

提前拉取镜像:

docker pull mysql:5.7 && 
docker pull wordpress:latest

配置yml文件

大致的思路是通过mysql和redis对wordpress的性能进行优化。新建文件docker-compose.yml:

vim $work/docker-compose.yml

添加以下内容。注意,如果你是arm的机器(比如白嫖甲骨文VPS), mysql:5.7请改成mysql:oracle

---
version: '3.0'

services:
  db:
    # arm的机器, mysql:5.7请改成mysql:oracle
    image: mysql:5.7
    restart: unless-stopped
    environment:
      MYSQL_ROOT_PASSWORD: rootpassword # 按需修改
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wordpress
      MYSQL_PASSWORD: yourpassword # 按需修改
    volumes:
      - './db:/var/lib/mysql'
    networks:
      - default

  app:
    image: wordpress:latest
    restart: unless-stopped
    ports:
      - 4145:80  # 按需修改。与防火墙开放端口一致。
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_NAME: wordpress
      WORDPRESS_DB_USER: wordpress
      WORDPRESS_DB_PASSWORD: yourpassword # 按需修改
    volumes:
      - './app:/var/www/html'
    links:
      - db:db
    depends_on:
      - redis
    networks:
      - default

  redis:
    image: redis:alpine
    restart: always
    volumes:
      - ./redis-data:/data
    networks:
      - default

networks:
  default:
    name: wordpress

直接上线服务

# 开启服务
cd $work && docker-compose up -d 

ddns-go & NPM

不了解Nginx Proxy Manager用法的小伙伴,请看《Docker系列 两大神器NPM和ddns-go的安装》。

在ddns-go或者域名托管后台设置好blog.exampledomain.com的动态域名解析(指向nas的ip)。

在NPM中设置好反向代理。如下图所示:

image-20220427090856986

设置完成后直接登陆:https://blog.exampledomain.com

初始化

访问https://blog.exampledomain.com后,可以看到这个页面,说明安装已经成功:

image-20220427091208299

这个是选语言的。我们选择简体中文。点击Continue继续下一步。

这里按需填写相关信息。可以用bitwarden生成一个强密码。对于这一项对搜索引擎的可见性,我建议你不要打勾,以后搜索引擎可以找到我们的博客。如果你的博客非常私密,你就打勾吧!最后点击安装WordPress进入下一步。类似于:

image-20220427091505533

最后成功了!你就按登录直接登录即可:

image-20220427091738685

默认的后台就是长这样:

image-20220427091838901

Redis设置

主要参考sleele的博文:WordPress搭配Redis加速网站访问速度

首先,打开文件:

sudo vim $work/app/wp-config.php

找到DB_COLLATEdefine( 'DB_COLLATE', 'XXX...'); 后添加如下内容:

/** Redis Object Cache */
define('WP_REDIS_HOST', 'redis');
define('WP_REDIS_DATABASE', '0');

如下图所示:

chrome_ctK0XGC3i2

安装Redis Object Cache插件。启动后的外观如下:

chrome_fZn6PaZqtZ

直接点击Enable Object Cache即可。成功时如下:

chrome_b6w536meVN

更多参数的设置可见:

less $work/app/wp-content/plugins/redis-cache/readme.txt

或者参考链接:https://github.com/rhubarbgroup/redis-cache/wiki/Configuration-Options

如果可以成功,你可以在博客的源代码页面底部看到下列注释(可能版本号会有所不同):

<!--
Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com

Retrieved 5056 objects (502 KB) from Redis using Predis (v1.1.10).
-->

小结

在VPS里通过Docker来安装WordPress真的太简单了。没有任何特殊设置。

当然,用非443端口的机器就自求多福了(~ ̄▽ ̄)~

WordPress到这里已经是安装成功了。以后我们会讲怎么进行设置的!

最后不要忘记,用duplicati备份你的WordPress站点喔!还记得怎么用吗?

后续更多内容敬请期待!

拓展阅读