努力
加油

1核2G的云服务器部署两个WordPress网站需要优化哪些设置?

1核2G内存跑两个 WordPress,说实话,这在资源上属于“极限操作”。如果不做优化,稍微来点并发流量或者一个插件触发内存泄漏,服务器直接 OOM(Out Of Memory)重启是常态。

要在国内主流云厂商(阿里云、腾讯云、华为云等)的 1C2G 实例上稳住两个 WP,核心思路只有三个:极致压缩 PHP 内存占用、数据库读写分离与缓存前置、静态化一切能静态化的东西。

以下是经过实战验证的配置清单,按优先级排序:

一、 操作系统层面:给系统“减负”

  1. Swap 分区必须开,但要合理设置

    • 2G 物理内存太少了,必须加 Swap 防止突发流量导致进程被杀。
    • 建议设置 2G-4G 的 Swap 文件。
    • vm.swappiness 设置为 10 或 20,让系统优先使用物理内存,而不是频繁交换到磁盘。
  2. 关闭不必要的服务

    • 如果是 CentOS/Ubuntu,卸载或禁用 firewalld/ufw(改用云安全组),停止 auditd、bluetooth、postfix 等非必要后台服务。
    • 确保只运行 Nginx/Apache, MySQL/MariaDB, PHP-FPM。
  3. 文件系统选择

    • 如果云盘支持,使用 ext4 或 xfs。避免在老旧机械硬盘上做高 IOPS 操作。SSD 云盘是必须的,否则数据库 IO 会成为瓶颈。

二、 Web 服务器:Nginx 优于 Apache

强烈建议使用 Nginx + PHP-FPM 架构。Apache 的 prefork 模式极其吃内存,每个连接都占一个进程,1C2G 根本扛不住。

  1. Nginx 配置优化

    • 开启 gzip 压缩,减少传输体积。
    • 配置静态资源(图片、CSS、JS)过期时间长达 30 天以上。
    • 开启 keepalive,减少 TCP 握手开销。
    • 限制单个 IP 的连接数和请求速率(防 CC 攻击简单版)。
  2. PHP-FPM 调优(关键!)

    • 进程管理器:设置为 ondemand 而非 dynamic。因为 dynamic 需要主进程常驻,而 ondemand 在无请求时不产生子进程,极大节省内存。
    • pm.max_children:这是最关键的参数。1C2G 环境下,建议设为 5-8。每个 PHP 进程默认可能占用 30-50MB 内存,开太多必崩。
    • pm.process_idle_timeout:设为 10s-20s,快速回收空闲进程。
    • PHP 版本:务必使用 PHP 7.4 或 8.0+。PHP 8 在性能上有显著提升,且内存管理更优。

三、 数据库:MySQL/MariaDB 的“抠门”设置

MySQL 默认配置对 2G 内存来说太奢侈了。你需要手动修改 my.cnf (或 mariadb.conf)。

  1. 关键参数调整

    [mysqld]
    # 最大连接数设低一点,WP 通常不需要几百个并发
    max_connections = 50
    
    # 关键:InnoDB Buffer Pool 大小
    # 总内存 2G,扣除 OS 和其他应用,留给 MySQL 最多 1G-1.2G
    # 建议设为 512M - 768M,留有余地
    innodb_buffer_pool_size = 768M
    
    # 日志相关
    log_error_verbosity = 2
    slow_query_log = 1
    long_query_time = 2
    
    # 临时表
    tmp_table_size = 16M
    max_heap_table_size = 16M

    注意:不要盲目追求大 Buffer Pool,如果其他服务也吃内存,会导致系统整体不稳定。

  2. 字符集统一

    • 确保所有库、表、字段都是 utf8mb4,避免转换开销。

四、 WordPress 应用层:轻量化是王道

  1. 主题选择

    • 放弃 Elementor、Divi 等重型页面构建器。它们会产生大量 CSS/JS 和数据库查询。
    • 推荐使用轻量级主题:GeneratePress、Astra(精简模式)、Flavor 或纯代码编写的极简主题。
  2. 插件瘦身

    • 缓存插件:推荐 W3 Total Cache 或 WP Super Cache。对于 1C2G,对象缓存(Object Cache) 比页面缓存更重要。
    • 对象缓存:安装 Redis 插件,并将 Redis 作为对象缓存后端。Redis 本身非常轻量,几 MB 内存就能解决大量数据库重复查询问题。
    • 清理冗余插件:删除所有未使用的插件。每多一个活跃插件,就多一次钩子(Hook)执行和潜在的内存泄漏风险。
    • 图片优化:使用短代码或 CDN 替代本地大图。如果必须本地存储,使用 ShortPixel 或 Imagify 自动压缩图片。
  3. 数据库优化

    • 定期清理 wp_posts 中的修订版本(Revisions)。
    • 使用 WP-Optimize 插件定期清理垃圾数据和碎片。
    • 如果可能,将 wp-options 表数据缓存到 OPcache。

五、 外部提速:CDN 是救命稻草

  1. 全站 CDN

    • 接入阿里云 CDN 或腾讯云 CDN。
    • 将所有静态资源(图片、CSS、JS)通过 CDN 分发。
    • 源站隐藏:CDN 回源地址指向你的 1C2G 服务器 IP,但通过 CDN 域名访问网站。这样大部分流量被 CDN 拦截,只有动态请求(如登录、评论、API)才打到你的弱鸡服务器上。
  2. HTTPS 终止

    • 在 CDN 层处理 SSL/TLS 加密解密,减轻服务器 CPU 负担。

六、 监控与告警

  1. 安装基础监控

    • 使用 htop 实时观察内存和 CPU。
    • 配置云厂商自带的云监控报警:当 CPU > 80% 持续 5 分钟,或内存使用率 > 90% 时,发送短信/邮件通知。
  2. 日志轮转

    • 确保 Nginx 和 PHP 的错误日志有 logrotate 配置,防止日志文件撑爆磁盘空间。

总结:一套可行的最小可行配置(MVP)

组件 推荐配置 理由
OS Ubuntu 20.04/22.04 LTS 社区支持好,资源占用相对可控
Web Nginx 1.24+ 高并发,低内存
PHP PHP 8.1/8.2 + FPM 性能最好,内存优化佳
DB MariaDB 10.5+ 兼容 MySQL,略轻于 MySQL 8
Cache Redis (仅对象缓存) + W3TC 减少 DB 查询压力
Theme GeneratePress (免费版) 极轻,无臃肿功能
CDN 阿里云/腾讯云免费额度 CDN 分担 80% 静态流量

最后忠告:

1C2G 部署两个 WP,本质上是在玩火。它适合个人博客、内部测试环境、极低流量的展示型网站。如果你的网站有任何商业价值、预计日 PV 超过 1000,或者用户会进行大量交互(如论坛、电商),请毫不犹豫升级到 2C4G 或更高配置。

在云计算领域,“省小钱花大钱” 是最常见的陷阱。服务器宕机带来的时间成本和信任损失,远超每月几十块钱的升级费用。