搜索全站
安装部署 10 分钟阅读

Ubuntu 22.04 + Nginx + PHP 8.2 手动部署 WordPress 完整教程

从零开始在一台干净的 Ubuntu 22.04 服务器上手动部署 WordPress:安装 Nginx、MariaDB、PHP 8.2-FPM 与常用扩展,配置 server 块与伪静态,申请 SSL 证书,并设置目录权限解决安装插件需要 FTP 的问题,附每条命令与验证方法。

U
UFO_PF 2025-05-27 · 阅读 10 分钟
Ub 安装部署
阅读提示
本文约 3,819 字,预计阅读 10 分钟。文中命令与配置均经过实测,可直接参考执行。

引言:为什么要手动装,而不用一键包

一键包方便,但你不知道它改了什么,出问题排查成本高,也不利于复用。手动部署一次,你会清楚每个环节的作用:哪个文件控制伪静态、哪个参数决定上传大小、哪个用户负责写文件。

本文基于 Ubuntu 22.04 LTS,装 Nginx + MariaDB + PHP 8.2-FPM,全程可复制执行。

原理分析:请求是怎么走完一圈的

浏览器 → 80/443 → Nginx(server 块)
                → 静态文件:直接返回
                → .php:FastCGI → PHP-FPM(www池)
                                  → WordPress 启动 → 查 MariaDB → 返回 HTML

三个环节各有配置文件:Nginx 在 /etc/nginx/sites-available/,PHP-FPM 在 /etc/php/8.2/fpm/pool.d/www.conf,PHP 参数在 /etc/php/8.2/fpm/php.ini。出问题先定位是哪个环节。

保姆级实操

第一步:更新系统并安装 Nginx

sudo apt update && sudo apt upgrade -y
sudo apt install -y nginx curl unzip git
sudo systemctl enable --now nginx

浏览器访问服务器 IP,看到 Nginx 欢迎页说明成功。

第二步:安装 MariaDB

sudo apt install -y mariadb-server
sudo mysql_secure_installation

建库建用户:

sudo mysql -e "CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"
sudo mysql -e "CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '换成强密码';"
sudo mysql -e "GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"

第三步:安装 PHP 8.2 与扩展

Ubuntu 22.04 默认源是 PHP 8.1,需要加 ondrej 源:

sudo apt install -y software-properties-common
sudo add-apt-repository ppa:ondrej/php -y
sudo apt update
sudo apt install -y php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring \
  php8.2-xml php8.2-xmlrpc php8.2-zip php8.2-intl php8.2-imagick php8.2-bcmath

调优参数 /etc/php/8.2/fpm/php.ini:

upload_max_filesize = 64M
post_max_size = 64M
memory_limit = 256M
max_execution_time = 300
max_input_vars = 3000
sudo systemctl restart php8.2-fpm

第四步:下载 WordPress

cd /tmp && curl -O https://wordpress.org/latest.tar.gz
tar xzf latest.tar.gz
sudo mkdir -p /var/www/mimangfei.com
sudo cp -a /tmp/wordpress/. /var/www/mimangfei.com/

第五步:设置权限

sudo chown -R www-data:www-data /var/www/mimangfei.com
sudo find /var/www/mimangfei.com -type d -exec chmod 755 {} \;
sudo find /var/www/mimangfei.com -type f -exec chmod 644 {} \;

第六步:配置 Nginx server 块

sudo vim /etc/nginx/sites-available/mimangfei.com
server {
    listen 80;
    server_name mimangfei.com www.mimangfei.com;
    root /var/www/mimangfei.com;
    index index.php index.html;

    client_max_body_size 64m;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/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|svg|webp|woff2)$ {
        expires 30d;
        add_header Cache-Control "public, immutable";
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }

    location ~ /\. { deny all; }
}
sudo ln -s /etc/nginx/sites-available/mimangfei.com /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx

第七步:申请 SSL

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d mimangfei.com -d www.mimangfei.com

certbot 会自动加 443 配置并设置自动续期。验证:

sudo certbot renew --dry-run

第八步:完成安装

浏览器访问域名,进入安装向导。填数据库名 wordpress、用户 wpuser、主机 localhost。

常见踩坑与失败案例

  1. 502 Bad Gateway —— fastcgi_pass 的 sock 路径与 PHP-FPM 实际监听不一致。用 ls /run/php/ 确认实际文件名。
  2. File not found —— SCRIPT_FILENAME 没设对,或 root 路径写错。
  3. 安装插件提示需要 FTP —— 属主不是 www-data,回到第五步重做权限。
  4. 案例:部署完后上传 8MB 的主题报”超出最大上传大小”,改了 php.ini 仍失败,最后发现 client_max_body_size 没配,Nginx 层先拦下了。两层都要改。
  5. nginx -t 报 server_name 冲突 —— sites-enabled 里还留着 default 站点,删掉软链接即可。
  6. 证书申请失败 —— 域名还没解析到本机 IP,或 80 端口被防火墙挡住。certbot 的 http-01 验证必须能访问 80 端口。

总结

手动部署一次 WordPress 的成本大约 30 分钟,换来的是对整个链路的掌控:出问题知道去哪儿看日志(/var/log/nginx/error.log、/var/log/php8.2-fpm.log),改配置知道影响范围。建议你把这个流程写成 shell 脚本或 Ansible playbook 存下来,下一台服务器几分钟就能复现。

U
UFO_PF作者

专注 WordPress 生态的实战作者,内容以「可复制、可验证」为第一原则。

留下你的想法

邮箱地址不会被公开。带 * 的为必填项。