本文将详细介绍在 Debian 系统上使用 Nginx 搭建 WordPress 博客的完整流程。所用软件包括 Nginx(Web 服务器)、MariaDB(数据库服务器)、PHP-FPM(PHP 处理服务)和 WordPress。全程启用 HTTPS,并通过 Let’s Encrypt 的 Certbot 获取免费 SSL 证书。每一步都给出具体命令及其作用解释,适合初学者按部就班操作。
第 1 步:更新系统并安装 Nginx
首先更新软件包索引并安装 Nginx。Nginx 是一款高性能、轻量级的 Web 服务器,可通过 APT 直接获取:
sudo apt update
sudo apt install nginx -y
sudo apt update
:更新软件包列表,确保安装最新软件sudo apt install nginx -y
:从 Debian 仓库安装 Nginx Web 服务器完成后,Nginx 的默认网页根目录为/var/www/html/
。
安装完成后,启动 Nginx 并设置为开机自启:
sudo systemctl start nginx
sudo systemctl enable nginx
sudo systemctl status nginx
sudo systemctl start nginx
:启动 Nginx 服务。sudo systemctl enable nginx
:设置 Nginx 开机自动启动。sudo systemctl status nginx
:查看 Nginx 服务运行状态。确认显示 “active (running)” 表示成功启动。
第 2 步:安装并安全配置 MariaDB
WordPress 需要数据库来存储数据。MariaDB 是 MySQL 的开源分支,也是 Debian 默认提供的数据库软件。使用 APT 安装 MariaDB:
sudo apt install mariadb-server -y
sudo apt install mariadb-server -y
:安装 MariaDB 数据库服务器。
安装完成后,启动并设置开机自启:
sudo systemctl start mariadb
sudo systemctl enable mariadb
sudo systemctl status mariadb
sudo systemctl start mariadb
:启动 MariaDB 服务。sudo systemctl enable mariadb
:设置 MariaDB 开机自动启动。sudo systemctl status mariadb
:检查 MariaDB 服务状态。正常运行会显示 “active (running)”。
接下来运行安全脚本 mysql_secure_installation
提高安全性:
sudo mysql_secure_installation
该脚本会提示设置 MariaDB 根用户密码、删除匿名用户、禁止远程 root 登录、删除测试数据库等选项。按提示操作(一般回车或输入 Y
确认),完成后 MariaDB 安装更加安全
第 3 步:创建 WordPress 数据库和用户
登录 MariaDB 创建专用数据库和用户。推荐使用强密码,并对数据库只赋予必要权限。首先以 root 权限进入数据库(根据安装方式,可能直接 sudo mariadb
或 sudo mysql -u root -p
):
sudo mysql -u root -p
系统提示输入刚刚设置的 MariaDB root 密码。登录后执行以下 SQL 命令(建议使用 utf8mb4 字符集以支持表情等字符):
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY 'StrongPass1!';
FLUSH PRIVILEGES;
EXIT;
- C
REATE DATABASE wordpress ...
:创建名为wordpress
的数据库,用于存放博客数据。 GRANT ALL ON wordpress.* TO 'wpuser'@'localhost' IDENTIFIED BY 'StrongPass1!';
:创建用户wpuser
并授予其对wordpress
数据库的所有权限。其中StrongPass1!
是示例密码,请替换为复杂密码。FLUSH PRIVILEGES;
:刷新权限,让刚才的改动立即生效。EXIT;
:退出 MariaDB 命令行。
第 4 步:安装 PHP 和常用扩展
WordPress 需要 PHP 环境,且要通过 PHP-FPM 与 Nginx 通信。安装 PHP 及常用扩展:
sudo apt install php php-fpm php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-xmlrpc php-zip -y
php
:PHP 主程序,php-fpm
:PHP FastCGI 进程管理器,用于与 Nginx 配合。php-mysql
:PHP 与 MariaDB/MySQL 通信的扩展。- 其他扩展(如
php-curl
,php-gd
,php-mbstring
等)为 WordPress 插件和功能提供支持。安装这些扩展能让网站运行更稳定。
安装完成后,启动并启用 PHP-FPM 服务(具体服务名根据 PHP 版本可能为 php7.4-fpm
、php8.1-fpm
等):
sudo systemctl start php7.4-fpm
sudo systemctl enable php7.4-fpm
sudo systemctl status php7.4-fpm
- 替换上例中的版本号为你系统实际安装的版本。
sudo systemctl start
启动 PHP-FPM,enable
设置开机自启,并通过status
检查其状态。
第 5 步:下载并部署 WordPress 文件
创建网站目录并将最新版 WordPress 文件复制到该目录。以例子域名 mysite.com
为例,执行:
sudo mkdir -p /var/www/html/mysite.com
sudo mkdir -p /var/www/html/mysite.com
:在/var/www/html
下创建网站根目录,-p
参数可递归创建父目录。此目录用于存放 WordPress 文件。
接着下载 WordPress 安装包并解压:
cd /tmp
wget https://wordpress.org/latest.tar.gz
tar xzvf latest.tar.gz
cd /tmp
:切换到临时目录。wget ...latest.tar.gz
:从 WordPress 官方网站下载最新压缩包。tar xzvf latest.tar.gz
:解压下载的归档,解压后会生成/tmp/wordpress
目录。
将解压后的文件复制到网站根目录:
sudo cp -a wordpress/. /var/www/html/mysite.com
sudo cp -a wordpress/. /var/www/html/mysite.com
:递归复制/tmp/wordpress
目录下的所有文件和隐藏文件到网站根目录。这里使用-a
保持文件属性不变。
此时 /var/www/html/mysite.com
下已有 WordPress 的所有源文件(含示例配置文件 wp-config-sample.php
等)。
第 6 步:配置 wp-config.php
进入网站目录,复制并修改 WordPress 配置文件以连接数据库:
cd /var/www/html/mysite.com
sudo cp wp-config-sample.php wp-config.php
sudo nano wp-config.php
sudo cp wp-config-sample.php wp-config.php
:复制示例配置文件为wp-config.php
。sudo nano wp-config.php
:使用编辑器打开wp-config.php
。
在打开的文件中,找到数据库连接部分,修改为刚创建的数据库信息,例如:
define('DB_NAME', 'wordpress');
define('DB_USER', 'wpuser');
define('DB_PASSWORD', 'StrongPass1!');
define('DB_HOST', 'localhost');
- 将
DB_NAME
设置为第 3 步创建的数据库名(此处为wordpress
)。 DB_USER
和DB_PASSWORD
分别填写对应的数据库用户名和密码(这里是wpuser
及其密码)。DB_HOST
通常保持localhost
(表示数据库服务器在本机)。
保存后退出编辑器(在 nano 中按 Ctrl+O
保存,Ctrl+X
退出)。
第 7 步:设置文件权限和所有权
为了让 Nginx(运行于 www-data
用户)能正常读取和写入 WordPress 文件,需要正确设置目录权限。执行:
sudo chown -R www-data:www-data /var/www/html/mysite.com
sudo chown -R www-data:www-data /var/www/html/mysite.com
:将网站目录及其下所有文件的拥有者改为www-data
用户和组。Nginx 默认以www-data
身份运行,这样它可以访问和写入必要文件。
然后设置安全的文件和目录权限:
sudo find /var/www/html/mysite.com -type d -exec chmod 755 {} \;
sudo find /var/www/html/mysite.com -type f -exec chmod 644 {} \;
- 以上命令将所有目录权限设置为
755
(所有者可读写执行,组和其它用户可读执行),所有文件权限设置为644
(所有者可读写,组和其它只读)。这是一种常用的安全权限配置。
这样 WordPress 文件均可被 Nginx 读取(以及在需要时写入,如插件安装时),同时避免权限过宽导致安全风险。
第 8 步:配置 Nginx 虚拟主机(Server Block)
现在在 Nginx 中为 WordPress 网站创建服务器块配置文件,以响应 HTTP 请求。新建配置文件(假设使用 mysite.com
作为域名):
sudo nano /etc/nginx/sites-available/mysite.com
在其中填入以下内容,并根据实际修改域名和路径:
server {
listen 80;
listen [::]:80;
server_name mysite.com www.mysite.com;
root /var/www/html/mysite.com;
index index.php index.html index.htm;
access_log /var/log/nginx/mysite.com.access.log;
error_log /var/log/nginx/mysite.com.error.log;
client_max_body_size 100M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include fastcgi_params;
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
listen 80;
和listen [::]:80;
:指定服务器监听 IPv4/IPv6 的 80 端口(HTTP 默认端口)。server_name mysite.com www.mysite.com;
:指定该配置块响应的域名(可列出多个)。root /var/www/html/mysite.com;
:网站根目录,即 WordPress 文件所在路径。index index.php index.html index.htm;
:默认主页文件列表,index.php
在 WordPress 中用于处理请求。access_log
/error_log
:指定访问日志和错误日志路径,便于排错。client_max_body_size 100M;
:允许客户端上传最大 100MB 数据,可根据需要调整(用于插件上传、媒体上传时)。location / { try_files $uri $uri/ /index.php?$args; }
:指示 Nginx 按顺序尝试访问请求的静态文件或目录,若未找到则将请求转给index.php
处理。此配置保证 WordPress 的伪静态和固定链接功能正常工作。location ~ \.php$ { ... }
:匹配所有以.php
结尾的请求。在此块中:include fastcgi_params;
:加载默认的 FastCGI 参数。fastcgi_pass unix:/run/php/php7.4-fpm.sock;
:指定 PHP-FPM 监听的 Unix 套接字(以安装的 PHP 版本为准)。fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
:设置脚本文件路径,告诉 PHP-FPM 要执行哪个 PHP 文件。
在编辑完成后,保存并退出(在 nano 中 Ctrl+O、Ctrl+X)。然后启用该站点并禁用默认站点:
sudo ln -s /etc/nginx/sites-available/mysite.com /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default
sudo rm /etc/nginx/sites-available/default
ln -s
:建立启用配置的软链接。- 删除
/etc/nginx/sites-enabled/default
和/etc/nginx/sites-available/default
:移除默认配置,防止默认站点拦截请求。
最后检查配置语法并重启 Nginx:
sudo nginx -t
sudo systemctl reload nginx
sudo nginx -t
:测试 Nginx 配置文件是否有语法错误。sudo systemctl reload nginx
:平滑重启 Nginx,使新配置生效。
下面表格列出上述 Nginx 配置文件中常用指令及其含义,帮助理解各项作用:
指令 / 设置 | 说明 |
---|---|
listen 80; / listen [::]:80; | 配置 Nginx 监听 IPv4/IPv6 的 80 端口(HTTP 默认端口)。 |
server_name mysite.com www.mysite.com; | 指定该 server 块响应的域名,可同时列出多个(示例包含带 www 和不带 www)。 |
root /var/www/html/mysite.com; | 网站根目录路径,即存放 WordPress 文件的位置。 |
index index.php index.html index.htm; | 默认首页文件列表。Nginx 会按顺序查找这些文件作为首页显示。 |
access_log /var/log/nginx/...; | 指定访问日志文件存放路径,用于记录所有访问请求。 |
error_log /var/log/nginx/...; | 指定错误日志文件存放路径,用于记录 Nginx 错误信息。 |
client_max_body_size 100M; | 允许客户端提交的最大请求体大小(此处为 100MB),主要用于控制文件上传大小。 |
location / { try_files $uri $uri/ /index.php?$args; } | 根路径请求的匹配规则:尝试按文件系统查找请求的文件或目录,若不存在则将请求转发给 index.php 处理。确保 WordPress 伪静态功能正常。 |
location ~ \.php$ { ... } | 匹配以 .php 结尾的请求。在此区块中,通过 fastcgi_pass 将 PHP 请求转发给 PHP-FPM 进程。 |
fastcgi_pass unix:/run/php/php7.4-fpm.sock; | 指定 PHP-FPM 的监听套接字或端口,确保 Nginx 能将 PHP 请求发送给正确的 PHP 进程(根据实际版本调整)。 |
fastcgi_param SCRIPT_FILENAME ...; | 设置服务器端 PHP 脚本的路径变量,让 PHP-FPM 知道要执行哪个文件。 |
第 9 步:检查服务器防火墙和端口是否开放
UFW(Ubuntu 防火墙):
查看状态:sudo ufw status
。如果状态为 inactive
,说明 UFW 未启用;如果是 active
,则需要确认是否允许 80 和 443 端口:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw status
如上命令将开放 HTTP (80) 和 HTTPS (443) 端口。状态中应该显示 80/tcp ALLOW
、443/tcp ALLOW
。
第 10步:启用 HTTPS(Certbot 证书)
为网站配置免费 SSL 证书并启用 HTTPS。使用 Certbot 的 Nginx 插件可以自动完成证书申请和配置:
sudo apt update
sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d mysite.com -d www.mysite.com
sudo apt install certbot python3-certbot-nginx -y
:安装 Certbot 及其 Nginx 插件。1sudo certbot --nginx -d mysite.com -d www.mysite.com
:启动 Certbot,使用--nginx
插件自动获取并配置证书,同时为两个域名生成证书。命令中的-d
参数后跟域名,多域名用多个-d
。
运行后,Certbot 会提示输入邮箱、同意服务条款,并进行域名验证。完成后,Certbot 会自动修改 Nginx 配置以启用 HTTPS,并在 /etc/letsencrypt/live/mysite.com/
保存证书文件。你可以使用浏览器访问 https://mysite.com/
检查是否启用锁定图标来验证 SSL 是否生效。
第 11步:完成安装并测试
至此,WordPress 环境已经准备就绪。打开浏览器,访问 http://mysite.com/
(或 https,如果证书已生效)即可进入 WordPress 安装界面。按照提示选择语言、设置站点标题、管理员账号和密码等信息完成安装。安装完成后,可以用管理员账号登录后台管理网站。
注意:安装成功后,为安全起见可以将网站目录所有权还原给 root 用户,例如:
sudo chown -R root:root /var/www/html/mysite.com
这样做并不会影响 WordPress 的正常访问,但可以减少不必要的写权限。(如果日后需要在后台安装插件或主题,可临时切换回 www-data
用户权限。)