14 10 月 2026

WordPress 是全球最流行的建站程序,生态丰富、插件成千上万,但也以「臃肿慢」出名。同样的机器,Typecho 秒开,WordPress 可能转圈三秒——差别就在优化。

这篇从安装讲到优化,覆盖 LNMP 环境、WordPress 安装、缓存、数据库、安全加固。目标是让 WordPress 在 2G 小服务器上也能跑得飞快。

需要云服务器可以看看财富云计算:NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上,一键开服面板,主流游戏快速部署。

一、WordPress vs Typecho:先选对程序

对比WordPressTypecho
生态/插件极丰富较少
主题质量高且多轻量为主
资源占用高(PHP + MySQL)低
上手难度低(后台强)中
适合企业站、电商、内容站个人博客、技术文档

选型建议:要生态、要功能、要后台体验 → WordPress;纯写博客、机器小、追求轻 → Typecho(本站就是 Typecho)。选了 WordPress 就认真做优化,别抱怨它慢。

二、环境搭建:LNMP

安装组件

# Ubuntu 22.04 示例
apt update
apt install -y nginx mysql-server php8.1-fpm php8.1-mysql php8.1-curl \
               php8.1-gd php8.1-mbstring php8.1-xml php8.1-zip php8.1-intl

# 确认版本
nginx -v
mysql --version
php -v

配置 Nginx

server {
    listen 80;
    server_name 你的域名;
    root /var/www/wordpress;
    index index.php index.html;

    # WordPress 固定链接支持(关键!)
    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    # PHP 处理
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
    }

    # 静态资源缓存
    location ~* \.(jpg|jpeg|png|webp|css|js|svg|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
        access_log off;
    }

    # 禁止访问敏感目录
    location ~ /\.(ht|git|env) { deny all; }
    location = /wp-config.php { deny all; }
    location ^~ /wp-content/uploads/ {
        # uploads 里的 PHP 禁止执行(防上传 webshell)
        location ~ \.php$ { deny all; }
    }
}

配置 PHP-FPM(小机器参数)

; /etc/php/8.1/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 10
pm.start_servers = 3
pm.min_spare_servers = 2
pm.max_spare_servers = 5
pm.max_requests = 500      # 进程处理 500 请求后重启,防泄漏

PHP 关键参数:

; /etc/php/8.1/fpm/php.ini
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
; OPcache(性能翻倍的关键,必须开)
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2

创建数据库

mysql -u root -p <<'EOF'
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp'@'localhost' IDENTIFIED BY '强密码';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp'@'localhost';
FLUSH PRIVILEGES;
EOF

三、安装 WordPress

# 下载
cd /tmp
wget https://cn.wordpress.org/latest-zh_CN.tar.gz
tar -xzf latest-zh_CN.tar.gz
mv wordpress /var/www/wordpress
chown -R www-data:www-data /var/www/wordpress

# 配置
cd /var/www/wordpress
cp wp-config-sample.php wp-config.php

编辑 wp-config.php:

define('DB_NAME', 'wordpress');
define('DB_USER', 'wp');
define('DB_PASSWORD', '强密码');
define('DB_HOST', 'localhost');

// 安全密钥(去 https://api.wordpress.org/secret-key/1.1/salt/ 生成)
define('AUTH_KEY',         '随机字符串');
// ... 共 8 行,全部替换

// 关掉文件编辑(防后台被拿后改主题)
define('DISALLOW_FILE_EDIT', true);

浏览器访问域名,按向导填站点信息、管理员账号,装完。

四、性能优化:让 WordPress 快三倍

1. 页面缓存(收益最大)

WordPress 每个请求都要跑 PHP + 查数据库。页面缓存把渲染好的 HTML 存下来,直接吐给访客。

Nginx FastCGI 缓存(最推荐,不依赖插件):

# http 块
fastcgi_cache_path /var/cache/nginx/wp levels=1:2 keys_zone=wpcache:100m inactive=1d max_size=500m;

server {
    # ...
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php8.1-fpm.sock;
        
        fastcgi_cache wpcache;
        fastcgi_cache_valid 200 301 302 1h;
        fastcgi_cache_valid 404 1m;
        fastcgi_cache_bypass $skip_cache;
        fastcgi_no_cache $skip_cache;
        
        add_header X-FastCGI-Cache $upstream_cache_status;
    }
}

# 跳过缓存的规则(map 定义)
map $http_cookie $skip_cache {
    default 0;
    ~*comment_author_ 1;      # 评论过的访客
    ~*wordpress_logged_in_ 1; # 登录用户
    ~*woocommerce_items 1;    # 购物车
}

登录用户、评论者、购物车不走缓存,其他访客全部吃缓存。效果:动态请求从 500ms 降到 10ms。

插件方案(更简单):WP Super Cache 或 W3 Total Cache,后台点几下就行。小站够用,高负载还是 Nginx 缓存强。

2. 对象缓存:Redis

数据库查询是 WordPress 第二大开销。上 Redis 对象缓存:

apt install -y redis-server
# 确认只听本地、有密码(见 Redis 安全加固)

# 装插件: Redis Object Cache
# wp-config.php 加:
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', 6379);
define('WP_REDIS_PASSWORD', '你的Redis密码');

插件里点 Enable,对象查询全部走 Redis 内存,数据库压力降 60%+。

3. 数据库优化

-- 清理垃圾数据(修订版本、自动草稿、垃圾评论)
DELETE FROM wp_posts WHERE post_type='revision';
DELETE FROM wp_posts WHERE post_status='auto-draft';
DELETE FROM wp_comments WHERE comment_approved='spam';
DELETE FROM wp_options WHERE option_name LIKE '_transient_%';

-- 优化表
OPTIMIZE TABLE wp_posts, wp_postmeta, wp_comments, wp_options;

-- 限制修订版本数量(wp-config.php)
define('WP_POST_REVISIONS', 5);

定期清理挂 crontab,见MySQL 备份与优化。

4. 图片与静态资源

WordPress 自动生成多个尺寸的缩略图,很容易磁盘爆炸:

# 清理未使用的缩略图
du -sh /var/www/wordpress/wp-content/uploads/

# 装 WebP 插件(上传自动转 WebP,省 30% 流量)
# 装图片压缩插件(Smush/Imagify)

详细的图片优化方法见网站图片与静态资源优化。

5. 插件与主题:少即是快

# 看哪些插件在拖后腿: 装 Query Monitor 插件
# 它会显示每个插件的加载时间和查询数

原则:插件装一个删一个,功能重叠的留一个。20 个插件的站点和 5 个插件的站点,速度差一倍。主题选轻量的(Astra、GeneratePress 都比多功能主题快)。

6. 资源外移

  • 头像用 Gravatar 镜像(functions.php 里替换 www.gravatar.com 为 cn.gravatar.com)
  • 静态资源上 CDN(对象存储或 CDN 服务)
  • Google 字体换国内镜像或本地化

五、安全加固

WordPress 是全网被扫最多的程序,必须加固:

// wp-config.php 安全项
define('DISALLOW_FILE_EDIT', true);        // 禁后台文件编辑
define('FORCE_SSL_ADMIN', true);            // 后台强制 HTTPS
define('WP_AUTO_UPDATE_CORE', 'minor');     // 小版本自动更新
# Nginx 层防护
# 1. 隐藏版本信息
location ~ /wp-includes/.*\.php { deny all; }
# 2. 限制登录接口频率
location = /wp-login.php {
    limit_req zone=login burst=3 nodelay;
    # 或只允许自己的 IP:
    # allow 1.2.3.4; deny all;
}
# 3. 禁 xmlrpc(爆破入口)
location = /xmlrpc.php { deny all; }

必做事项:

  1. 管理员账号别用 admin,设强密码
  2. 装 Wordfence 或防暴力破解插件
  3. 主题插件及时更新
  4. 删掉不用的主题(wp-content/themes/ 里只留用的)
  5. 每日数据库备份

详细清单见WordPress 部署安全检查。

六、维护命令速查

# WP-CLI(命令行管理 WordPress,运维必备)
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar && mv wp-cli.phar /usr/local/bin/wp

cd /var/www/wordpress
sudo -u www-data wp plugin list              # 插件列表
sudo -u www-data wp plugin update --all      # 更新所有插件
sudo -u www-data wp core update              # 更新核心
sudo -u www-data wp db export backup.sql     # 导出数据库
sudo -u www-data wp cache flush              # 清缓存
sudo -u www-data wp user create admin2 admin2@example.com --role=administrator

批量更新可以挂 cron,配合巡检。

七、常见问题

Q:后台 502/504?
PHP-FPM 挂了或内存不够。看 systemctl status php8.1-fpm、free -h,调小 pm.max_children。

Q:固定链接 404?
Nginx 的 try_files 没配对(见上文配置),或者没开 rewrite。确认 location / 块有 try_files $uri $uri/ /index.php?$args;。

Q:上传图片报「上级目录没有写权限」?

chown -R www-data:www-data /var/www/wordpress/wp-content/uploads/

Q:网站被注入垃圾内容?
多半是插件漏洞或弱口令。全盘扫描:对比文件哈希、看陌生管理员账号、查近期改动的文件。恢复用备份,然后按上面的安全清单加固。

Q:2G 小机器能跑 WordPress 吗?
能,但要克制:不开多站点、插件 ≤ 10 个、上 Redis + Nginx 缓存、图片走 CDN。纯内容站 2G 够, WooCommerce 建议 4G+。

小结

WordPress 优化的优先级:OPcache → Nginx 页面缓存 → Redis 对象缓存 → 数据库清理 → 精简插件主题 → 静态资源外移。前三项做完,速度就有质变;再配合安全加固和 WP-CLI 维护,WordPress 完全可以跑得又快又稳。

更多网站教程见财富云计算知识库:Nginx 配置、HTTPS、图片优化、CDN、Typecho 全系列。需要云服务器可以看看财富云计算:一键开服面板,NAT 型无独立公网 IP,价格比独立 IP 机型省一半以上。

延伸阅读
  1. 网站环境怎么选:LNMP 手动 / 宝塔面板 / Docker / 云开发
  2. 问卷表单系统搭建:SurveyKing / Formbricks,数据自己收
  3. 图床搭建:Lsky Pro / Lychee,自托管图片托管方案
  4. 邮件列表搭建:listmonk 自托管 Newsletter,把读者握在自己手里
  5. 文档站点搭建:MkDocs / VuePress / Docsify,产品文档与技术手册方案
  6. RSS 阅读器搭建:FreshRSS 自托管,把信息流拿回自己手里
  7. 短链接服务搭建:Shlink 自托管,链接数据自己掌握
  8. 网站状态监控页搭建:Uptime Kuma,服务器挂了第一时间知道
更多阅读
  1. 上一篇:服务器日常巡检清单与自动化脚本:每天 5 分钟保平安
  2. 下一篇:Docker 部署网站实战:Nginx + MySQL + PHP 一套带走
发表评论 5