1. 为什么选择 Ubuntu 24.04 + Nginx + WordPress?
如果你正准备搭建一个个人博客、公司官网,或者是一个内容展示平台,WordPress 绝对是绕不开的选择。它简单、强大,生态丰富,几乎能满足你所有的内容管理需求。但很多新手朋友在第一步“部署”上就卡住了,看着各种教程里复杂的命令和配置,感觉头大。
别担心,今天我就以一个“过来人”的身份,手把手带你走一遍。我选择 Ubuntu 24.04 作为操作系统,不仅因为它是长期支持版本,稳定可靠,更因为它对最新的软件包支持非常好,能让我们用上性能更优的 PHP 和 Nginx。至于为什么用 Nginx 而不是更常见的 Apache?简单来说,Nginx 在处理高并发请求时效率更高,资源占用更少,特别适合个人服务器或者访问量逐渐增长的站点。我自己好几个项目从 Apache 迁移到 Nginx 后,最直观的感受就是页面加载速度变快了,服务器内存压力也小了。
所以,这篇指南的目标很明确:在 Ubuntu 24.04 上,搭建一个由 Nginx 驱动、性能经过初步优化的 WordPress 站点。整个过程我会尽量拆解得详细,把每个步骤背后的“为什么”也讲清楚,让你不仅能照着做成功,还能明白其中的道理。即使你之前没怎么接触过 Linux 命令行,跟着走下来也完全没问题。我们最终要实现的,不仅仅是一个“能访问”的 WordPress,而是一个为后续优化打好了坚实基础的、高效稳定的起点。
2. 搭建前的环境准备与核心组件安装
万事开头难,但准备工作做得好,后面就顺风顺水。在开始敲命令之前,我们先理清思路。整个部署流程可以看作一个“三层架构”:底层是 Ubuntu 系统,中间是服务软件(Nginx、PHP、MySQL),上层是 WordPress 应用。我们的任务就是一层层把它们组装起来。
2.1 系统更新与基础检查
首先,我们需要确保你的 Ubuntu 24.04 系统是最新的。打开终端,用 ssh 连接上你的服务器(如果是本地虚拟机,直接打开终端即可)。我强烈建议在操作前先切换为 root 用户,或者在所有命令前加上 sudo,以避免权限问题。这里我假设你使用 sudo。
第一步永远是更新软件包列表并升级现有软件。这能确保我们安装的是最新、最安全的版本。
sudo apt update
sudo apt upgrade -y
执行完成后,可以顺手检查一下系统版本,确认是 Ubuntu 24.04。
lsb_release -a
你会看到类似 Description: Ubuntu 24.04 LTS 的输出。好了,系统基础没问题,我们开始安装核心的“三件套”:PHP、Nginx 和 MySQL。
2.2 安装 PHP 与必要的扩展
WordPress 是用 PHP 编写的,所以 PHP 是我们的运行时环境。Ubuntu 24.04 的默认仓库提供了较新的 PHP 8.3 版本,但为了与更多插件兼容,我们选择安装 PHP 8.2 或 8.1(长期支持版本)。这里我以 PHP 8.2 为例,它的性能和安全性都有很好的平衡。
我们不仅需要 PHP 本身,还需要 PHP-FPM(FastCGI Process Manager),这是 Nginx 与 PHP 通信的“桥梁”;以及 php-mysql 扩展,让 PHP 能连接 MySQL 数据库。
sudo apt install php8.2-fpm php8.2-mysql php8.2-curl php8.2-gd php8.2-mbstring php8.2-xml php8.2-zip php8.2-opcache -y
这条命令一口气安装了 PHP-FPM 和一系列 WordPress 常用的扩展。php-curl 用于远程请求,php-gd 用于图片处理,php-mbstring 和 php-xml 是许多插件的基础,php-zip 方便后台更新和插件安装,php-opcache 能显著提升 PHP 执行效率。
安装完成后,验证一下:
php -v
你应该能看到 PHP 8.2.x 的版本信息。接下来,检查 PHP-FPM 服务是否已经运行:
sudo systemctl status php8.2-fpm
如果显示 active (running),说明服务已启动。这里有个关键点需要记下:PHP-FPM 通过一个 Unix socket 文件与 Nginx 通信。查看这个文件的路径:
ls /run/php/
你可能会看到 php8.2-fpm.sock 这样的文件。请记下它的完整路径,比如 /run/php/php8.2-fpm.sock,稍后配置 Nginx 时会用到。
2.3 安装并验证 Nginx
接下来是 Web 服务器 Nginx。安装非常简单:
sudo apt install nginx -y
安装完成后,Nginx 会自动启动。我们可以立即验证一下它是否工作。打开你的浏览器,访问你的服务器 IP 地址(如果是本地,访问 http://localhost 或 http://127.0.0.1)。你应该能看到 Nginx 的默认欢迎页面,上面写着 “Welcome to nginx!”。
如果看不到,可能是防火墙阻止了 80 端口。Ubuntu 默认使用 ufw 防火墙。我们可以暂时开放 HTTP 和 HTTPS 端口:
sudo ufw allow 'Nginx Full'
sudo ufw status
看到 80/tcp (Nginx HTTP) 和 443/tcp (Nginx HTTPS) 状态为 ALLOW 即可。现在再刷新浏览器,欢迎页面应该出现了。这个页面实际上位于 /var/www/html/index.nginx-debian.html。我们后续会用 WordPress 的文件替换它。
3. 配置 Nginx 以服务 WordPress
现在我们已经有了能跑静态页面的 Nginx,和能处理 PHP 的 PHP-FPM。接下来就要让它们俩“牵手成功”,并告诉 Nginx:“以后这个网站的所有请求,都交给 WordPress 来处理”。
3.1 创建专属的 Nginx 站点配置
Nginx 的站点配置文件通常放在 /etc/nginx/sites-available/ 目录下,然后通过软链接到 /etc/nginx/sites-enabled/ 来启用。这种方式便于管理多个网站。我们为 WordPress 创建一个独立的配置文件。
sudo vim /etc/nginx/sites-available/wordpress
如果你不熟悉 vim,可以用 sudo nano /etc/nginx/sites-available/wordpress。将以下配置内容粘贴进去。请务必仔细对照,尤其是 fastcgi_pass 那一行,要和你之前记下的 PHP-FPM socket 路径保持一致。
server {
# 监听 80 端口(HTTP)和 443 端口(HTTPS,需配置SSL证书)
listen 80;
listen [::]:80;
# 如果你的服务器有域名,在这里替换掉 server_name _
server_name _;
# 这是 WordPress 代码将要存放的根目录
root /var/www/wordpress;
# 设置默认索引文件,index.php 要放在最前面
index index.php index.html index.htm;
# 非常重要!定义 URL 重写规则,让 WordPress 的固定链接(Permalink)生效
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
# 处理 .php 文件的所有请求
location ~ \.php$ {
# 关键配置:指向 PHP-FPM 的 socket 文件
fastcgi_pass unix:/run/php/php8.2-fpm.sock;
fastcgi_index index.php;
# 引入 Nginx 内置的 FastCGI 参数文件
include fastcgi_params;
# 告诉 PHP-FPM 要执行的脚本文件路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
# 静态文件缓存优化:图片、字体、CSS、JS 等文件设置长期缓存,提升再次访问速度
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
expires 365d;
add_header Cache-Control "public, immutable";
access_log off;
}
# 禁止访问敏感文件,增强安全性
location ~ /\.ht {
deny all;
}
location ~ /wp-config.php {
deny all;
}
location ~ /readme.html {
deny all;
}
}
这个配置做了几件重要的事:1) 设置了网站根目录。2) 通过 try_files 指令将所有非真实文件的请求(比如文章页面 /hello-world)重写到 index.php,这是 WordPress 路由工作的基础。3) 将 .php 文件交给 PHP-FPM 处理。4) 对静态资源设置了长期缓存。5) 屏蔽了一些可能泄露信息的文件。
3.2 启用配置并测试
保存并退出编辑器后,创建软链接以启用该站点配置:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/
接下来,强烈建议先禁用 Nginx 的默认站点配置,避免冲突:
sudo rm /etc/nginx/sites-enabled/default
现在,测试 Nginx 配置语法是否正确。这是非常关键的一步,可以避免因为配置错误导致 Nginx 无法启动。
sudo nginx -t
如果输出 syntax is ok 和 test is successful,恭喜你,配置语法没问题。然后重新加载 Nginx 使新配置生效:
sudo systemctl reload nginx
4. 部署 WordPress 核心文件
Web 服务器配置好了,现在可以把“主角”——WordPress 请上台了。我们将从官网下载最新版本,并放置到 Nginx 配置中指定的目录。
4.1 下载与解压
首先,进入我们计划存放网站的目录,通常是在 /var/www/ 下。然后直接从 WordPress 中文官网下载最新版本。
cd /var/www
sudo wget https://cn.wordpress.org/latest-zh_CN.tar.gz
下载完成后,解压这个压缩包:
sudo tar -xzvf latest-zh_CN.tar.gz
解压后会生成一个 wordpress 文件夹。我们的 Nginx 配置里 root 指令指向的正是 /var/www/wordpress。现在检查一下:
ls -la /var/www/wordpress
你应该能看到 wp-admin, wp-content, wp-includes 等熟悉的目录。
4.2 设置正确的文件权限
这是很多新手会踩坑的地方。权限设得太松,不安全;设得太紧,WordPress 无法更新或上传文件。一个比较推荐的做法是:将目录的所有者设为运行 Nginx 和 PHP-FPM 进程的用户(通常是 www-data),同时保证目录对所属组有读写权限。
sudo chown -R www-data:www-data /var/www/wordpress
sudo find /var/www/wordpress -type d -exec chmod 755 {} \;
sudo find /var/www/wordpress -type f -exec chmod 644 {} \;
这三条命令的意思是:1) 将 /var/www/wordpress 及其下所有文件的所有者和组都改为 www-data。2) 将所有目录的权限设置为 755(所有者可读可写可执行,组和其他用户可读可执行)。3) 将所有文件的权限设置为 644(所有者可读可写,组和其他用户只读)。
这样设置后,Nginx/PHP-FPM 进程(以 www-data 身份运行)就能正常读写文件了。对于需要 WordPress 写入的特定目录(如上传目录),我们可以在 WordPress 安装后,根据其提示再做微调。
5. 配置 MySQL 数据库
WordPress 的所有文章、页面、设置都存储在数据库里。我们使用 MySQL(实际上是它的分支 MariaDB,在 Ubuntu 中 mysql 包通常指向 MariaDB)来创建这个数据库。
5.1 安装并加固 MySQL
安装 MySQL 服务器:
sudo apt install mysql-server -y
安装完成后,运行一个安全安装脚本,它会引导你设置 root 密码、移除匿名用户、禁止远程 root 登录等。这对生产环境非常重要。
sudo mysql_secure_installation
你会被问到一系列问题:
- VALIDATE PASSWORD COMPONENT:是否设置密码验证插件?对于测试环境可以选
No,生产环境建议选Yes并设置一个强密码策略。 - Set root password:一定要为 root 用户设置一个强密码。
- Remove anonymous users?:选择
Y,删除匿名用户。 - Disallow root login remotely?:选择
Y,禁止 root 远程登录。我们后续会创建专用用户来管理数据库。 - Remove test database?:选择
Y,删除测试数据库。 - Reload privilege tables?:选择
Y,立即生效。
5.2 为 WordPress 创建专用数据库和用户
直接用 root 用户运行 WordPress 是不安全的。最佳实践是:为每个 WordPress 网站创建独立的数据库和专属的用户账号,并且只赋予这个用户对该数据库的必要权限。
首先,以 root 身份登录 MySQL:
sudo mysql -u root -p
输入你刚才设置的 root 密码。进入 MySQL 命令行后,依次执行以下 SQL 语句。请务必将 'your_strong_password_here' 替换成一个你自己设定的、复杂的密码。
-- 创建一个名为 wordpress 的数据库,使用 utf8mb4 字符集以支持所有语言(如emoji)
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
-- 创建一个名为 wordpressuser 的用户,并设置密码
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED BY 'your_strong_password_here';
-- 授予 wordpressuser 用户对 wordpress 数据库的所有权限
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
-- 让权限设置立即生效
FLUSH PRIVILEGES;
-- 退出 MySQL
EXIT;
这里有几个细节:1) 用户 'wordpressuser'@'localhost' 中的 localhost 表示这个用户只能从本机(即你的 Ubuntu 服务器)连接数据库,这是最安全的方式,因为 WordPress 和 MySQL 在同一台机器上。2) 我们授予的是 ALL PRIVILEGES,但对于 WordPress 来说,其实只需要 SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER 等权限。不过对于新手,全部授予更简单,不易出错。
6. 完成 WordPress 安装与初步优化
所有后台服务都准备好了,现在终于可以启动 WordPress 著名的“五分钟安装”了。
6.1 通过 Web 界面安装 WordPress
打开你的浏览器,访问你的服务器 IP 地址(如果 Nginx 配置的 server_name 是 _)或者你绑定的域名。你应该会看到 WordPress 的选择语言界面。
选择“简体中文”,点击“继续”。接下来,你会看到需要填写数据库信息的页面。这正是我们上一步准备好的:
- 数据库名:
wordpress - 用户名:
wordpressuser - 密码:你设置的
your_strong_password_here - 数据库主机:
localhost - 表前缀:默认是
wp_。我强烈建议你修改它,比如改成wp7a3b_这样随意的前缀。这能在一定程度上增加安全性,防止针对默认表前缀的自动化攻击。
填写完毕后,点击“提交”。如果一切顺利,WordPress 会显示“可以安装了”。点击“运行安装程序”。
在最后的安装页面,设置你的站点标题、管理员用户名、密码和电子邮箱地址。请务必为管理员账户设置一个极其强壮的密码,不要使用 admin 这类简单用户名。邮箱地址务必真实,用于找回密码。
点击“安装 WordPress”,稍等片刻,你就会看到“安装成功”的提示。点击“登录”,用刚才设置的管理员账号登录,你就进入了 WordPress 后台管理界面!恭喜你,一个全新的 WordPress 站点已经诞生了。
6.2 安装后的关键安全与性能设置
进入后台后,先别急着换主题装插件,有几件重要的事需要先做:
- 更新固定链接:在后台左侧菜单找到“设置” -> “固定链接”。不要使用默认的“朴素”格式(带
?p=123的那种)。选择“文章名”或你喜欢的其他格式。这不仅能让网址更美观,也对 SEO 更友好。点击“保存更改”后,Nginx 之前配置的try_files规则就会确保这些“漂亮链接”能正常工作。 - 检查主题和插件更新:在“仪表盘”首页,通常会有更新提示。及时将 WordPress 核心、主题和已安装的插件更新到最新版本,是保持安全最重要的手段之一。
- 配置缓存插件(可选但强烈推荐):对于新站,一个轻量级的缓存插件能极大提升访问速度。你可以在“插件” -> “安装插件”里搜索并安装像 WP Super Cache 或 W3 Total Cache 这样的插件。它们能生成静态 HTML 文件,直接由 Nginx 服务,从而绕过 PHP 和数据库,速度飞快。配置时,通常选择“专家模式”,并启用“Nginx 重写规则”,插件会生成一段配置代码让你添加到 Nginx 配置中。
- 调整文件上传大小限制:如果你需要上传大图片或视频,可能会遇到文件大小限制。这个限制由 PHP 和 Nginx 共同决定。修改 PHP 的限制:
找到sudo vim /etc/php/8.2/fpm/php.iniupload_max_filesize和post_max_size,将它们修改为你需要的值,比如128M。然后修改 Nginx 的限制,编辑之前的站点配置文件:
在sudo vim /etc/nginx/sites-available/wordpressserver {块内添加一行:client_max_body_size 128M;。最后,重启服务使改动生效:sudo systemctl restart php8.2-fpm sudo systemctl reload nginx
走到这一步,你的 WordPress 站点已经不是一个“裸奔”的初学者版本了。它运行在高效的 Nginx 服务器上,拥有独立的数据库用户,文件权限基本合理,并且你已经知道了如何进一步优化速度和安全性。这套组合在应对初期的访问增长时,会表现得非常从容。当然,网站运维是一个持续的过程,定期备份、更新和监控是必不可少的功课。希望这份详细的指南能帮你打下坚实的基础,让你更专注于网站内容的创作,而不是折腾服务器配置。如果在实践中遇到任何问题,回想一下每个步骤的原理,多查阅官方文档,社区的解决方案通常也非常丰富。

2064

被折叠的 条评论
为什么被折叠?



