Debian下用docker快速搭建wordpress

1. 简单介绍 

1.1 WordPress

之前个人笔记一直在使用 Notion,总的来说是一款非常棒的笔记软件,方便记笔记的同时也支持死链分享,适合写工作文档。

不过由于国内有段时间 Notion 访问较慢,个人认为未来 Notion 也有被封的风险。

也是后来尝试过 Typora、Bear、Mweb、蚂蚁笔记、Quiver、Devonthink 3、Evernote。总或多或少有一些不满意,后来了解到 WordPress 。虽然是个博客而非笔记,但似乎正好符合我的大部分笔记需求:

  • 方便地固定链接分享
  • 跨平台,跨设备同步
  • 可支持 Markdown
  • 方便地图片粘贴
  • 搜索功能将就能用,配合 Alfred 基本体验至少不算差

所以最初本着折腾的心尝试一下搭建 WordPress,目前体验还不错。且相比于 Notion,WordPress 由于是自己搭建的,可以选用自己喜欢的域名。分享时更容易显得厉害的样子。

1.2 docker 简介

docker 可以看作 Linux 下一个强大虚拟机软件。并拥有大量很棒的特性。根据个人短期有限的使用,可总结为:

  1. 高效,不对硬件进行虚拟,总体上使虚拟机(一般称为容器)的速度并不慢。
  2. 可以容易地将现有容器制作为镜像,方便备份、传输、发布。
  3. 拥有丰富的镜像库,涵盖大部分常用服务。需要时可以直接从网上拉取快速,并搭建服务。

之所以使用 docker ,使 WordPress 跑在容器中,而非直接在机器上,个人主要基于以下一些目的:

  • 可以方便地使 WordPress 和其他服务分离。无论瞎折腾 WordPress 还是瞎折腾其他东西,都不容易交叉感染。
  • 学习一手经验的一个好方法是不停地乱尝试,而乱尝试也意味着犯错。docker 可以通过删除容易、重新建容器的简单操作使“试错”成本降到极低。
  • 可以搭建多个服务,如 WordPress、jupyterlab、webdav、梯子、我的世界服务器、泰拉瑞亚服务器、饥荒服务器,分别位于不同的容器中,即使原始端口重合也没关系,可以用 docker 进行端口映射,最后再再外部使用反向代理。使一个服务器能够搭载多个服务。

1.3 服务器选择

由于 WordPress 最近似乎把大陆封禁了,各种访问提示 Too Many Request。且 WordPress 开发主力毕竟在国外,一些好用的插件会和比 Google 服务相关,在墙外会方便一丢丢。所以个人选择位于大陆以外的云服务器进行搭建。

当然,境外服务器似乎也有一些劣势,比如百度似乎不喜欢收录等等。

个人用的云服务器,谷歌云和 AWS 首年都有非常大的优惠,甚至算是免费。

也可以尝试阿里云香港服,对大陆访问应会有更高的稳定性,还可以很方便地备案和申请SSL证书。个人目前用的阿里云。

如果坚持用大陆内的服务器,则可能需要专门去下载压缩包(可以先试试,万一可以连通了),或者使用镜像服务器。

1.4 系统选择

之前个人选择 CentOS 8.1 64位。但今年 CentOS 似乎停止维护了。

于是转向了 Debian,一个开源的,由社区维护的系统。听说风评不错,试一试。

2. Docker 安装

(注:整体参考 Docker 官方的安装教程:https://docs.docker.com/engine/install/debian/

首先更新一下 apt-get,一个 Debian 下常用的包管理工具。

$ sudo apt-get update

使用 apt-get 安装一些之后需要的工具:

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

添加 Docker 的官方 GPG key:

$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -

添加完之后可以确认一下是否添加成功

$ sudo apt-key fingerprint 0EBFCD88

为 apt-get 添加 docker 官方的库地址

sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/debian \
   $(lsb_release -cs) \
   stable”

添加完成后,再次更新 apt-get,并安装 docker 相关服务

sudo apt-get update && sudo apt-get install docker-ce docker-ce-cli containerd.io

检查一下 docker 是否正常运行

sudo docker run hello-world

如果出现类似以上内容,则代表运行正常。

3. Docker-compose 安装

Docker-compose 可以方便地部署多个 Docker 服务。

(注:安装方法主要参考:https://docs.docker.com/compose/install/

安装 pip3

sudo apt-get pip3 -y

安装 docker-compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.27.4/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

修改权限并进行软链接

sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

4. WordPress 搭建

(注:主要参考https://docs.docker.com/compose/wordpress/

建个目录,用于管理 WordPress 搭建配置,并进入。比如:

cd ~ && mkdir wordpress && cd wordpress

安装 vim 用于文本编辑

sudo apt-get install vim -y

编辑搭建配置

sudo vim wordpress.yml

粘贴以下配置,可以做自己需要的修改:

  • 数据库持久化配置:db_data:/var/lib/mysql,保证容器删除再用重建后,设置、文章内容等不会丢失。但如果希望重置,则可以删去 volumes 配置,或者在需要重置时删去本机上的 db_data。
  • 数据库密码,一般来说只要不把数据库用的3306 端口开放出去,还是比较安全的,密码简单一些问题也不太大。
  • WordPress 所用的 database 名。
  • 端口映射,目前里面是 80:80,意味着用 80 端口就可以访问 WordPress 容器中的 80 web 服务器端口,但如果需要用反向代理等等,可能需要让出80端口,此时则简单地修改此处,修改为比如 1180:80 即可。
version: '3.3'
services:
   db:
     image: mysql:latest
     volumes:
       - db_data:/var/lib/mysql
     restart: always
     environment:
       MYSQL_ROOT_PASSWORD: somewordpress
       MYSQL_DATABASE: wordpress
       MYSQL_USER: wordpress
       MYSQL_PASSWORD: wordpress

   wordpress:
     depends_on:
       - db
     image: wordpress:latest
     ports:
       - "80:80"
     restart: always
     environment:
       WORDPRESS_DB_HOST: db:3306
       WORDPRESS_DB_USER: wordpress
       WORDPRESS_DB_PASSWORD: wordpress
       WORDPRESS_DB_NAME: wordpress
volumes:
    db_data: {}

修改完成后 Esc,键入 :wq 回车保存退出 vim。

接下来根据配置搭建 WordPress

docker-compose up -d

待运行完毕后,即可在浏览器中键入自己的 http://ip:80 或 http://域名:80

如果一切正常,应该可以成功打开网站,并进行后续一些设置:

登陆后便可以顺利玩自己的 WordPress 了。

4. 可能遇到的问题和解决方案

这套方案下,我暂时没有遇到什么问题,如果有问题,可以留言,我看看是否力所能及。

5. 其他补充内容

5.1 反向代理http为https

5.2 插件推荐

个人踩坑后认为还不错的插件,可以按需要试试

  • MathJax-LaTeX : 支持插入 latex 公式,如 \(\frac{\pi}{x^2}\)
  • Easy Table of Contents : 自动生成目录,如本文的目录
  • Category Order and Taxonomy Terms Order : 分类顺序设置支持
  • Ivory Search : 搜索增强插件,对中文支持还不错。可以加权搜内容、标签、标题等等。可以网站右上角搜个“数学”或其他什么试试
  • UpdraftPlus : 自动备份数据库和文件,可以备份至 Google Drive
  • OSS Upload : 将图片自动上传至 阿里云OSS ,可以设置图片样式(需要阿里云预配好),压缩或者加水印。
  • WP Super Cache : 自动页面静态化,我测试时并发支持至少提升了 4 倍
  • Search Regex : 支持正则表达式匹配和替换,方便快速修改链接或者 latex 格式之类的东西
  • Yet Another Related Posts Plugin : 自动在文章末尾加相关文章推荐

当然,通常原则上,插件应该尽量少用,或者能自己写就自己写,减少不可控风险。

5.2 可免费使用的图库

https://unsplash.com/

https://pixabay.com

5.3 使用CDN加速

6.参考资料

https://docs.docker.com/compose/wordpress/

https://thenewstack.io/docker-makes-deploying-wordpress-is-easier-than-ever/

https://www.cnblogs.com/brock0624/p/9795208.html

Leave a Comment