CentOS系统下如何通过LNMP或LAMP搭建WordPress?

在 CentOS 系统下搭建 WordPress,通常有两种主流方案:LNMP(Nginx + MySQL/MariaDB + PHP)和 LAMP(Apache + MySQL/MariaDB + PHP)。LNMP 在高并发场景下性能更优,而 LAMP 配置相对简单、生态兼容性好。下面分别介绍两种方案的快速搭建步骤(以 CentOS 7/8 为例,假设已安装基础环境并拥有 root 权限)。


一、前置准备(通用)

  1. 更新系统并安装必要工具

    sudo yum update -y
    sudo yum install -y wget curl git vim net-tools
  2. 创建数据库用户与网站目录

    # 创建 WordPress 站点目录
    sudo mkdir -p /var/www/html/wordpress
    sudo chown -R apache:apache /var/www/html/wordpress  # LAMP 用 apache;LNMP 可改为 nginx:nginx 或 www-data
    
    # 下载 WordPress 最新版(可选:手动解压或后续通过脚本)
    cd /tmp
    wget https://wordpress.org/latest.tar.gz
    tar -xzf latest.tar.gz
    sudo cp -r wordpress/* /var/www/html/wordpress/
    sudo rm -rf wordpress latest.tar.gz
  3. 设置 Web 根目录权限(根据实际用户调整)

    sudo chmod -R 755 /var/www/html/wordpress
    sudo chown -R your_user:your_group /var/www/html/wordpress  # 建议由非 root 用户运行 PHP-FPM/Apache

二、方案 A:LNMP 搭建(推荐用于高性能需求)

1. 安装 Nginx

sudo yum install -y epel-release
sudo yum install -y nginx
sudo systemctl enable --now nginx

2. 安装 MariaDB(替代 MySQL)

sudo yum install -y mariadb-server mariadb
sudo systemctl enable --now mariadb
sudo mysql_secure_installation  # 按提示设置 root 密码等

进入 MySQL 创建数据库和用户:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'StrongPassword123!';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;

3. 安装 PHP + 扩展(PHP 7.4+ 或 8.x)

CentOS 8 可用 dnf,CentOS 7 需启用 Remi 源:

CentOS 7(推荐 Remi 源)

sudo yum install -y yum-utils
sudo yum-config-manager --enable remi-php80  # 或 remi-php74
sudo yum install -y php-fpm php-mysqlnd php-gd php-json php-curl php-mbstring 
    php-xml php-intl php-zip php-fileinfo

CentOS 8

sudo dnf install -y epel-release
sudo dnf install -y dnf-plugin-reynolds  # 或使用 copr 添加 PHP 源
# 更稳妥方式:使用 Software Collections (SCL) 或 EPEL + Remi
# 示例(Remi for PHP 8.0):
sudo yum install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm
sudo yum module reset -y php
sudo yum module enable -y php:remi-8.0
sudo yum install -y php-fpm php-mysqlnd php-gd php-json php-curl php-mbstring 
    php-xml php-intl php-zip php-fileinfo

启动 PHP-FPM:

sudo systemctl enable --now php-fpm

4. 配置 Nginx 虚拟主机

创建配置文件 /etc/nginx/conf.d/wordpress.conf

server {
    listen 80;
    server_name example.com www.example.com;  # 替换为你的域名
    root /var/www/html/wordpress;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$args;
    }

    location ~ .php$ {
        fastcgi_pass unix:/run/php-fpm/php-fpm.sock;  # 或 127.0.0.1:9000
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
    }

    # 安全:禁止访问 wp-config.php 等敏感文件
    location ~* ^/(wp-config.php|readme.html|license.txt|xmlrpc.php)$ {
        deny all;
    }
}

测试配置并重启 Nginx:

sudo nginx -t
sudo systemctl reload nginx

5. 完成 WordPress 安装

访问 http://your-domain,按向导填写数据库信息:

  • Database Name: wordpress
  • Username: wpuser
  • Password: StrongPassword123!
  • Host: localhost
  • Table Prefix: wp_(可自定义)

✅ 注意:若遇“无法连接数据库”,检查:

  • MySQL 是否监听本地 socket(ls -l /var/lib/mysql/mysql.sock
  • PHP-FPM 是否正确绑定 socket(cat /etc/php-fpm.d/www.conf | grep listen
  • SELinux 是否阻止(临时关闭测试:setenforce 0

三、方案 B:LAMP 搭建(适合新手或传统应用)

1. 安装 Apache & MariaDB & PHP

sudo yum install -y httpd mariadb-server php php-mysqlnd php-gd php-json 
    php-curl php-mbstring php-xml php-intl php-zip php-fileinfo

启动服务:

sudo systemctl enable --now httpd mariadb
sudo mysql_secure_installation

创建数据库(同上):

CREATE DATABASE wordpress ...;
CREATE USER 'wpuser'@'localhost' ...;
GRANT ALL ...;
FLUSH PRIVILEGES;

2. 配置 Apache

编辑 /etc/httpd/conf.d/wordpress.conf

<VirtualHost *:80>
    ServerName example.com
    DocumentRoot /var/www/html/wordpress

    <Directory /var/www/html/wordpress>
        AllowOverride All
        Require all granted
    </Directory>

    # 安全限制
    <FilesMatch "^.">
        Deny from all
    </FilesMatch>
</VirtualHost>

重启 Apache:

sudo systemctl restart httpd

💡 若未看到 .htaccess 支持,确保 mod_rewrite 已启用(默认开启)。

3. 访问安装页面

浏览器打开 http://your-domain,完成 WordPress 初始化。


四、后续优化建议

项目 建议
SSL 加密 使用 Let’s Encrypt 免费证书:
sudo yum install certbot python3-certbot-apache(LAMP)
certbot --nginx(LNMP)
缓存提速 安装 Redis + WP Super Cache / W3 Total Cache
备份策略 定期备份数据库(mysqldump)+ 文件目录(rsync/tar)
安全加固 修改默认登录页、禁用 XML-RPC、安装 Wordfence 插件
性能调优 调整 php.ini(如 max_execution_time, memory_limit)、开启 OPcache

五、常见问题排查

  • “Permission denied”写入失败?
    → 检查 wp-content/uploads 目录权限:
    sudo chown -R apache:apache /var/www/html/wordpress/wp-content/uploads(LAMP)
    chown -R nginx:nginx(LNMP,需确认 PHP-FPM 运行用户)

  • 404 错误跳转首页?
    → 检查 Nginx 的 try_files 或 Apache 的 AllowOverride All 是否生效

  • PHP 版本不兼容?
    → WordPress 5.9+ 要求 PHP ≥ 7.4,6.0+ 推荐 PHP 8.0+


需要我提供:

  • 一键自动化部署脚本(Ansible/Bash)?
  • Docker 化部署方案?
  • 针对特定 WordPress 主题/插件的兼容性建议?

欢迎告诉我你的具体场景,我可以进一步定制方案! 🚀