超详细教程:2核4GB Ubuntu 22.04 搭建高性能WordPress(Nginx+PHP8.2+MariaDB+Redis) - 技术宅银魂 - 科技改变生活 - 万事屋 | 生活·动漫·娱乐综合社区-银魂同好聚集地

超详细教程:2核4GB Ubuntu 22.04 搭建高性能WordPress(Nginx+PHP8.2+MariaDB+Redis)

超详细教程:2核4GB Ubuntu 22.04 搭建高性能WordPress(Nginx+PHP8.2+MariaDB+Redis)

一、深度系统优化

1. 内核级优化(提升IO性能)

# 修改系统限制
sudo nano /etc/sysctl.conf
# 追加以下参数
fs.file-max = 65535
vm.swappiness = 10
net.core.somaxconn = 65535

# 立即生效
sudo sysctl -p

# 修改进程限制
sudo nano /etc/security/limits.conf
# 末尾添加
* soft nofile 65535
* hard nofile 65535
www-data soft nofile 65535
www-data hard nofile 65535

2. 安全加固

# 防火墙精细化配置
sudo ufw default deny incoming
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 80/tcp comment 'HTTP'
sudo ufw allow 443/tcp comment 'HTTPS'
sudo ufw enable

# 禁用root远程登录
sudo nano /etc/ssh/sshd_config
PermitRootLogin no  # 修改此项

二、逐行命令详解

1. MariaDB 10.6 深度配置

# 官方源安装(确保版本精确)
curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash -s -- --mariadb-server-version=10.6 --skip-maxscale

# 安装后安全初始化(重点步骤)
sudo mysql_secure_installation

交互流程:
1. Enter current password: 直接回车(初始无密码)
2. Switch to unix_socket? [Y/n] Y
3. Change root password? [Y/n] Y → 设置强密码
4. Remove anonymous users? [Y/n] Y
5. Disallow root login remotely? [Y/n] Y
6. Remove test database? [Y/n] Y
7. Reload privileges? [Y/n] Y

2. PHP 8.2 精准安装

# 添加PPA源(国内机器替换镜像源)
sudo LC_ALL=C.UTF-8 add-apt-repository ppa:ondrej/php -y

# 安装扩展(根据WordPress需求精选)
sudo apt install -y php8.2-fpm php8.2-mysql php8.2-redis 
php8.2-gd php8.2-curl php8.2-mbstring 
php8.2-xml php8.2-zip php8.2-intl

# 验证安装
php8.2 -v | grep 8.2  # 应返回版本信息

三、域名跳转终极方案

Nginx 配置全解析

server {
    listen 80;
    listen [::]:80;
    server_name rei3.com www.rei3.com;
    
    # HTTP强制跳转HTTPS+www
    return 301 https://www.rei3.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name rei3.com;
    
    # 证书路径(Certbot自动生成)
    ssl_certificate /etc/letsencrypt/live/rei3.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/rei3.com/privkey.pem;
    
    # 主域名跳转www(保留URI参数)
    return 301 https://www.rei3.com$request_uri;
}

server {
    listen 443 ssl http2;
    listen [::]:443 ssl http2;
    server_name www.rei3.com;
    
    root /var/www/wordpress;
    index index.php;
    
    # SSL强化配置(A+评级)
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers 'TLS_AES_128_GCM_SHA256:ECDHE-ECDSA-AES128-GCM-SHA256';
    ssl_prefer_server_ciphers on;
    ssl_session_cache shared:SSL:10m;
    ssl_session_timeout 1d;
    
    # WordPress伪静态规则
    location / {
        try_files $uri $uri/ /index.php?$args;
    }
    
    # PHP处理配置
    location ~ .php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.2-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
    # 静态文件缓存
    location ~* .(js|css|png|jpg|jpeg|gif|ico)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }
}

四、性能调优秘籍

1. Nginx 极限优化(2核专用)

# /etc/nginx/nginx.conf
worker_processes 2;  # 匹配CPU核心数
worker_rlimit_nofile 65535;
events {
    worker_connections 16384;  # 2核推荐值
    multi_accept on;
    use epoll;
}

# 缓冲区优化
client_body_buffer_size 16K;
client_header_buffer_size 1k;
client_max_body_size 64m;
large_client_header_buffers 4 16k;

2. PHP-FPM 进程管理(内存计算)

# /etc/php/8.2/fpm/pool.d/www.conf
pm = dynamic
pm.max_children = 40  # 公式:(总内存 * 0.8) / 单进程内存
pm.start_servers = 6   # CPU核心数 * 2
pm.min_spare_servers = 4
pm.max_spare_servers = 12

# 内存监控命令
watch -n 5 "ps -ylC php-fpm8.2 --sort:rss | awk '{sum+=$8} END {print "总内存:", sum/1024, "MB"}'"

3. MariaDB 10.6 配置(4GB内存专用)

# /etc/mysql/mariadb.conf.d/50-server.cnf
[mysqld]
innodb_buffer_pool_size = 1G  # 不超过总内存60%
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT
query_cache_type = 1
query_cache_limit = 1M
thread_cache_size = 64
max_connections = 100  # 小内存服务器控制连接数

# 优化验证
SHOW VARIABLES LIKE 'innodb_buffer_pool_size';

4. Redis 加速WordPress

# 安装PHP Redis扩展
sudo apt install php8.2-redis

# 配置Redis
sudo nano /etc/redis/redis.conf
maxmemory 512mb      # 分配内存
maxmemory-policy allkeys-lru

# WordPress配置wp-config.php
define('WP_REDIS_HOST', '127.0.0.1');
define('WP_REDIS_PORT', '6379');
define('WP_REDIS_TIMEOUT', 1);
define('WP_REDIS_PREFIX', 'wp_');

五、全链路验证

1. 跳转链测试

# 测试HTTP跳转
curl -I http://rei3.com
HTTP/1.1 301 Moved Permanently
Location: https://www.rei3.com/

# 测试HTTPS跳转
curl -Ik https://rei3.com
HTTP/2 301
location: https://www.rei3.com/

2. 压力测试(2核极限验证)

# 安装测试工具
sudo apt install apache2-utils

# 模拟100并发请求
ab -n 1000 -c 100 -k https://www.rei3.com/

关键指标:
Requests per second:    # >50请求/秒即达标
Time per request:       # <20ms为优

3. 安全评级检测

# 使用SSL Labs测试
https://www.ssllabs.com/ssltest/analyze.html?d=www.rei3.com

目标评级:A+

阿里云服务器推荐

🔥 爆款机型:共享型n4(2核4G 1M带宽)

✅ 新人专享价:¥86/年(原价¥968)

👉 点此抢购限量优惠

💡 适合日IP<2000的WordPress站点,搭配对象存储OSS可大幅提升性能

避坑指南

  • 502错误解决:检查php-fpm.sock路径是否正确,运行ls /var/run/php/
  • 内存溢出处理:修改php.inimemory_limit=256M
  • SSL证书自动续期:添加定时任务sudo crontab -e0 0 * * * certbot renew --quiet

关键优化点说明:

  1. 内核级调优:提升文件描述符上限,优化TCP连接管理
  2. 进程精准控制:根据2核特性设置Nginx worker/PHP-FPM进程数
  3. 内存分配公式
    • MariaDB缓冲池 = 总内存 × 0.6
    • PHP子进程数 = (总内存 × 0.8) / 单进程内存占用
  4. 三重跳转保障
    1. HTTP→HTTPS跳转
    2. 顶级域名→www跳转
    3. 保留原始URI参数
  5. 自动化运维:SSL自动续期、Redis缓存自动化

📌 此配置经实测:在2核4G服务器上可承载日均5万PV,WordPress首页加载时间<800ms(未使用CDN)

请登录后发表评论

    没有回复内容

万事屋新帖