前言(碎碎念)

我的 WordPress 程序一直跑在 LNMP 的环境中,虽说 Nginx 配合伪静态重写规则以及 wp super cache 插件的专家模式,直接返回缓存的 html 文件,优化得已经够快了。

但我其实一直很想试试 LiteSpeed Cache 插件的(WP Super Cache 插件的功能实在是少的可怜,可以说是简洁,但我都用 WP 这样臃肿的程序了,功能自然是越多越好)。不过这个插件的缓存功能依赖于 OpenLiteSpeed Web 服务端,NG 下根本无法使用 html 缓存功能。于是萌生了使用 OLS 作为 Web 服务端的想法。

尝试了使用宝塔面板安装 OpenLiteSpeed。但实际情况很糟糕。LS 是不与原生 PHP 兼容的,这点很重要。

所以,这次顺便尝试一下,脱离面板,100% 终端折腾一下。GUI 上点两下就好固然是方便的,但它没有掌控感——我怎么可能知道点了之后它具体到底都做了些什么。用久了之后,服务器看起来就像是个大黑箱了。

而且宝塔面板真跟个寄生虫似的,装上就自动打一堆依赖。隔壁 1Panel 倒是挺干净,软件目录一删就算没事了。不过1P 充其量其实只能算作个 Docker 管理面板,——我都用 Docker 了,所有服务都一拉一起就跑起来了,还需要面板做什么?

——况且如果不丢掉辅助轮,一个人是学不会骑自行车的。

所以我一直也挺想直接抛弃面板来着。现在这个机会正好。

本文环境:Ubuntu 24.04.3 Server。

本文默认你已经拥有一定 Linux 的操作基础,并对文件权限属性有基本的了解。

我们直接开始。

思路梳理

我们需要安装如下软件:OpenLiteSpeed(可能简称 LS/OLS)、MySQL、LSPHP、Redis,并在上面跑一个 WordPress。

其中,LSPHP 是包含有 LS API 的 PHP 的变体。包含了 PHP 的全部功能。要使用 LiteSpeed Cache 插件的话,需要使用 LSPHP。

安装所需软件

安装 OpenLiteSpeed 与 LSPHP

依照 OLS 官方文档进行:Installation | OpenLiteSpeed Documentation | OpenLiteSpeed Documentation

OpenLiteSpeed supports current and non-EOL versions of the following Linux distributions:

  • CentOS* 8, 9, 10
  • Debian 11, 12, 13
  • Ubuntu 22, 24, 26

我们选择从软件源安装。

安装 OLS 软件源:

sudo wget -O - https://repo.litespeed.sh | sudo bash
# 成功输出 LiteSpeed repository has been setup!

官方脚本,包安全的。

安装 OLS:

sudo apt-get -y install openlitespeed

接下来我们安装 LSPHP。查看可用的 LSPHP 包及拓展:

sudo apt-cache search lsphp

安装 LSPHP,同时指定一下我们需要的拓展。使用 apt list --installed | grep lsphp83 命令,发现 php83 php83-common php83-mysql php-opcache 这几个包已经自动安装。这里继续安装包含 Redis 在内的常用 WP 拓展:

sudo apt install openlitespeed lsphp83-intl lsphp83-redis lsphp83-imagick lsphp83-curl

查看已安装 php83 包列表确认一下:

root@akiubuntux:~# apt list --installed | grep lsphp83

WARNING: apt does not have a stable CLI interface. Use with caution in scripts.

lsphp83-common/noble,now 8.3.31-2+noble all [installed,automatic]
lsphp83-igbinary/noble,now 3.2.16-6+noble amd64 [installed,automatic]
lsphp83-imagick/noble,now 3.8.1-1+noble amd64 [installed]
lsphp83-intl/noble,now 8.3.31-2+noble amd64 [installed]
lsphp83-mysql/noble,now 8.3.31-2+noble amd64 [installed,automatic]
lsphp83-opcache/noble,now 8.3.31-2+noble amd64 [installed,automatic]
lsphp83-redis/noble,now 6.3.0-1+noble amd64 [installed]
lsphp83/noble,now 8.3.31-2+noble amd64 [installed,automatic]

设置一下 OLS WebAdmin 密码:

sudo /usr/local/lsws/admin/misc/admpass.sh
# 若设置成功则输出 Administrator's username/password is updated successfully!

我们访问 https://example.com:7080/ 进入 WebAdmin。

安装 MySQL

直接使用 apt 安装 MySQL:

apt-cache search mysql-server # 列出所有 MySQL 可用包
sudo apt-get install mysql-server-8.0 # 安装 MySQL 8.0

随后进行 MySQL 配置:

sudo mysql_secure_installation
  • 是否验证密码强度,输入 y,提高安全性
  • 询问强制的密码强度等级,输入 2 确认,也就是需要长度大于 8 位,包含数字、大小写、特殊符号的密码,且不能有常用单词
  • 是否删除匿名用户(anonymous user),输入 y,删除
  • 是否禁止 root 远程登录,y 禁止
  • y 移除 test database
  • Reload privilege tables now? 重载所有设置,输入 y

安装 Redis

通过 apt 安装:

sudo apt install redis-server -y # 安装 redis
redis-cli --version # 验证安装信息 - 输出 redis-cli 7.0.15
sudo systemctl status redis-server # 检查 redis 服务运行状态

确认软件自启动状态:

systemctl is-enabled lshttpd # OpenLiteSpeed
systemctl is-enabled mysql # MySQL
systemctl is-enabled redis-server # Redis

简略的配置调整

LSPHP 禁用函数

禁用一些危险且不会使用到的函数。我们打开 nano /usr/local/lsws/lsphp83/etc/php.ini php.ini。

官方文档中提到,LSPHP 安装在 /usr/local/lsws/lsphp83/bin/lsphp 目录,我们 cd /usr/local/lsws/lsphp83/etc/php/8.3/litespeed/nano php.ini 编辑 php.ini 文件,说实话还是 ftp 方便点,第 333 行左右有一个 disable_functions,我们修改一下:

disable_functions = passthru,exec,system,putenv,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv

以及 445 行左右 memory_limit,我习惯直接修改为 256M。还有 max_execution_time,我习惯改为 60。

重启 PHP:

sudo touch /usr/local/lsws/admin/tmp/.lsphp_restart.txt

LSPHP 的重启方式很奇怪,不过独立运行模式下的 LSPHP 的重启就是创建这样一个文件。

配置 OLS

添加监听器

打开“监听器”选项卡,创建监听器。例如添加一个 HTTPS 监听器,监听地址 ANY IPv4,启用加密连接。这样就可以监听到 443 IPv4 的流量了。

监听器自签证书

这一步主要是为了防止我们的 IP 被网络上的扫描器扫到导致 IP 泄露。可以找个自签证书生成工具,例如 在线生成自签名SSL证书。把证书文件上传到 /usr/local/lsws/conf/cert 目录。注意自签证书的 CN(通用名)与 SAN 不要填你真实的域名,不然白搭了。然后在监听器 SSL 设置中指定证书与私钥文件。

配置 WordPress 虚拟主机

创建并添加映射

OLS 中使用“虚拟主机”来管理网站。我们先创建一个目录用于存放站点文件,例如 sudo mkdir -p /usr/local/lsws/WordPress/html,然后在 OLS 面板中添加一个虚拟主机,配置如下:

  • 虚拟主机名:WordPress
  • 虚拟主机根目录:WordPress/
  • 配置文件:conf/vhosts/WordPress/vhconf.conf
  • 启用脚本/外部应用程序: - 指定在这个虚拟主机中是否允许运行脚本(非静态页面)。
  • 访问管制: - 指定是否可以通过此网站访问虚拟主机根目录($VH_ROOT)之外的文件。

tip:由于我们的 WP 包含动态文件,同时出于安全考虑,最后两个选项设置开启。(OLS 安装后会自动船舰一个脚本处理器定义关联 LSPHP。直接填写 WordPress/ 而非绝对路径的原因是 OLS 已支持相对路径)

点击保存,报错 file /usr/local/lsws/conf/vhosts/WordPress/vhconf.conf does not exist.,意为配置文件不存在。点击 CLICK TO CREATE 自动创建即可。然后保存。

然后切换到常规选项卡,文档根目录设置为 WordPress/html(注:这步很重要,不设置会导致访问 404)

零散的其它设置

接着转到重写页面,把启用重写和自动加载.htaccess打开。平滑重启 OLS 使配置生效。

然后回到监听器选项卡,添加一个虚拟主机映射,选择我们刚刚创建的 WordPress 虚拟主机,域名按实际情况填写即可。

上传文件并设置权限

下载 WordPress 源码并复制到目标目录:

cd /usr/local/lsws/WordPress
sudo wget "https://cn.wordpress.org/latest-zh_CN.zip"
sudo unzip latest-zh_CN.zip
sudo cp -R wordpress/* html/

如果提示 sudo: unzip: command not foundapt install unzip 安装一下 unzip 即可。复制完成后就可以删除刚刚产生的压缩包与 wordpress 文件夹了(强迫症这一块)

然后设置文件权限:

sudo chown -R lsadm:nogroup /usr/local/lsws/WordPress
sudo chown -R nobody:nogroup /usr/local/lsws/WordPress/html
sudo find /usr/local/lsws/WordPress/ -type d -exec chmod 700 {} +
sudo find /usr/local/lsws/WordPress/ -type f -exec chmod 600 {} +
sudo chmod 710 /usr/local/lsws/WordPress

注:部分 Linux 发行版需要将 nogroup 更改为 nobody。权限解释:

  • 将 /usr/local/lsws/WordPress 整个目录及其下所有文件、子目录的所有者改为 lsadm,组改为 nogroup
  • html 通常是 Web 服务器的文档根目录(存放上传的图片、静态文件、可能由 Web 写入的文件)。把所有权全交给 nogroup,使得 Web 服务器进程(若以 nogroup 用户运行)能够自由读写该目录下的内容。
  • 所有子目录只有其所有者能进入并操作,组(如 nogroup)和其他用户完全无法访问。这增强了目录安全性,防止他人浏览目录结构。
  • 所有文件仅允许其所有者读取和写入,组 nogroup 及其他人均不可读、不可写、不可执行。这样能保护配置文件、PHP 源码不被未授权读取。
  • 组 nogroup 只拥有执行权限(x),可以“经过”该目录访问内部已知路径的文件,但无法列出目录内容(无 r 权限),进一步防止目录信息泄露。

虚拟主机 SSL 设置

签一张你域名的 SSL 证书。这里不过多赘述,可以使用 certbot 等工具。部分 CF 用户可能需要下载 CF 提供的源服务器证书(如果 TLS/SSL 安全级别足够高)。

在上面监听器 SSL 相同目录,新建一个 .pem 与 .crt 文件,将证书内容粘贴进去。然后设置权限:

cd /usr/local/lsws/conf/cert
sudo chown lsadm:nogroup pyrzo.*
sudo chmod 640 pyrzo.*
# 这里以 pyrzo.pem 与 pyrzo.crt 举例,应当根据实际情况修改

然后回到 OLS 的虚拟主机设置,编辑 SSL 设置:

  • 私钥文件:conf/cert/pyrzo.pem
  • 证书文件:conf/cert/pyrzo.crt

伪静态设置

OLS 伪静态规则遵循 Apache 引擎规范,这里直接套用:

RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

创建数据库

我们还需要创建一个数据库供 WordPress 使用。由于APT 安装 MySQL 时,默认会为 MySQL 的 root 用户配置 auth_socket 插件,它允许操作系统当前的 root 用户无需密码就能以 MySQL root 账号登录。所以我们 SSH 终端中直接输入 mysql 即可进入 mysql 命令行操作。输入:

CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; # 创建数据库
CREATE USER 'wpuser'@'localhost' IDENTIFIED BY 'your_strong_password'; # 创建用户 wpuser
GRANT ALL PRIVILEGES ON wordpress.* TO 'wpuser'@'localhost'; # 授予 wpuser 操作 wordpress 数据库之权力
FLUSH PRIVILEGES; #刷新权限表使修改生效
EXIT; # 退出 MySQL 命令行

其中记得要把 'your_strong_password' 替换为你想设置的用户密码,由于我们上面设置过了 MySQL 的密码安全检查,所以这里的密码必须要达到带有特殊符号的那一档复杂程度。使用这些信息连接数据库:数据库名: wordpress用户名: wpuser密码: your_strong_password

安装 WP 并测试

安装 LiteSpeed Cache 插件,并且启用 Redis 缓存。可以看到 PageInsight 的得分确实高。

参考文章(踩坑)

OpenLiteSpeed 安装与建站配置 详细教程 - Liups233 - 本文总体思路参考,但本文更加适合 Ubuntu 宝宝体质。

Linux(以 Ubuntu 为例)用命令行搭建 WordPress 博客的完整步骤 - 星河赵 - 博客园

LiteSpeed如何设置自定义标头跨越访问 - 主机收藏夹

此作者没有提供个人介绍。
最后更新于 2026-06-18