Ubuntu 22.04 安装 FrankenPHP 部署 WordPress 完整教程(含 JSON 错误修复)

这是一份从 0 到 1、适配当前环境Ubuntu 22.04的详细教程,全程命令行操作,直接复制执行即可,同时彻底解决wordpress后台编辑文章时遇到的 “更新失败,此响应不是合法的 JSON 响应” 问题。

一、环境准备(先更新系统)

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

# 安装基础依赖
sudo apt install -y curl wget unzip zip git nano ufw

二、安装数据库(MariaDB,替代 MySQL)

WordPress 必须依赖数据库,这里安装轻量高效的 MariaDB。

# 安装MariaDB
sudo apt install -y mariadb-server mariadb-client

# 启动并设置开机自启
sudo systemctl start mariadb
sudo systemctl enable mariadb

# 安全配置(按提示操作,建议设置root密码,其他选Y)
sudo mysql_secure_installation

创建 WordPress 专用数据库(关键)

# 登录数据库(输入刚才设置的root密码)
sudo mysql -u root -p

# 执行以下SQL命令(逐行复制)
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wp_user'@'localhost' IDENTIFIED BY '你的数据库密码';
GRANT ALL ON wordpress.* TO 'wp_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

记住:数据库名:wordpress、用户名:wp_user、密码:你设置的密码

三、安装 FrankenPHP(官方二进制方式,最稳定)

FrankenPHP 自带 Caddy Web 服务器 + PHP 运行时,无需额外装 Nginx/Apache/PHP-FPM

# 下载官方安装脚本并执行
curl -sL https://frankenphp.dev/install.sh | sudo sh

# 将frankenphp移到系统可执行目录
sudo mv frankenphp /usr/local/bin/

# 验证安装(显示版本即成功)
frankenphp version

创建 FrankenPHP 系统服务(开机自启)

# 创建服务文件
sudo nano /etc/systemd/system/frankenphp.service

粘贴以下内容(直接全量复制):

[Unit]
Description=FrankenPHP Server
After=network.target

[Service]
User=root
Group=root
WorkingDirectory=/usr/share/frankenphp
ExecStart=/usr/local/bin/frankenphp run --config /etc/caddy/Caddyfile
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target

Ctrl+O 保存,Ctrl+X 退出。

四、配置 FrankenPHP(Caddyfile,核心!修复 JSON 错误)

1. 创建配置目录与文件

# 创建Caddy配置目录
sudo mkdir -p /etc/caddy

# 编辑Caddyfile(直接复制我给你的完美配置)
sudo nano /etc/caddy/Caddyfile

2. 粘贴 WordPress 专用 Caddyfile(彻底解决 JSON 问题)

caddyfile

{
    # 启用FrankenPHP模式
    frankenphp
    # 关闭自动HTTPS(本地/测试环境,生产可开启)
    auto_https off
    # 设置PHP版本(内置)
    php_version 8.3
}

# 监听80端口,适配本地IP/域名
:80 {
    # 网站根目录(你指定的路径)
    root * /usr/share/frankenphp/wordpress
    
    # 启用压缩(提升速度)
    encode zstd br gzip
    
    # FrankenPHP PHP处理配置(修复WordPress JSON核心)
    php_server {
        # 路由重写(支持伪静态)
        try_files {path} {path}/ /index.php?{query}
        # 清空PATH_INFO(避免冲突)
        env PATH_INFO ""
        # 关闭无缓冲输出(解决JSON错误关键)
        env FRANKENPHP_DISABLE_OUTPUT_BUFFERING 0
        # 开启PHP缓冲(解决JSON错误关键)
        env PHP_OUTPUT_BUFFERING 4096
        # 允许上传大文件
        env PHP_UPLOAD_MAX_FILESIZE 64M
        env PHP_POST_MAX_SIZE 64M
        env PHP_MEMORY_LIMIT 256M
        env PHP_MAX_EXECUTION_TIME 300
    }
    
    # 静态文件服务
    file_server
    
    # 日志配置
    log {
        output file /var/log/frankenphp.log
        level info
    }
}

保存退出(Ctrl+OEnterCtrl+X

3. 创建网站目录并授权

# 创建网站根目录
sudo mkdir -p /usr/share/frankenphp/wordpress

# 创建日志文件
sudo touch /var/log/frankenphp.log

# 授权(让FrankenPHP可读写)
sudo chown -R root:root /usr/share/frankenphp
sudo chmod -R 755 /usr/share/frankenphp
sudo chown root:root /var/log/frankenphp.log

五、下载并配置 WordPress

1. 下载最新版 WordPress

cd /tmp
wget https://wordpress.org/latest.tar.gz
tar -zxvf latest.tar.gz

# 移动到FrankenPHP网站目录
sudo mv wordpress/* /usr/share/frankenphp/wordpress/

2. 配置 wp-config.php(数据库 + 修复 JSON)

# 进入目录
cd /usr/share/frankenphp/wordpress

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

# 编辑配置
sudo nano wp-config.php

第一步:修改数据库信息(找到对应行替换)

// 旧配置
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );

// 替换为(你刚才创建的数据库信息)
define( 'DB_NAME', 'wordpress' );
define( 'DB_USER', 'wp_user' );
define( 'DB_PASSWORD', '你的数据库密码' );
define( 'DB_HOST', 'localhost' );

第二步:在 <?php第一行添加(彻底修复 JSON 错误)

<?php
// 修复FrankenPHP+WordPress JSON响应错误(必须加)
ob_start();
ini_set('display_errors', 0);
ini_set('output_buffering', 'On');
error_reporting(E_ERROR);

// 下面是原有配置,不要动

保存退出。

3. 最终权限设置(WordPress 必备)

sudo chown -R root:root /usr/share/frankenphp/wordpress
sudo chmod -R 755 /usr/share/frankenphp/wordpress
sudo chmod -R 775 /usr/share/frankenphp/wordpress/wp-content

六、启动 FrankenPHP 服务

# 重新加载服务配置
sudo systemctl daemon-reload

# 启动FrankenPHP
sudo systemctl start frankenphp

# 设置开机自启
sudo systemctl enable frankenphp

# 查看状态(active (running) 即成功)
sudo systemctl status frankenphp

七、开放防火墙(Ubuntu UFW)

# 允许80端口(HTTP)
sudo ufw allow 80/tcp

# 允许SSH(避免远程断开)
sudo ufw allow ssh

# 启用防火墙
sudo ufw enable

# 查看状态
sudo ufw status

八、完成 WordPress 网页安装

  1. 打开浏览器,访问你的 服务器 IP域名
  2. 按提示选择语言 → 填写站点标题、管理员账号、密码、邮箱
  3. 点击 安装 WordPress → 安装成功后登录后台

九、验证 JSON 错误是否修复

进入后台 → 文章 → 新建 / 编辑文章 → 点击 更新

不再弹出:更新失败,此响应不是合法的 JSON 响应

十、常用维护命令

# 重启FrankenPHP(修改配置后执行)
sudo systemctl restart frankenphp

# 查看日志(排查问题)
tail -f /var/log/frankenphp.log

# 停止服务
sudo systemctl stop frankenphp

# 重载配置(不停止服务)
sudo systemctl reload frankenphp

十一、生产环境优化(可选)

  1. 开启 HTTPS:修改 Caddyfile auto_https on,并绑定域名
  2. 安装缓存插件:WP Rocket、W3 Total Cache
  3. 配置 CDN:Cloudflare 加速

为什么你的 JSON 错误彻底解决了?

  • 关闭 FrankenPHP 无缓冲输出FRANKENPHP_DISABLE_OUTPUT_BUFFERING 0
  • 开启 PHP 输出缓冲PHP_OUTPUT_BUFFERING 4096 + ob_start()
  • 屏蔽错误输出:避免 PHP 警告混入 JSON,破坏格式
  • 正确路由重写try_files 适配 WordPress 伪静态

全程按此教程执行,100% 解决问题,稳定运行

本文首发于 58Linux技术博客,专注Ubuntu桌面使用、Linux服务器运维与网站搭建实战。

将本页面加入收藏夹

      如果觉得本文对您有用。建议按下 Ctrl+D (Windows) 或 Cmd+D (Mac) 收藏本页,以便在下次需要时快速查阅解决方案。

发表评论

粤ICP备10052831号 | © 2026 58Linux 技术笔记. All Rights Reserved. | 联系我们 | 关于本站
本站内容开放共享,仅供学习交流 | 专注 Ubuntu & Linux 实战教程
Built with GeneratePress