不使用宝塔面板的情况下怎么配置Nginx+PHP+MySQL运行WordPress?

在不使用宝塔面板(aaPanel)等图形化管理工具的情况下,手动配置 Nginx + PHP-FPM + MySQL 运行 WordPress 是完全可行的,这也是 Linux 运维中非常标准且高效的部署方式。

以下是基于 Ubuntu/Debian 系统的完整手动部署步骤。如果你使用的是 CentOS/RHEL,软件包名称略有不同(如 php-fpm 改为 php-fpm,安装命令为 yum),但核心逻辑一致。


第一步:安装基础环境

首先更新系统并安装 Nginx、MySQL (MariaDB)、PHP 及其常用扩展。

# 更新软件源
sudo apt update && sudo apt upgrade -y

# 安装 Nginx
sudo apt install nginx -y

# 安装 MariaDB (MySQL 的开源分支,推荐)
sudo apt install mariadb-server mariadb-client -y

# 安装 PHP 及常用扩展 (WordPress 需要 gd, mbstring, xml, curl, zip 等)
sudo apt install php-fpm php-mysql php-gd php-mbstring php-xml php-curl php-zip php-intl php-bcmath -y

# 启动服务并设置开机自启
sudo systemctl enable --now nginx
sudo systemctl enable --now mariadb
sudo systemctl enable --now php8.1-fpm # 注意:根据实际安装的 PHP 版本调整,如 php7.4-fpm 或 php8.2-fpm

注意:请确认你安装的 PHP 版本名称。可以使用 dpkg -l | grep php-fpm 查看具体版本号。


第二步:配置数据库

登录 MySQL 并创建 WordPress 专用的数据库和用户。

sudo mysql_secure_installation
# 按提示设置 root 密码,并选择 Y 删除匿名用户、禁止远程 root 登录等

# 进入 MySQL 命令行
sudo mysql -u root -p

在 MySQL 提示符下执行以下 SQL 语句(请将 your_password 替换为你自己的强密码):

-- 创建数据库
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 创建用户并授权
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY 'your_password';
GRANT ALL PRIVILEGES ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

第三步:下载并解压 WordPress

# 切换到 Web 目录 (假设网站根目录为 /var/www/html)
cd /var/www/html

# 下载最新版 WordPress (去掉 .tar.gz 后缀以获取最新稳定版)
sudo wget https://wordpress.org/latest.tar.gz

# 解压
sudo tar -xzf latest.tar.gz

# 将文件移动到正确目录并设置权限
sudo mv wordpress/* .
sudo mv wordpress/.htaccess .
sudo rmdir wordpress

# 设置所有者为 www-data (Nginx 默认运行用户)
sudo chown -R www-data:www-data /var/www/html
sudo chmod -R 755 /var/www/html

第四步:生成 wp-config.php

WordPress 需要配置文件来连接数据库。我们可以先复制示例文件,然后修改。

# 复制配置文件模板
sudo cp wp-config-sample.php wp-config.php

# 编辑配置文件
sudo nano /var/www/html/wp-config.php

找到并修改以下内容:

// 数据库名称
define( 'DB_NAME', 'wordpress' );

// 数据库用户名
define( 'DB_USER', 'wp_user' );

// 数据库密码
define( 'DB_PASSWORD', 'your_password' );

// 数据库主机 (通常不需要改,保持 localhost 即可)
define( 'DB_HOST', 'localhost' );

保存退出 (Ctrl+O, Enter, Ctrl+X)。


第五步:配置 Nginx 站点

这是最关键的一步。我们需要创建一个 Nginx 配置文件来处理 PHP 请求。

sudo nano /etc/nginx/sites-available/wordpress

粘贴以下配置内容(请根据你的域名修改 server_name):

server {
    listen 80;
    server_name your_domain.com www.your_domain.com; # 替换为你的域名或服务器 IP

    root /var/www/html;
    index index.php index.html index.htm;

    # 防止直接访问 wp-config.php
    location ~* .(git|svn|env|log|sql)$ {
        deny all;
    }

    # 处理 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; # 注意:端口需与你安装的 PHP 版本匹配
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;

        # 安全限制
        fastcgi_hide_header X-Powered-By;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
    }

    # 优化静态资源缓存
    location ~* .(jpg|jpeg|png|gif|ico|css|js)$ {
        expires 30d;
        add_header Cache-Control "public, no-transform";
    }

    # 日志记录
    access_log /var/log/nginx/wordpress_access.log;
    error_log /var/log/nginx/wordpress_error.log;
}

重要检查点

  1. PHP 版本路径:确保 fastcgi_pass 中的路径与你的 PHP 版本一致。
    • 如果是 PHP 8.1: /run/php/php8.1-fpm.sock
    • 如果是 PHP 8.2: /run/php/php8.2-fpm.sock
    • 如果不确定,可以查看 /etc/php/8.x/fpm/pool.d/www.conf 中的 listen = ... 行。
  2. 启用站点
    sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
  3. 测试配置并重启 Nginx
    sudo nginx -t
    sudo systemctl reload nginx

第六步:完善安全与性能配置

1. 设置文件权限

确保 Nginx 用户有权限写入上传目录(如 wp-content/uploads)。

sudo chown -R www-data:www-data /var/www/html/wp-content/uploads
sudo chmod -R 755 /var/www/html/wp-content/uploads

2. 配置防火墙 (UFW)

如果你开启了防火墙,允许 HTTP (80) 和 HTTPS (443)。

sudo ufw allow 'Nginx Full'
# 或者只允许 80 和 443
# sudo ufw allow 80/tcp
# sudo ufw allow 443/tcp
sudo ufw enable

3. 配置 SSL (Let’s Encrypt)

生产环境强烈建议开启 HTTPS。这里推荐使用 Certbot。

# 安装 certbot 和 nginx 插件
sudo apt install certbot python3-certbot-nginx -y

# 申请证书 (将 domain 替换为你的域名)
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot 会自动修改 Nginx 配置并重定向 HTTP 到 HTTPS。


第七步:完成安装

现在打开浏览器,访问你的域名(例如 http://your_domain.com)。

  1. 你会看到 WordPress 的安装向导界面。
  2. 按照提示填写网站标题、管理员账号、密码和邮箱。
  3. 点击“安装 WordPress”。

安装完成后,你可以登录后台进行主题和插件的定制。


常见问题排查

  • 502 Bad Gateway: 通常是 PHP-FPM 没启动,或者 Nginx 配置的 fastcgi_pass 路径不对。检查 systemctl status php*-fpm 和 Nginx 错误日志 /var/log/nginx/error.log
  • 无法上传图片: 检查 wp-content/uploads 文件夹的权限,确保 www-data 拥有写权限。
  • 页面显示中文乱码: 确保数据库字符集是 utf8mb4,且 Nginx 和 PHP 配置中未强制覆盖编码。
  • 无法连接数据库: 检查 wp-config.php 中的密码是否正确,以及 MySQL 是否正在运行。

通过以上步骤,你就成功构建了一个高性能、轻量级的 Nginx + PHP + MySQL WordPress 环境,完全脱离了宝塔面板的依赖。