赞
踩
本篇文章聊聊,如何将这个持续诞生和维护了 21 年的开源软件“脱离数据库”运行,让它能够更加轻量、适合低成本离线运行。
2003 年,Michel Valdrighi 基于 b2/cafelog 创建了开源软件 WordPress,并在 GPL 协议下发布。
随后的二十年里,WordPress 一路狂奔,逐渐变成了全球使用量最大的 CMS,一边是老用户吐槽的过于臃肿的 “口诛笔伐”,一边是用户量的不断攀升,在 WordPress 插件市场中出现过非常多关于性能和成本优化的方案。
使用 SQLite 替代 WordPress 默认使用的 MySQL 就是其中不可不提的方案。
不过,目前官方还未提供开箱即用的 SQLite 容器镜像,甚至在项目中也没有安装使用方案,所以我花了一些时间,折腾了一个开箱即用的开源项目,基于官方镜像,进行 SQLite 集成,让我们能够在本地脱离“MySQL / MariaDB 数据库” 来运行 WordPress。
项目代码开源在 soulteary/docker-sqlite-wordpress,欢迎自取和一键三连。
在这个地球上,不论你想创建一个大或者小一些的网站,简洁或复杂一些的网站,WordPress 都能够满足你。目前公开的市场份额统计中,WordPress 占据了网站市场的 43.3%,CMS 市场的 62.8%,大概有 4.72 亿个站点基于它运行。
常见的网站类型包含:
不论 WordPress 的使用场景如何变化、受欢迎程度如何变化,唯一不变的是这些网站总是要使用 MySQL、MariaDB 这类数据库来进行数据存储。这个“限制”让 WordPress 必须运行在一些资源相对充盈的环境。
但其实如果你只有几千个用户、几千个帖子,并不需要使用 MySQL 或者 MariaDB,使用 SQLite 可以让运行资源要求降低到在手机或者路由器中运行你的网站。
之所以选择 SQLite ,因为它是一个几乎完美的选择:
让我们简单来了解下它的原理和当前方案面临的问题吧。
想要在 WordPress 中使用 SQLite 作为数据存储后端并不复杂,目前所有的实践几乎都是使用“插件”搭配 wp-content/db.php
这个方式,来替换内置的数据库抽象层,经过大量的测试验证,这个方法是可行的。
不过,或许 WordPress SQLite 支持应该在 WordPress Core 核心支持中,而非插件中,因为数据库选择应该是首次安装站点时去确定的事情,不应该在事后完成,额外的数据库迁移动作还是非常麻烦的。
所以,官方推出了开源项目 WordPress/sqlite-database-integration,虽然目前的使用方式还是插件模式,但是后续随着完整的语法兼容(SQLite 和 MySQL 对齐),完整的应用测试覆盖后,会被直接应用到 WordPress 主干也是非常有可能的。
为了解决上面插件“首次安装 WordPress不能使用 SQLite”,避免我们在“传统 WordPress 安装后迁移数据”这类麻烦事,以及,为了避免和社区里已经存在的各种三方版本的长时间的维护问题。
我创建了一个 GitHub 开源项目 soulteary/docker-sqlite-wordpress:
使用方法很简单,我们可以使用下面的方法来下载镜像:
# 下载最新版本的镜像
docker pull soulteary/sqlite-wordpress
# 下载指定版本
docker pull soulteary/sqlite-wordpress:6.5.2
然后使用下面的命令来运行一个开箱即用,不需要 MySQL 这类数据库的 WordPress:
docker run --rm -it -p 8080:80 -v `pwd`/wordpress:/var/www/html soulteary/sqlite-wordpress
然后,我们打开浏览器,访问 http://localhost:8080
就能够开始著名的 “1 分钟安装” 流程,来完成网站的初始化,开始安装插件、主题,撰写你的文章内容啦。
当然,如果你是“声明式”爱好者,我们也可以使用下面的容器配置文件:
version: '3'
services:
wordpress:
image: soulteary/sqlite-wordpress:6.5.2
restart: always
ports:
- 8080:80
volumes:
- ./wordpress:/var/www/html
看起来是不是和 WordPress 官方推荐的配置类似,但是更简单呢?将上面的内容保存为 docker-compose.yml
,然后执行 docker compose up -d
就能够在浏览器开始你的 WordPress 之旅啦。
得益于 SQLite 的低资源消耗和高效率,我们不论是打开后台、还是网站界面,速度都会非常的快。
由于 PHP 的类 “Serverless” 运行机制,除了一些“缓存”相关的资源使用外,我们可以使用非常少的资源来跑 WordPress 程序。绝大多数的程序使用资源会在你的页面渲染结束后被释放回操作系统,让其他应用来使用。
如果我们使用 docker stats
来查看系统资源使用,在闲置的时候,CPU 使用率普遍是 0.1% ~ 1%,内存消耗则在 80MB~200MB。在当前硬件资源情况下,提供丰富软件功能生态的 WordPress,或许显得还挺划算的。
本篇文章就先写到这里,下一篇文章里,我们深入聊聊最佳实践。这里有很多好玩的地方,比如:
–EOF
我们有一个小小的折腾群,里面聚集了一些喜欢折腾、彼此坦诚相待的小伙伴。
我们在里面会一起聊聊软硬件、HomeLab、编程上、生活里以及职场中的一些问题,偶尔也在群里不定期的分享一些技术资料。
关于交友的标准,请参考下面的文章:
当然,通过下面这篇文章添加好友时,请备注实名和公司或学校、注明来源和目的,珍惜彼此的时间
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。