本站包含联盟链接——如果你通过链接注册,我们可能获得佣金。 Affiliate links.

DigitalOcean Droplet 上 WooCommerce 安装指南 2026

DigitalOcean Droplet 上 WooCommerce 安装指南 2026

WooCommerce 将标准 WordPress 网站转变为完整的电子商务系统,必须处理购物车、支付处理和不断变化的产品目录。与主要提供静态内容页面的典型博客或企业网站不同,在线商店具有动态页面(如购物车和结账),需要特殊的缓存和 SSL 管理。本指南建立在 DigitalOcean Droplet 上的基本 WordPress 安装基础上,深入探讨了 WooCommerce 的具体细节——从选择适当的服务器规格到支付相关的安全考虑。

在 WordPress 顶部运行 WooCommerce 的在线商店的工作负载与一般内容网站有根本不同。涉及购物车、登录和结账处理的每个页面都必须始终动态处理——您不能像博客那样提供完全缓存的静态页面。因此,选择 Droplet 规格必须考虑处理来自多个用户的购物车 AJAX 调用的 PHP-FPM 工作进程数量,而不仅仅是单个页面加载中提供的内容量。对于拥有数百个产品和流量较少的初创商店,$12/月 Droplet(2 GiB 内存 / 1 vCPU / 50 GB SSD / 2,000 GiB 传输)足以用于测试和启动小型商店。但是,一旦您开始接收真实订单并添加优惠券系统、会员系统或库存管理集成等插件,您应该升级到 $24/月 套餐(4 GiB 内存 / 2 vCPU / 80 GB SSD / 4,000 GiB 传输),这为拥有数百到数千个产品的中型商店提供最佳价值。对于拥有许多产品变体和促销期间流量较高的大型目录,请考虑 $48/月 套餐(8 GiB 内存 / 4 vCPU / 160 GB SSD / 5,000 GiB 传输),以便 MySQL 和 PHP-FPM 有足够的资源,使页面在假日销售期间不会卡顿。另一个重要的考虑因素是您的数据库,因为 WooCommerce 的订单和订单元表增长速度比标准帖子表快得多。一旦您每月处理数千个订单,迁移到 DigitalOcean Managed MySQL(起价 $15.15/月,用于 1 vCPU / 1 GiB 内存,10-30 GiB 存储)将减少主 Droplet 上的负载,并提供自动数据库备份,无需编写脚本。对于需要为客户提供低延迟的泰国用户,我们建议首先选择 sgp1(新加坡)地区,以 blr1(班加罗尔)作为第二选择。另请记住,DigitalOcean 以按秒计费,最少 60 秒或 $0.01 最低费用(以较高者为准),因此您可以在做出最终决定之前测试不同规格,而无需产生高成本。

安装 WordPress 和 WooCommerce

这一点很重要——安装 LEMP 栈、WordPress 核心和初始配置您的域遵循与在 Droplet 上标准 WordPress 安装相同的步骤,详细信息已在 WordPress 安装指南中提供。本节重点介绍当您的目标是在线商店时有何不同之处。完成 WordPress 核心设置后,使用 wp plugin install woocommerce --activate 通过 WP-CLI 安装 WooCommerce 插件,然后运行设置向导以配置您的货币、商店地址和配送方法。与标准 WordPress 不同的第一件事是 PHP 设置,因为 WooCommerce 需要比典型内容网站更多的资源。您应该在 php.ini 中设置 memory_limit = 256M 或更高,或在 wp-config.php 中通过 define('WP_MEMORY_LIMIT', '256M'); 定义它,并将 max_execution_time 增加到至少 300 秒以处理通过 CSV 文件的批量产品导入。另一个经常被忽视的关键细节是 WP-Cron,WooCommerce 依赖它来处理重要的后台任务,如在设定时间后取消未支付的订单、发送低库存警报和同步订阅。只在有人访问您的网站时运行的伪 cron 系统对商店来说不够可靠,因此您应该使用 define('DISABLE_WP_CRON', true); 在 wp-config.php 中禁用它,并改为设置系统 cron 作业,例如 */5 * * * * wget -q -O /dev/null https://yourstore.com/wp-cron.php?doing_wp_cron 每 5 分钟运行一次后台作业,不管访客活动如何。还要验证您已将永久链接设置为文章名称格式,以保持产品 URL 对 SEO 友好,并让 WooCommerce 通过设置向导自动创建您的购物车、结账和我的账户页面,而不是手动创建。

为结账页面配置 SSL

WooCommerce 结账页面是您的商店最敏感的部分,因为它涉及客户信用卡和个人信息。尽管在泰国与 WooCommerce 一起流行的大多数支付提供商——如 Omise、2C2P 和 Stripe——使用托管结账或令牌化方法来防止实际卡号直接通过您的服务器传递(将 PCI DSS 合规范围减少到 SAQ A 或 SAQ A-EP),但嵌入它们的 iframe 或表单的页面仍然必须仅通过 HTTPS 加载,因为浏览器和支付提供商将拒绝在未加密或混合内容页面上操作。基本步骤是使用 Certbot 从 Let's Encrypt 安装免费 SSL 证书,命令如 certbot --nginx -d yourstore.com -d www.yourstore.com,它自动颁发证书并设置 HTTP 到 HTTPS 的重定向。之后,您需要做的远不止拥有 SSL——转到 WooCommerce > Settings > Advanced 并启用"强制安全结账"选项,以确保结账页面始终通过 HTTPS 运行,即使用户通过旧的 http 链接到达,并在 Nginx 级别添加 HTTP 严格传输安全(HSTS),使用标头如 add_header Strict-Transport-Security "max-age=31536000" always; 来告诉浏览器此网站必须仅通过 HTTPS 访问。常见的问题是来自产品图像或主题脚本的混合内容,仍然在较旧的数据库中链接为 http://,您可以通过运行 WP-CLI 搜索替换来修复它,例如 wp search-replace 'http://yourstore.com' 'https://yourstore.com'。最后,确保 Certbot 的自动续期通过 cron 或预安装的 systemd 计时器运行,以便您的证书永远不会在交易中期过期并为客户造成安全警告。

要点总结: 通过 certbot --nginx -d yourstore.com -d www.yourstore.com 从 Let's Encrypt 颁发免费 SSL 证书

使用缓存和 CDN 加速

加速 WooCommerce 商店与加速典型博客不同,因为您不能在整个网站上启用完整页面缓存。购物车、结账和我的账户页面必须始终显示每个人的特定数据,因此如果缓存设置错误,可能会发生严重问题——比如客户 A 看到客户 B 的购物车——因为缓存系统向每个人提供相同的旧 HTML。正确的方法是按页面类型分割缓存规则:产品和商店页面等公共页面可以照常使用完整页面缓存,但购物车/结账/我的账户页面必须始终绕过缓存。如果您使用的是 Nginx FastCGI 缓存,请根据 WooCommerce Cookie 添加绕过条件,如 fastcgi_cache_bypass $http_cookie ~* "woocommerce_items_in_cart|wp_woocommerce_session"; 以及相同的 fastcgi_no_cache 条件来防止具有活跃购物车的页面被存储为静态缓存。如果您使用的是 WP Rocket 或 W3 Total Cache 等缓存插件,请启用"WooCommerce 兼容性"模式——大多数插件都内置了这个——它会自动排除这些页面组。除了页面缓存外,使用 Redis 添加对象缓存会显著减少来自重复会话和购物车查询的 MySQL 压力。您可以直接在 Droplet 上安装 Redis,也可以使用 DigitalOcean 的 Managed Valkey 服务(Redis 许可证更改后的托管 Redis 新名称),具体取决于您的预算。对于倾向于在商店中庞大和众多的产品图像,我们建议将它们移动到 DigitalOcean Spaces(起价 $5/月),其中包括 CDN,减少主 Droplet 上的负载,并为远离服务器地区的客户加快图像速度。

自动化商店数据备份

这一点很重要——在线商店与博客不同之处在于订单和交易全天候不断进行。因此,每周备份是不够的——如果服务器在白天出现问题,您可能会丢失整天的订单。适当的 WooCommerce 备份策略应该在两个级别上工作。第一级是通过 DigitalOcean 快照备份整个 Droplet,费用为 $0.06/GiB 每月,适用于每周完整系统备份以从灾难性服务器故障中恢复。第二级(必须更频繁发生)是仅数据库备份,因为订单、客户和库存数据都位于 MySQL 表中。您可以通过设置 cron 作业每小时甚至更频繁地运行 mysqldump(取决于订单量),然后使用 rclones3cmd 等工具将转储文件上传到 DigitalOcean Spaces,以将备份与主 Droplet 分开。如果您不想自己维护脚本,从起价 $15.15/月 的 Managed MySQL 转移处理自动备份和时间点恢复而无需额外脚本。对于如产品图像和收据等上传的文件,如果您将它们存储在单独的卷而不是 Droplet 的主磁盘上,您也可以为卷快照花费 $0.06/GiB 每月。经常被遗漏的一个关键细节是实际上每月至少测试一次恢复,因为您从未测试过的备份在真正的灾难发生时尚未证明它们有效。

何时使用此方法(真实用例)

在您自己的 Droplet 上运行 WooCommerce 对需要完整服务器控制的商店有意义——并非每个商店都需要这条路。最明确的受益者是拥有自定义插件或主题的商店,例如与泰国货运 API 的集成、将库存系统与离线商店前沿连接,或现成插件尚不支持的本地支付网关——需要服务器级访问的工作,共享主机或托管 WooCommerce 平台通常限制这些工作。另一种明确的情况是有流量峰值的商店,例如年度季节性销售,其中流量在短时间内可能增加十倍;拥有 Droplet 让您在活动前临时调整 RAM/CPU,之后缩小,不像具有固定规格的共享主机套餐。相反,如果您的目标是启动一个小的测试商店,您没有内部技术团队来持续维护 Linux/Nginx/MySQL 服务器,或者您不想自己处理安全补丁,管理的 WooCommerce 主机或 SaaS 电子商务平台可能是更好的短期选择,因为运行您自己的 Droplet 需要对 Linux/Nginx/MySQL 的合理了解以进行持续维护。对于计划与内部开发团队快速增长的商店,从现在开始使用 Droplet 并从一开始就结构化单独的数据库/缓存/存储——如本指南中所述——节省的时间远比在封闭平台上开始然后迁移出要多。

  1. 非常适合需要自定义插件集成、货运 API 连接或本地支付网关支持的商店
  2. 对于在活动期间有流量峰值的商店非常完美,因为您可以根据需要向上和向下调整 Droplet 规格
  3. 对于没有内部技术团队持续维护 Linux/Nginx/MySQL 的小商店不理想
  4. 计划快速增长的商店应从第一天开始分离数据库/缓存/存储,以减少未来的迁移工作

常见错误及其修复方法

在实际使用中,WooCommerce 设置中最常见的错误是忘记为电子商务插件调整 PHP 设置,导致当客户点击结账时出现白屏死亡——通常由 memory_limit 太低或 PHP-FPM 工作进程不足以处理流量峰值期间的同时 AJAX 购物车调用导致。通过增加 memory_limit 和在 PHP-FPM 池配置中调整 pm.max_children 来匹配您的 Droplet RAM 来修复这个问题。一个更严重的错误是在没有绕过规则的情况下意外在购物车/结账页面上启用完整页面缓存,这可能会让客户看到其他人的购物车或过时的促销定价。如缓存部分所述,您必须始终配置缓存规则以完全跳过这些页面组。另一个常见的遗漏是来自支付提供商的 webhook 或 IPN(即时支付通知)配置。如果您的云防火墙限制太多,不允许支付网关的 IP 发送确认支付状态的回调,订单将保持"待支付"状态,即使客户成功支付——始终检查支付提供商的文档以了解所需的 IP 或端口。长期问题是被遗弃的购物车和未清理的 WooCommerce 瞬变导致的数据库膨胀,导致 wp_options 和 wp_postmeta 表增长并减慢查询。定期设置数据库清理插件或运行 SQL 命令以删除过期的瞬变。最后,忘记禁用或限制对 xmlrpc.php 和 wp-login.php 的访问会招致暴力攻击,这在包括 WooCommerce 商店在内的所有 WordPress 网站上都很常见。

最佳实践

除了本指南中的具体设置细节,为您的 Droplet 上的 WooCommerce 商店长期维护建立一个系统。首先通过维护一个单独的临时环境来测试插件更新或 WooCommerce/WordPress 核心升级,然后再推送到实时商店——实时更新可能会立即影响您的收入,不像博客下线。启用 WooCommerce 日志(在 WooCommerce > Status > Logs)以定期查看支付网关或配送系统错误,特别是在任何插件更新后。将 WordPress 核心、WooCommerce 和支付相关插件始终更新到最新版本,因为电子商务插件是信用卡盗刷脚本的常见漏洞载体。通过云防火墙限制 wp-admin 访问仅限您团队的 IP 增加了另一个安全层,无需额外成本。对于未来的扩展,使用连接到您的 Droplet 的预留 IP(在使用时免费)让您无需等待 DNS 传播就可以迁移到更大的 Droplet,减少停机时间。启用 DigitalOcean 监控(免费)并设置警报策略在 CPU 或 RAM 使用率过高时通知您,以便您在商店减速之前看到流量峰值。最后,随着您的产品数量和图像库的增长,提前规划并添加单独的卷用于媒体或早期移动到 Spaces 比在主磁盘突然填满后迁移大量数据要容易得多。

领取 $200 免费额度 →

常见问题(FAQ)

真实 WooCommerce 商店需要多大的 Droplet?
这取决于产品数量和流量。初创商店可以使用 2 GiB 内存/1 vCPU 的 $12/月 Droplet,但处理常规订单的商店应升级到 $24/月 的 4 GiB/2 vCPU,而大型目录或高流量商店应考虑 $48/月 的 8 GiB/4 vCPU。
我需要 DigitalOcean Managed MySQL,还是同一 Droplet 上的 MySQL 足够?
小型商店可以在同一 Droplet 上运行 MySQL 而不出现问题,但随着订单量增加并影响性能,迁移到起价 $15.15/月 的 Managed MySQL 有助于分离数据库负载,并包括自动备份,无需额外工作。
如果缓存设置错误,客户真的可以看到彼此的购物车吗?
是的,如果您在没有绕过规则的情况下在购物车/结账/我的账户页面上启用完整页面缓存,这可能会发生,因为缓存系统向每个人提供相同的缓存 HTML。这就是为什么您必须始终配置缓存以跳过这些页面。
Let's Encrypt 的免费 SSL 是否足以用于结账页面,或者它符合 PCI 标准?
它适用于 HTTPS 加密,这是基本要求,当使用支付提供商的托管结账/令牌化时,PCI DSS 范围通常已经减少到 SAQ A 或 A-EP。关键是启用强制安全结账并确保没有混合内容残留。
不断进行交易的商店应该多久备份一次其数据?
通过 cron 运行 mysqldump 每小时至少备份您的数据库一次,或使用具有自动备份的 Managed MySQL。每周进行完整 Droplet 快照,因为关键数据位于数据库中,而不是文件系统中。
将我的 WooCommerce 商店从共享主机/cPanel 迁移到 Droplet 是否值得?
当您的商店定期处理订单并需要自定义服务器调整(如本地货运 API 或支付网关集成)时,这是有收益的,但您需要持续的 Linux/Nginx/MySQL 知识。对于没有技术团队的小型商店,最初在托管主机上停留更长时间可能更有意义。