Docker系列 WordPress系列 搭建WordPress个人博客
本文最后更新于 25 天前,如有失效请评论区留言。

前言

通过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的安装》。注意,一定要在https域名设置好的前提下再进行后面的初始化步骤!否则可能会由于URL问题导致重定向错误!

在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站点喔!还记得怎么用吗?

后续更多内容敬请期待!

拓展阅读

版权声明:除特殊说明,博客文章均为Bensz原创,依据CC BY-SA 4.0许可证进行授权,转载请附上出处链接及本声明。 如有需要,请至学习地图系统学习本博客的教程。加Telegram群可获得更多帮助喔! | 博客订阅:RSS | 广告招租:留言板 | 博客VPS |

评论

  1. cye
    置顶
    Macintosh Chrome 102.0.0.0
    4月前
    2022-6-19 0:08:39
    • 提问,ufw allow port/tcpufw allow port的区别是什么呀?
    • docker-compose.ymlappWORDPRESS_DB_PASSWORD需要跟dbMYSQL_PASSWORD保持一致。否则访问的时候会报错。
    • 不得不吐槽一下中英文混打的时候markdown语法太麻烦了,得不停地切来切去,怕打出一个中文字符识别不对。
    • 博主
      cye
      Windows Chrome 102.0.0.0
      3月前
      2022-6-19 10:23:56

      这个评论区没有预览功能,有点鸡肋,哈哈!是的,谢谢提醒了!
      其实这些数据库的用法,要真的用过,踩过坑,才能掌握。没有debug的折腾是不完整的!
      如果设置了TCP,会比好没设置好,因为如果你不设置,开启的权限就是TCP/UDP。两者的关系可见此文。我觉得,既然TCP已经足够了,还是将权限设置得更窄一些。这其实只是一个权限设置的原则性问题,但在实际使用中可能没有区别。ヾ(≧∇≦*)ゝ

  2. bigyu
    Windows Edge 102.0.1245.44
    4月前
    2022-6-18 23:06:58

    甲骨文ARM机在docker里面装WordPress提示no matching manifest for linux/arm64/v8 in the manifest list entries,怎么解决?

    • 博主
      bigyu
      Windows Chrome 102.0.0.0
      4月前
      2022-6-18 23:09:55

      可否在你的VPS上输入:

      uname -a

      看看VPS的系统和架构信息?
      但一般来说,WordPress的镜像是支持arm64的。

    • 博主
      bigyu
      Windows Chrome 102.0.0.0
      4月前
      2022-6-18 23:10:58

      如图所示:


      查看图片
      image-20220618231043680

    • 博主
      bigyu
      Windows Chrome 102.0.0.0
      4月前
      2022-6-18 23:13:39

      我看了一下,应该是MYSQL镜像的锅。你换成自己机器的镜像即可。如下图


      查看图片
      image-20220618231300181

      • bigyu
        Bensz
        Windows Edge 102.0.1245.44
        3月前
        2022-6-19 8:30:46

        改成mysql:oracle,就可以了。感谢!

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇