原创性声明

此文章并非我原创。

原文地址 OpenLiteSpeed 安装与建站配置 详细教程 - Liups233

本文仅仅是在自己实践过程中产生的记录,由于 Debian 系系统与原文环境的些许操作方式并不一样,所以我自己做了些修改与补充。

若有侵权请联系删除。

思路梳理

我们需要安装如下软件: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 禁用函数

官方文档中提到,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 443 返回默认证书被网络上的扫描器扫到导致 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 文件,将证书内容粘贴进去。

然后回到 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 的得分确实高。

额外优化

配置真实 IP 请求头

我使用了 CDN,IP 需要从请求头中获取。OLS WebAdmin 里转了一圈,设置项简直不是给人读的,不过好在我们依然可以直接通过wp-config.php设置REMOTE_ADDR

拿取 X-Forwarded-For 列表中第一个 IP。虽说不加上信任 IP 防止 IP 伪造是不安全的,但是我需要用到REMOTE_ADDR的地方只有主题的评论 IP 地理位置显示罢了,伪造也没什么问题。其余服务使用 X-Real-IP 获取 IP 即可。

if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
{
    $list = explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
    $_SERVER['REMOTE_ADDR'] = $list[0];
}

不过我后来琢磨了一下,服务器配置 - 常规 - 使用报头中的客户端IP 就是从 XFF 头中取第一个值,效果是一样的(小声)——但请务必设置受信任 IP 列表,防止 XFF IP 伪造。CF 的 IP 段可以在这里查询IP Ranges | Cloudflare,其它 CDN 例如我使用的腾讯 EdgeOne 也有类似功能。在允许的 IP 后加 T 表示受信任。例如192.168.1.*T。

设置 crontab 任务

我们需要关闭 wp 自带的 corn 并使用系统 corntab 和 curl 来优化 corn 性能。(默认情况下,每次访问都会触发 wp-corn 并检查一遍过期任务,这是浪费性能的)

wp-config.php中, 添加下面的定义代码:

define('DISABLE_WP_CRON', true);

输入crontab -e,选择 1 使用 nano 编辑器,然后文件末尾加入:

*/15 * * * * curl --silent "https://www.pyrzo.com/wp-cron.php?doing_wp_cron" > /dev/null 2>&1

然后保存。这样 corn 任务就会每隔十五分钟执行一次了。记得把域名改为你自己的。wget 一样可以使用。

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