现在各大HTTPS证书提供商都有免费的证书,但是时间已经从一年的变成了3个月,就是说每隔三个月就要换一次,不然HTTPS请求无法处理,还会被搜索引擎和浏览器认为不友好的网站,无法正常打开。
下面介绍Ubuntu 26.04 原生部署 WordPress 操作方法,这是最稳、最简单的完整教程,搭配 Caddy + PHP + MySQL,一步一步复制粘贴就能跑起来,还自带 HTTPS。

一、整体架构
Ubuntu 26.04 + Caddy(Web 服务器)+ PHP 8.3 + MySQL(数据库)+ WordPress
二、安装依赖(Caddy、MySQL、PHP)
1. 安装 Caddy
如果你还没装,请参考上一篇《Ubuntu 26.04 安装 Caddy 详细教程(新手友好版)》
2. 安装 MySQL
sudo apt install -y mysql-server
初始化安全设置(一路 Y 即可):
sudo mysql_secure_installation
3. 安装 PHP 8.5 及 WordPress 必需扩展
Ubuntu 26.04 系统官方默认仓库只有 PHP 8.5,如果要安装其它版本:如, php8.3 可以添加其它源:
sudo apt install -y php-fpm php-mysql php8.5-curl php8.5-gd php8.5-mbstring php8.5-xml php8.5-zip php8.5-intl php8.5-imagick
三、创建 MySQL 数据库与用户
sudo mysql
在 MySQL 里执行以下 4 行(配置一下自己的数据库密码即可):
CREATE DATABASE wordpress CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY '你的密码';
GRANT ALL ON wordpress.* TO 'wpuser'@'localhost';
FLUSH PRIVILEGES;
EXIT;
记住这 3 个信息,后面要用:
- 数据库名:
wordpress - 用户名:
wpuser - 密码:你自己设的那个
四、下载并部署 WordPress
1. 创建网站目录
sudo mkdir -p /var/www/wordpress
cd /var/www/wordpress
2. 进入目录,下载最新版 WordPress,并解压(可以下载zip版的)
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz --strip-components=1
3. 设置权限(非常重要)
sudo chown -R www-data:www-data /var/www/wordpress
五、配置 Caddy 并启用 HTTPS
编辑配置文件:
sudo vim /etc/caddy/Caddyfile
直接粘贴下面完整配置caddyfile(替换成你的信息):
{
email 你的邮箱@qq.com
}
你的域名.com {
root * /var/www/wordpress
encode gzip zstd
php_fastcgi unix//run/php/php8.5-fpm.sock
file_server
rewrite match_not {file} {
to {path} {path}/ /index.php?{query}
}
header {
X-Frame-Options SAMEORIGIN
X-Content-Type-Options nosniff
Strict-Transport-Security max-age=31536000;
}
}
保存退出,重载 Caddy:
sudo systemctl reload caddy
如果你想本地测试一下,可以像我这样添加一个配置:
:8080 {
root * /var/www/wordpress
encode gzip zstd
php_fastcgi unix//run/php/php8.5-fpm.sock
file_server
rewrite match_not {file} {
to {path} {path}/ /index.php?{query}
}
}
说明:
:8080= 本地任意 IP 都可以访问,端口 8080- 没有 HTTPS,纯 HTTP,本地测试最稳
- 不会出现证书错误、跳转循环
六、防火墙放行 80/443
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload
七、网页安装 WordPress
打开浏览器访问:
https://你的域名.com
按提示填写:
- 数据库名:
wordpress - 用户名:
wpuser - 密码:你之前设的
- 数据库主机:
localhost - 表前缀:默认
wp_即可
然后设置站点标题、管理员账号密码,安装完成。
八、常用命令
# 重启 PHP
sudo systemctl restart php8.3-fpm
# 重启 Caddy
sudo systemctl restart caddy
# 重启 MySQL
sudo systemctl restart mysql
# 查看 Caddy 状态
systemctl status caddy
九、常见问题
- 打不开网站:域名没解析、防火墙没开、Caddy 配置错等
- 数据库连接失败:密码 / 用户名错,或 MySQL 没启动
- 后台无限跳转:没加 wp-config 里的 HTTPS 代码
- 图片 / 主题无法安装:目录权限不对,重新执行 chown
附上一个比较完整的Caddyfile文件配置内容,可以参考一下:
# 全局通用配置
{
# 证书到期通知邮箱(必填,Let’s Encrypt告警)
email admin@你的域名.com
# 证书缓存目录(避免重复申请证书,减少ACME请求)
storage /var/lib/caddy/certificates
# 限制ACME并发请求,防止触发Let’s Encrypt限流封禁
acme_ca https://acme-v02.api.letsencrypt.org/directory {
rate_limit 10 per_hour
}
# 开启HTTP/3,优化HTTPS访问速度
http3
# 全局日志分割,7天自动清理
log {
output file /var/log/caddy/global.log {
roll_size 200MiB
roll_keep 7
}
format json
}
}
# ====================== 公网域名配置(带自动HTTPS)======================
# 替换为你的域名,同时匹配主域名+www二级域名
你的域名.com, www.你的域名.com {
# 网站根目录
root * /var/www/wordpress
# 开启gzip+zstd双压缩,大幅提升页面加载速度
encode gzip zstd
# PHP8.5 FastCGI解析(Ubuntu26.04固定sock路径)
php_fastcgi unix//run/php/php8.5-fpm.sock {
# 透传真实客户端IP、HTTPS协议,根治WordPress HTTPS跳转循环
header_up X-Real-IP {remote_host}
header_up X-Forwarded-For {remote}
header_up X-Forwarded-Proto {scheme}
header_up Host {host}
# 上传文件超时适配(大图片/主题包上传)
read_timeout 120s
}
# WordPress 标准伪静态规则,固定链接正常访问
try_files {path} {path}/ /index.php?{query}
# 开启静态文件服务
file_server
# ---------------------- 安全请求头加固 ----------------------
header {
# 隐藏Caddy版本号,防止漏洞扫描
-Server
# 禁止MIME类型嗅探
X-Content-Type-Options nosniff
# 禁止被iframe嵌套,防点击劫持
X-Frame-Options SAMEORIGIN
# 严格跨域引用策略
Referrer-Policy strict-origin-when-cross-origin
# HSTS强制HTTPS缓存1年,浏览器永久走HTTPS,杜绝http跳转循环
Strict-Transport-Security "max-age=31536000; includeSubDomains; preload"
# 屏蔽危险权限
Permissions-Policy camera=(), microphone=(), geolocation=()
}
# ---------------------- 静态资源长期缓存(减少服务器请求) ----------------------
@staticAssets path *.jpg *.jpeg *.png *.gif *.svg *.ico *.webp *.css *.js *.woff *.woff2 *.ttf
header @staticAssets Cache-Control "public, max-age=31536000, immutable"
header @staticAssets ETag ""
# ---------------------- 拦截危险文件访问 ----------------------
@blockSensitive path /wp-config.php /wp-config-sample.php /xmlrpc.php /readme.html /license.txt /wp-admin/install.php
respond @blockSensitive 403
# ---------------------- 单独站点访问日志 ----------------------
log {
output file /var/log/caddy/wordpress-site.log {
roll_size 100MiB
roll_keep 7
}
format console
}
}
# ====================== 强制www跳转至无www(可选,不需要直接删除本段) ======================
www.你的域名.com {
redir https://你的域名.com{uri} permanent
}
线上防止 HTTPS 跳转死循环核心配置
php_fastcgi 内添加 4 条header_up透传头,把前端 HTTPS 状态传递给 PHP,WordPress 能识别当前是 HTTPS 环境,不会反复跳转 http→https:
caddyfile
header_up X-Forwarded-Proto {scheme}
配套wp-config.php补充代码双重保险:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') {
$_SERVER['HTTPS'] = 'on';
}
define('WP_HOME','https://你的域名.com');
define('WP_SITEURL','https://你的域名.com');