如何在 Ubuntu 22.04 上安装 Linux、OpenLiteSpeed、MariaDB、PHP(LOMP 堆栈)
作者选择了 Write for DOnations 计划。
介绍
LOMP 堆栈是 Joomla 和其他提供动态内容的基于 PHP 的应用程序的首字母缩写词。
在本教程中,您将设置一个在 Ubuntu 22.04 上运行的 LOMP 服务器。在撰写本文时,当前版本为 PHP 8.1、MariaDB 10.7 和 OpenLiteSpeed 1.7。
先决条件
在开始本指南之前,您需要具备以下条件:
- 一台 Ubuntu 22.04 服务器,具有 sudo 非根用户、防火墙和至少 1GB 内存,您可以按照 Ubuntu 22.04 初始服务器设置指南进行设置
- 一个完全限定的域名(SSL 配置需要并推荐用于公共网站)。您可以在 DNS Quickstart 上获取域名,将域名指向您的服务器。
- 您域的 SSL 证书和密钥。按照如何使用 Certbot 独立模式在 Ubuntu 22.04 上检索 Let's Encrypt SSL 证书获取您的域的证书密钥对。在第 2 步中,打开端口
80
和端口443
。
第 1 步 — 安装 OpenLiteSpeed
在此步骤中,您将在将所需的软件包存储库导入服务器后安装 OpenLiteSpeed Web 服务器。如果这是您第一次在 SSH 会话中使用 sudo
,您可能需要输入非 root 用户的密码。
首先更新包管理器缓存:
- sudo apt update
然后,通过运行以下命令升级所需的包:
- sudo apt upgrade -y
注意:如果提示更新内核,请键入 y
继续。如果提示重启,运行命令 sudo reboot
重启系统。
与 Nginx 不同,OpenLiteSpeed 将其代码托管在自己的存储库中。使用以下命令将此存储库添加到 apt
包管理器的源列表中:
- sudo wget -O - https://repo.litespeed.sh | sudo bash
wget
获取位于 OpenLiteSpeed 服务器上的远程存储库的 shell 脚本,-O
标志将文件的内容打印到终端。 |
管道将内容传递给一个新的 bash shell,由 sudo bash
命令启动。这个 bash 终端执行从存储库中获取的 .sh
文件(bash 脚本)的内容中提到的命令,并将存储库安装在本地 APT 存储库列表中。
你会看到这样的输出:
OutputRedirecting output to ‘wget-log’.
--2022-09-08 08:27:42-- http://rpms.litespeedtech.com/debian/lst_debian_repo.gpg
Resolving rpms.litespeedtech.com (rpms.litespeedtech.com)... 52.55.120.73
Connecting to rpms.litespeedtech.com (rpms.litespeedtech.com)|52.55.120.73|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1198 (1.2K) [application/octet-stream]
Saving to: ‘/etc/apt/trusted.gpg.d/lst_debian_repo.gpg’
/etc/apt/trusted.gpg.d/l 100%[==================================>] 1.17K --.-KB/s in 0s
2022-09-08 08:27:42 (139 MB/s) - ‘/etc/apt/trusted.gpg.d/lst_debian_repo.gpg’ saved [1198/1198]
--2022-09-08 08:27:42-- http://rpms.litespeedtech.com/debian/lst_repo.gpg
Resolving rpms.litespeedtech.com (rpms.litespeedtech.com)... 52.55.120.73
Connecting to rpms.litespeedtech.com (rpms.litespeedtech.com)|52.55.120.73|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 2336 (2.3K) [application/octet-stream]
Saving to: ‘/etc/apt/trusted.gpg.d/lst_repo.gpg’
/etc/apt/trusted.gpg.d/l 100%[==================================>] 2.28K --.-KB/s in 0s
2022-09-08 08:27:42 (226 MB/s) - ‘/etc/apt/trusted.gpg.d/lst_repo.gpg’ saved [2336/2336]
LiteSpeed repository has been setup!
更新存储库列表以确保新添加的存储库被 apt
包管理器扫描:
- sudo apt update
接下来,安装 openlitespeed
包:
- sudo apt install openlitespeed
如果出现提示,请输入您的密码,然后使用 Y
确认安装。
安装完成后,通过使用 service
命令检查其状态,验证 OpenLiteSpeed 是否已安装并正常工作:
- sudo systemctl status lsws
systemctl status
命令获取由其关键字标识的服务的状态。 OpenLiteSpeed Web 服务器服务的关键字是 lsws
。 systemctl
命令可以启用或禁用服务的自动启动以及手动启动或停止服务。
您将收到以下输出:
Output● lshttpd.service - OpenLiteSpeed HTTP Server
Loaded: loaded (/etc/systemd/system/lshttpd.service; enabled; vendor preset: enabled)
Active: active (running) since Wed 2022-03-16 08:59:09 UTC; 2min 26s ago
Process: 32997 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS)
Main PID: 33035 (litespeed)
CGroup: /system.slice/lshttpd.service
├─33035 openlitespeed (lshttpd - main)
├─33044 openlitespeed (lscgid)
└─33073 openlitespeed (lshttpd - #01)
您现在拥有一个以默认配置运行的 OpenLiteSpeed Web 服务器。您可能还无法访问基于 GUI 的管理面板和示例网站,因为防火墙会阻止这些端口的流量。
在您的 OpenLiteSpeed Web 服务器运行的情况下,您可以更新防火墙并打开必要的端口以允许用户访问该网站。
第 2 步 — 更新防火墙
在此步骤中,您将为服务器配置防火墙。您将允许通过 TCP 的流量流向基于 GUI 的管理面板和示例网站的选定端口,以及用于 HTTP 和 HTTPS 站点的端口 80
和 443
。
OpenLiteSpeed 服务器将基于 GUI 的管理面板和示例网站与服务器捆绑在一起。管理面板是一个易于使用的界面,用于配置监听器、虚拟主机、SSL 和监控日志。该示例网站具有示例 CGI 脚本、PHP 脚本、错误页面和受密码保护的页面。该网站可以演示网络服务器的功能。
基于 GUI 的管理面板在默认配置中侦听端口 7080
,而示例网站侦听端口 8088
。您需要允许通过 ufw
防火墙到这些端口的 TCP 流量才能访问这些站点。
要提供访问权限,请运行以下命令:
- sudo ufw allow 7080,80,443,8088/tcp
然后,检查防火墙规则的状态:
- sudo ufw status
您的输出将如下所示:
OutputStatus: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80,443,7080,8088/tcp ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80,443,7080,8088/tcp (v6) ALLOW Anywhere (v6)
您可以通过8088
端口查看示例网站:
http://your_server_ip:8088
它应该看起来像下面的屏幕截图:

您可以浏览示例网站以探索 Web 服务器提供的功能。
要查看基于 GUI 的管理面板,请访问端口 7080
:
http://your_server_ip:7080
在本教程的后面,您将使用 OpenLiteSpeed GUI 管理面板来配置您的 Web 服务器。
您现在已经在您的 Ubuntu 实例上设置了 OpenLiteSpeed 服务器,这将允许您为基于不同后端语言和框架的各种 Web 应用程序提供服务。在下一步中,您将设置 LOMP 堆栈的其他服务。
第 3 步 — 安装 MariaDB
使用在 Linux 上运行的 OpenLiteSpeed 服务器,您现在可以设置 MariaDB 数据库服务器。数据库服务器将允许您存储、检索和管理您网站上的数据。 MariaDB 是一种流行的数据库引擎,因为它提供 SQL 和 NoSQL 功能,并且可以合并多个数据库引擎,例如 InnoDB。
使用以下命令安装 MariaDB 服务器:
- sudo apt install mariadb-server
当提示确认时,键入 Y
进行确认。
安装完成后,使用以下命令完成初始服务器设置:
- sudo mysql_secure_installation
默认安装没有 root 密码,因此您可以在出现提示时按 Enter
。
安装设置后,您将收到如下输出:
Output
NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE! PLEASE READ EACH STEP CAREFULLY!
In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.
Enter current password for root (enter for none):
OK, successfully used password, moving on...
然后系统将提示您启用套接字身份验证
。当系统询问您是否要切换到 unix_socket 身份验证
时,键入 Y
:
OutputSetting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.
You already have your root account protected, so you can safely answer 'n'.
Switch to unix_socket authentication [Y/n] y
Enabled successfully!
Reloading privilege tables..
... Success!
当下一个提示询问您是否要设置 root 密码
时,键入 Y
并输入您首选的 root 密码两次:
OutputYou already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
... Success!
下一个提示询问您是否要删除匿名用户
。对此提示回答 Y
:
OutputBy default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them. This is intended only for testing, and to make the installation
go a bit smoother. You should remove them before moving into a
production environment.
Remove anonymous users? [Y/n] y
... Success!
除非您计划以 root 用户身份从其他服务器或本地计算机访问数据库,否则您还应该禁止 root 远程登录
。要禁用远程计算机的 root 登录,请对提示回答 Y
:
OutputNormally, root should only be allowed to connect from 'localhost'. This
ensures that someone cannot guess at the root password from the network.
Disallow root login remotely? [Y/n] y
... Success!
您还可以通过在以下提示中键入 Y
来删除测试数据库和相关权限
:
OutputBy default, MariaDB comes with a database named 'test' that anyone can
access. This is also intended only for testing, and should be removed
before moving into a production environment:
Remove test database and access to it? [Y/n] y
- Dropping test database...
... Success!
- Removing privileges on test database...
... Success!
最后,您将确认重新加载权限表
,以便将上述所有更改应用到服务器:
OutputReloading the privilege tables will ensure that all changes made so far
will take effect immediately.
Reload privilege tables now? [Y/n] y
... Success!
Cleaning up...
All done! If you've completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
您现在已经在 Ubuntu 实例上安装、配置并保护了 MariaDB 数据库服务器。数据库将在其默认配置中侦听端口 3306
上的 MySQL 连接。由于数据库将在内部访问(大多数情况下在同一台服务器上),您不会在防火墙中将此端口开放给外部流量。
接下来,您将安装用于 OpenLiteSpeed 的 PHP。
第 4 步 — 安装特定版本的 PHP
OpenLiteSpeed Web 服务器捆绑了一个 PHP 版本,它可能不是最新的 PHP 稳定版本。您可以使用预装的 PHP 版本,也可以安装特定实例。在此步骤中,您将检查 PHP 安装的版本,必要时更新它,并安装必需的包。
要了解您的 OpenLiteSpeed 服务器预装了哪个版本的 PHP,请单击示例网站的“测试 PHP”部分中的按钮或访问以下 URL:
http://your_server_ip:8088/phpinfo.php
PHP 版本将显示在信息页面上。
要在 OpenLiteSpeed Web 服务器上安装特定版本的 PHP,请在入门指南中检查可用版本列表及其兼容性

您还可以使用以下命令检查适用于 Ubuntu 的 LSPHP (LiteSpeed PHP) 包:
- sudo apt-cache search lsphp
从包列表中,您可以使用包名称的后缀识别 php
版本。你会看到一个像这样的包列表:
Output...
lsphp81 - server-side, HTML-embedded scripting language (LSAPI binary)
...
在此示例中,lsphp81
声明这是 PHP v8.1
,而 lsphp 74
表示 PHP v7.4
。
要安装特定的 lsphp
包,请使用以下命令(将 81
替换为您首选版本的后缀):
- sudo apt install lsphp81 lsphp81-{common,mysql}
键入 Y
以确认安装。
您只安装了 lsphp
包,但是您还没有配置 OpenLiteSpeed 来使用这个版本的 PHP。示例网站将继续显示默认的 PHP 版本,直到您将其配置为使用新版本。在下一步中,您将配置 OpenLiteSpeed 以使用此版本的 PHP。
第 5 步 — 配置 OpenLiteSpeed
在此步骤中,您将为 OpenLiteSpeed Web 服务器配置基于 GUI 的管理面板的凭据,并将 Web 服务器配置为使用您选择的 PHP 版本。
要配置 OpenLiteSpeed Web 服务器,请在端口 7080
访问 GUI 管理面板:
http://your_server_ip:7080
在您的终端中,使用以下命令设置管理员帐户凭据:
- sudo /usr/local/lsws/admin/misc/admpass.sh
这些登录凭据将与您在前面步骤中设置的不同,它们仅适用于 OpenLiteSpeed 服务器的 GUI 管理面板。
您将看到以下输出,提示您输入用户名和密码:
OutputPlease specify the user name of administrator.
This is the user name required to login the administration Web interface.
User name [admin]: sammy
Please specify the administrators password.
This is the password required to login the administration Web interface.
Password:
Retype password:
Administrators username/password is updated successfully!
设置凭据后,您可以将服务器配置为使用指定版本。
通过 http://your_server_ip:7080
,登录到管理面板(使用您刚刚设置的凭据)并导航到“服务器配置”部分。然后,单击外部应用程序选项卡。
您将看到以下屏幕:

单击 LiteSpeed SAPI App 第一行 Actions 列中的编辑按钮,这将打开一个名为 lsphp 的应用程序。滚动到 Command 字段以将其值更改为 lsphp81/bin/lsphp
(遵循步骤 4 中的命名约定)。配置此值后,滚动到 LiteSpeed SAPI App 标题并单击右侧的保存按钮。
使用右上角的 Graceful Restart 按钮重新启动 Web 服务器。 Graceful Restart 按钮在以下屏幕截图的右上角突出显示:

通过访问端口 8088
上的信息页面,验证您的服务器现在正在使用指定的 PHP 版本:
http://your_server_ip:8088/phpinfo.php
该页面现在将显示指定的版本号。
在此步骤中,您为管理面板配置了凭据并将其设置为使用所需的 PHP 版本。接下来,您将为计划在此 Web 服务器上托管的不同网站设置虚拟主机。
第 6 步 — 设置虚拟主机
在此步骤中,您将为您的 Web 服务器设置虚拟主机,并为您网站的所有流量配置 TLS 加密。
虚拟主机允许您通过单个网络服务器为多个网站提供服务,这些网站由唯一的主机名标识。 OpenLiteSpeed 可以服务于多个虚拟主机,然后映射到监听器;然后将侦听器映射到特定端口。 OpenLiteSpeed 允许 Virtual Hosts 自定义重定向规则,也可以为每个 Virtual Host 配置不同的 PHP 版本。可以将虚拟主机配置为充当其他 Web 服务器(例如 Node.JS)的反向代理连接。
仍然在 GUI 管理面板中,导航到虚拟主机部分。在出现的表格的右上角,单击加号 (+) 按钮以添加新的虚拟主机。
然后,您可以添加您选择的虚拟主机名称以设置虚拟主机根和虚拟主机配置文件的路径,使用诸如 $SERVER_ROOT
之类的变量(用于引用根目录OpenLiteSpeed Web 服务器的)或 $VH_ROOT
(用于引用虚拟主机的根目录)。在 Enable Scripts/ExtApps 上单击 Yes 以确保 PHP 在虚拟主机上运行。
设置虚拟主机时,请使用您想要的值填写以下字段(下面显示的值是示例):
- 虚拟主机名:
MyWebsite
- 虚拟主机根目录:
$SERVER_ROOT/MyWebsite/html/
- 配置文件:
conf/vhosts/MyWebsite/vhconf.conf
- 启用脚本/ExtApps:
是
- 约束:
是
您可以将 MyWebsite
替换为您在先决条件中创建的域名。
注意:如果指定路径中不存在配置文件,您可能会收到错误消息。单击错误消息中提到的链接以自动创建文件。
Yes
启用脚本/ExtApps 允许您在配置的外部应用程序部分指定自定义 PHP 解释器版本。如果您不打算配置自定义 PHP 版本,可以将其关闭。
Yes
on Restrained 阻止用户访问虚拟主机根目录以外的目录中的文件,即使符号链接指向虚拟主机根目录之外的文件也是如此。出于安全目的,请启用此功能。

完成配置后,单击虚拟主机行右侧的保存按钮。
管理面板可能会显示一条提示,提示您执行正常重启以将更改应用到配置。此时您可以执行平滑重启,因为它不会影响配置步骤。您也可以在完成对侦听器配置的更改后等待执行平滑重启。
配置虚拟主机后,您将配置监听器。导航到管理面板的侦听器部分。单击默认侦听器,然后单击虚拟主机映射表右上角的加号 (+) 按钮。
从与虚拟主机对应的下拉列表中,选择您在虚拟主机配置中分配的虚拟主机名。在所示示例中,所选的虚拟主机是 MyWebsite。
在域名文本框中,输入将用于为您配置的虚拟主机提供服务的完全限定和注册域名。在下面的屏幕截图中,示例值设置为 mywebsite.com
,但使用您用于 your_domain
的值更新它。

注意:默认侦听器配置为侦听端口 8088
。用于您网站的 HTTP 流量的端口是 80
,如果启用了 SSL/TLS 加密,那么您的 HTTPS 网站应该在端口 443
上侦听。您将需要更改侦听器配置的地址设置中的端口以更改侦听器侦听的端口。
单击虚拟主机映射行右上角的保存。
强烈建议您为网站启用 TLS 安全性。在侦听器的常规设置下,将安全选项更新为 Yes
,并将为 HTTPS 页面提供服务的侦听器的端口从 8088
更改为 443
. 443
是 HTTPS 的默认端口。保存更新的地址设置。
因为您在先决条件期间从证书颁发机构生成了证书和密钥文件,所以您现在可以将它们添加到您的 OpenLiteSpeed 设置中。通过单击 SSL 私钥和证书行中的编辑图标,在侦听器配置的 SSL 部分添加证书和密钥文件路径。
如果您按照先决条件中提到的指南进行操作,则 Let's Encrypt 生成的证书和密钥文件将位于以下位置:
- 私钥文件:
/etc/letsencrypt/live/your_domain.privkey.pem
- 证书文件:
/etc/letsencrypt/live/your_domain.fullchain.pem
对于 Let's Encrypt 生成的证书,您必须将 Chained Certificate 选项设置为 Yes
,正如官方文档所建议的那样,用于在 OpenLiteSpeed 上配置 Let's Encrypt SSL。
下面显示了侦听器配置的 SSL 部分中 TLS 证书和密钥文件的示例配置(确保更新文件路径以匹配您的域):

如果遇到任何问题,您可以查看 OpenLiteSpeed 文档中的为 SSL 配置 OpenLiteSpeed 的指南。
配置并保存这些设置后,单击屏幕右上角的 Graceful Restart 按钮应用更改。
您现在已经配置了一个带有监听器的虚拟主机,并为您网站的所有流量设置了 TLS 加密。配置 DNS 以映射到服务器的公共 IP 地址后,您的网站将可以在您指定的域中访问。
注意:OpenLiteSpeed 是首批通过快速 UDP 互联网连接 (QUIC) 协议整合 HTTP3 协议的开源服务器之一。
要启用 HTTP3/QUIC,您必须为您的域设置 SSL 并通过管理面板配置证书和密钥。返回步骤 6 获取指导。
如果您想使用 HTTP3,您还必须允许 UDP 流量到您服务器的端口 443
。为此,请运行以下命令:
- sudo ufw allow 443/udp
结论
在本教程中,您设置了一个 MariaDB 数据库服务器和一个 OpenLiteSpeed Web 服务器,能够为具有指定 PHP 版本的 PHP 应用程序提供服务。您现在可以在您的服务器上托管各种 PHP 应用程序和框架,例如 Joomla。
如果您还没有,您可以在您的 Web 服务器上设置 TLS 安全性并通过 QUIC 启用 HTTP/3 以充分利用 OpenLiteSpeed Web 服务器。查看在 OpenLiteSpeed 上设置 Let's Encrypt SSL 的指南,然后参阅本指南第 6 步中的启用 HTTP/3 over QUIC 部分。