为 WooCommerce 选择服务器
WooCommerce 的官方文档要求 PHP 8.3 或更高版本、MySQL 8.0 或 MariaDB 10.6 及以上版本、HTTPS,以及至少 256 MB 的 WordPress 内存限制。它没有给出服务器 RAM 的数值。对小型网店来说,从 2-4 GB RAM 开始是合理的(这是一条经验法则,会因网店而异)。随着商品和订单增多,数据库和处理器的负载也会增加。
网店和博客不一样。购物车和结账页面对每位访客都不同,所以无法缓存,而且订单全天都在写入数据库。因此,在相同的访问量下,网店往往比博客需要更多资源。
官方要求
WooCommerce 服务器要求文档(官方建议)列出:
- PHP 8.3 或更高版本。
- MySQL 8.0 或更高版本,或 MariaDB 10.6 或更高版本。
- 支持 HTTPS。
- WordPress 内存限制为 256 MB 或更高。
- 使用 Apache 或 Nginx 作为 Web 服务器。
- 如果您的网店不是英文的,需要支持多字节字符串(mbstring)。文档把它视为取决于网店情况的要求,土耳其语网店就属于这一类。
256 MB 这个数字是单个 PHP 请求的上限,不是服务器的 RAM。如有需要,请把下面这一行加入 wp-config.php:
define( 'WP_MEMORY_LIMIT', '256M' );
PHP 7.4 等较旧的版本在文档中只作为旧版回退出现,并不推荐使用。
网店与博客有何不同
- 无法缓存的页面。WooCommerce 的缓存指南要求把购物车、结账和账户页面排除在缓存之外,因为它们显示的是该访客专属的数据。购物车 Cookie 等某些 Cookie 也应排除。请确认您的缓存插件做到了这一点。
- 写入负载。创建订单、更新库存和保存会话,都在不断写入数据库。博客很少写入,而网店全天都在写入。
- 后台任务。WooCommerce 通过名为 Action Scheduler 的内置任务队列来执行延后的工作(邮件、webhook、订阅付款)。该队列由 WP-Cron 触发,所以在访问量很小的网店上,任务可能延迟执行。在服务器上设置一个 cron 任务,按计划运行 WP-Cron(并配合
DISABLE_WP_CRON设置),就能摆脱这种依赖。您可以在 WooCommerce > Status > Scheduled Actions 下查看队列。
订单数据与 HPOS
高性能订单存储(HPOS)把订单保存在专为此设计的数据表中,而不是 WordPress 通用的文章表。自 WooCommerce 8.2 起,新安装默认启用。较早的网店不会自动切换。您可以在 WooCommerce > Settings > Advanced > Features 下启用它,兼容模式会让两种结构保持同步。对服务器来说,重点是:这种结构针对订单做了优化,但数据库仍然需要内存和磁盘。
起步配置
这些数值是经验法则,会因网店而异,并不是确切的承诺。
| 网店 | 起步 RAM | vCore |
|---|---|---|
| 新网店:商品少、订单少 | 2-4 GB | 1-2 |
| 成长中的网店:数千件商品,定期促销 | 4-8 GB | 2-4 |
| 繁忙的网店:促销频繁,插件和集成很多 | 8 GB 及以上 | 4 个及以上 |
插件的数量、图片的大小,以及促销期间的突发负载,与商品数量同样重要。对象缓存(例如 Redis)可以降低数据库负载,但它需要内存。先从小的开始,再根据高峰时段 free -h 和 top 的输出逐步增加。
网店变慢的常见原因
- 商品图片太大、没有压缩。
- 不用的插件,以及在每个页面上运行的多余脚本。
- 没有对象缓存,同一个数据库查询被反复执行。
- 不再获得维护的旧版 PHP。
解决这些问题往往应该排在升级之前。如果升级也没有帮助,问题通常出在配置上。
备份:只靠每日备份可能不够
在 Seturack,服务器每晚备份,并保留最近 7 天。网店全天都有订单进来,所以仅靠这一点可能不够。如果恢复备份,上次备份之后产生的订单会丢失。请更频繁地做数据库转储,并复制到别处:
mysqldump --single-transaction -u USER -p DATABASE | gzip > orders-$(date +%F-%H%M).sql.gz
在定时任务中,不要把密码写在命令行里。请使用权限设为 600 的 ~/.my.cnf 文件。在现成的 WooCommerce 服务器上,应用运行在 Docker 中,所以请在容器内运行数据库命令。那里的数据库是 MariaDB。容器中可能没有 mysqldump,请改用 mariadb-dump。商品图片位于 wp-content/uploads 文件夹,所以也要一并复制。
除了配置,还要准备什么
- HTTPS。对 WooCommerce 来说这是必需的。现成的 WooCommerce 服务器通过由您的 IP 派生的 sslip.io 地址以 HTTPS 打开。要绑定您自己的域名,请参阅这篇文章。
- 邮件。请安装 SMTP 插件,订单邮件才能发出。安装时没有设置邮件发送。
- 更新。安装完成后,WordPress、WooCommerce 和您的插件的更新由您自己处理。大的更新之前,请在面板中创建快照。快照不能代替备份,它只是让您能回到更新之前的状态。
预装了 WooCommerce 的服务器大约 3.5 到 4 分钟即可就绪,随着网店成长,您可以在面板中升级。请看看 WooCommerce 服务器页面。
评论0
暂无评论
成为第一个分享想法的人。
请登录或注册后发表评论。