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 下一个强大虚拟机软件。并拥有大量很棒的特性。根据个人短期有限的使用,可总结为:
- 高效,不对硬件进行虚拟,总体上使虚拟机(一般称为容器)的速度并不慢。
- 可以容易地将现有容器制作为镜像,方便备份、传输、发布。
- 拥有丰富的镜像库,涵盖大部分常用服务。需要时可以直接从网上拉取快速,并搭建服务。
之所以使用 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 可免费使用的图库
5.3 使用CDN加速
6.参考资料
https://docs.docker.com/compose/wordpress/
https://thenewstack.io/docker-makes-deploying-wordpress-is-easier-than-ever/