如何在Ubuntu 22.04上安装Linux, OpenLiteSpeed, MariaDB, PHP (LOMP stack)

671 阅读17分钟

简介

LOMP栈是LinuxOpenLiteSpeedMariaDBPHP的首字母缩写。OpenLiteSpeed是LiteSpeed网络服务器的开源选项。LiteSpeed服务器以其快速的性能而闻名,特别是与他们的LiteSpeed服务器应用编程接口(LSAPI)整合良好的PHP等语言。LiteSpeed PHP(LSPHP)解释器的功能更快,通过其专有的LS-API提供动态PHP页面。该API与HTTP服务器集成,从而减少了服务器响应请求的总体时间。OpenLiteSpeed正在成为WordPressJoomla和其他提供动态内容的基于PHP的应用程序的优先选择。

在本教程中,你将建立一个运行在Ubuntu 22.04上的LOMP服务器。在撰写本文时,当前的版本是PHP 8.1、MariaDB 10.7和OpenLiteSpeed 1.7。

先决条件

在你开始本指南之前,你将需要以下条件。

  • 一台带有sudo非root用户的Ubuntu 22.04服务器,一个防火墙,以及至少1GB的内存。
  • 一个完全限定的域名(SSL配置需要,建议公共网站使用)。你可以在NamecheapFreenom或你选择的域名注册商处获得一个域名。
  • 为你的域名申请SSL证书和密钥。

第1步 - 安装OpenLiteSpeed

在这一步中,你将在将所需的软件包库导入你的服务器后安装OpenLiteSpeed网络服务器。如果这是你第一次在SSH会话中使用sudo ,你可能需要输入非root用户的密码。

首先,更新软件包管理器的缓存。

sudo apt update

然后,通过运行以下命令升级所需的软件包。

sudo apt upgrade -y

注意:如果提示要更新内核,请输入y 继续。如果提示重启,运行命令sudo reboot ,重新启动系统。

ApacheNginx不同,OpenLiteSpeed将其代码托管在自己的软件库中。用下面的命令将这个资源库添加到apt 软件包管理器的源列表中。

sudo wget -O - https://repo.litespeed.sh | sudo bash

wget 取出位于OpenLiteSpeed服务器上的远程仓库的shell脚本,并且 标志将文件内容打印到终端。 管道将该内容传递给一个新的bash shell,由 命令启动。这个bash终端执行从版本库获取的 文件(bash脚本)内容中提到的命令,并将版本库安装到本地APT版本库列表中。-O | sudo bash .sh

你会看到这样的输出。

Output
Redirecting 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的状态,来验证OpenLiteSpeed已经安装并正确工作。

sudo systemctl status lsws

systemctl status 命令获取由其关键字标识的服务的状态。OpenLiteSpeed网络服务器服务的关键词是lswssystemctl 命令可以启用或禁用服务的自动启动,以及手动启动或停止一个服务。

你将收到以下输出。

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网络服务器正在以其默认配置运行。你可能还不能访问基于GUI的管理面板和示例网站,因为防火墙阻止了这些端口的流量。

在你的OpenLiteSpeed网络服务器运行时,你可以更新防火墙并打开必要的端口,以允许用户访问网站。

第2步 - 更新防火墙

在这个步骤中,你将为你的服务器配置防火墙。你将允许通过TCP对基于GUI的管理面板和示例网站的选定端口进行通信,以及对HTTP和HTTPS网站的端口80443

OpenLiteSpeed服务器与服务器捆绑了一个基于GUI的管理面板和一个示例网站。管理面板是一个易于使用的界面,用于配置监听器、虚拟主机、SSL和监控日志。示例网站有一个CGI脚本、PHP脚本、错误页面和一个密码保护页面的样本。这个网站可以展示网络服务器的功能。

在默认配置中,基于GUI的管理面板监听端口为7080 ,而示例网站监听端口为8088 。你需要通过ufw 防火墙允许TCP流量到这些端口,以访问这些网站。

为了提供访问,运行以下命令。

sudo ufw allow 7080,80,443,8088/tcp

然后,检查防火墙规则的状态。

sudo ufw status

你的输出将看起来像这样。

Output
Status: 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

它应该像下面的屏幕截图一样出现。

Screencapture of the front page for the example website when viewed through port

你可以环顾这个例子网站,探索网络服务器所提供的功能。

要查看基于GUI的管理面板,请访问端口7080

http://your_server_ip:7080

在本教程的后面,你将使用OpenLiteSpeed GUI管理面板来配置你的网络服务器。

你现在已经在你的Ubuntu实例上设置了OpenLiteSpeed服务器,这将使你能够为各种基于不同后端语言和框架的Web应用程序提供服务。在下一步,你将设置LOMP栈的其他服务。

第3步 - 安装MariaDB

随着OpenLiteSpeed服务器在Linux上运行,你现在可以设置MariaDB数据库服务器。该数据库服务器将允许你在你的网站上存储、检索和管理数据。MariaDB是一个流行的数据库引擎,因为它提供了SQL和NoSQL功能,并且可以结合多种数据库引擎,如MyISAMInnoDB

用以下命令安装MariaDB服务器。

sudo apt install mariadb-server

当提示确认时,输入Y 来确认。

安装完成后,用以下命令完成初始服务器设置。

sudo mysql_secure_installation

默认安装没有根密码,所以你可以在提示时按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...

然后你会被提示enable socket authentication 。当被问及是否要Switch to unix_socket authentication ,输入Y

Output
Setting 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!

当下一个提示问你是否要set the root password ,键入Y ,并输入你喜欢的根密码两次。

Output
You 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!

下一个提示是问你是否愿意remove the anonymous users 。对这个提示回答:Y

Output
By 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!

除非你打算从其他服务器或你的本地机器上以根用户身份访问数据库,否则你还应该disallow root login remotely 。要禁用来自远程机器的根用户登录,请在该提示下回答Y

Output
Normally, 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 ,在下面的提示中输入remove the test database and related privileges

Output
By 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!

最后,你要确认reload the privilege tables ,这样上面所有的改变都会应用到服务器上。

Output
Reloading 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连接。由于数据库将被内部访问(在大多数情况下是在同一台服务器上),你将不会在防火墙中对外部流量开放这个端口。

接下来,你将安装PHP以便与OpenLiteSpeed一起使用。

第4步 - 安装特定版本的 PHP

OpenLiteSpeed web服务器捆绑了一个PHP版本,这可能不是最新的稳定版本的PHP。你可以使用预装的PHP版本,或者你可以安装一个特定的实例。在这一步中,你将检查你所安装的PHP的版本,如果有必要的话进行更新,并安装必要的软件包。

要知道你的OpenLiteSpeed服务器预装了哪个版本的PHP,请点击示例网站中测试PHP部分的按钮或访问以下网址。

http://your_server_ip:8088/phpinfo.php

PHP版本将显示在信息页面上。

要在 OpenLiteSpeed 网络服务器上安装特定版本的 PHP,请在 OpenLiteSpeed 官方网站的入门页面查看可用版本的列表及其兼容性。可用版本的列表显示在安装标题下的LiteSpeed Repository部分。

Screencapture displaying the LiteSpeed PHP Versions in the Documentation

你也可以用以下命令检查Ubuntu可用的LSPHP(LiteSpeed PHP)软件包。

sudo apt-cache search lsphp

从软件包列表中,你可以通过软件包名称的后缀来识别php 版本。你会看到一个像这样的软件包列表。

Output
...
lsphp81 - server-side, HTML-embedded scripting language (LSAPI binary)
...

在这个例子中。 lsphp81指出,这是 PHP v8.1,而 lsphp74则意味着 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服务器,请访问GUI控制面板,端口为7080

http://your_server_ip:7080

在你的终端中,用以下命令设置管理员账户凭证。

sudo /usr/local/lsws/admin/misc/admpass.sh

这些登录凭证将与您在先前步骤中设置的不同,而且它们将只对OpenLiteSpeed服务器的GUI管理面板起作用。

你将看到以下输出,它将提示你输入一个用户名和密码。

Output
Please 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,登录到管理面板(使用你刚刚设置的凭据),并浏览到服务器配置部分。然后,单击 "外部应用程序"选项卡。

你将会看到以下屏幕。

External App Screen of OpenLiteSpeed Server Configuration section

点击第一行LiteSpeed SAPI AppActions栏中的编辑按钮,这将打开一个名为lsphp的应用程序。滚动到命令字段,将其值改为 lsphp81/bin/lsphp(按照步骤4的命名惯例)。配置好这个值后,滚动到LiteSpeed SAPI App的标题,点击右边的保存按钮。

使用右上方的优雅重启按钮来重新启动Web服务器。在下面的屏幕截图中,"优雅重启"按钮在右上方突出显示。

Graceful Restart Button location

通过访问端口8088 的信息页面,验证服务器现在是否使用了指定的 PHP 版本。

http://your_server_ip:8088/phpinfo.php

该页面现在将显示指定的版本号。

在这一步中,你配置了管理面板的凭证并将其设置为使用所需的PHP版本。接下来,你将为你计划在此Web服务器上托管的不同网站设置虚拟主机。

第6步 - 设置一个虚拟主机

在这一步中,你将为你的Web服务器设置虚拟主机,并为所有到你网站的流量配置TLS加密。

虚拟主机允许你通过一台网络服务器为多个网站提供服务,这些网站由独特的主机名来识别。OpenLiteSpeed可以为多个虚拟主机提供服务,然后将这些虚拟主机映射到监听器;然后将监听器映射到特定的端口。OpenLiteSpeed允许虚拟主机拥有自定义的重定向规则,并且还可以为每个虚拟主机配置不同的PHP版本。虚拟主机可以被配置为作为其他网络服务器的反向代理连接,如Node.JS

还是在GUI管理面板中,导航到虚拟主机部分。在出现的表格的右上角,点击加号**(+**)按钮来添加一个新的虚拟主机。

然后,你可以添加一个你选择的虚拟主机名称,以设置虚拟主机根和虚拟主机的配置文件路径,使用变量,如$SERVER_ROOT (用于引用OpenLiteSpeed Web服务器的根目录)或$VH_ROOT (用于引用虚拟主机的根目录)。在启用脚本/ExtApps上点击**是,**以确保PHP在虚拟主机上工作。

在设置虚拟主机时,用你想要的值完成以下字段(下面显示的值是例子)。

  • 虚拟主机名称: MyWebsite
  • 虚拟主机根: $SERVER_ROOT/MyWebsite/html/
  • 配置文件: conf/vhosts/MyWebsite/vhconf.conf
  • 启用脚本/ExtApps: Yes
  • 限制的: Yes

你可以用你在LiteSpeed SAPI应用程序中创建的域名来代替 MyWebsite用你在先决条件中创建的域名代替。

注意:如果配置文件在指定的路径上不存在,你可能会收到一个错误。点击错误信息中提到的链接来自动创建文件。

Yes onEnable Scripts/ExtApps允许你在配置的外部应用程序部分指定一个自定义的 PHP 解释器版本。如果你不打算配置自定义的PHP版本,可以把它关掉。

Yes onRestrained防止用户访问除虚拟主机根目录中包含的目录以外的文件,即使符号链接指向虚拟主机根目录以外的文件。为了安全起见,请启用此功能。

Virtual Host Configuration

完成配置后,点击虚拟主机行右侧的 "保存"按钮。

管理面板可能会显示一个提示,要求执行优雅重启以应用对配置的更改。你可以在这一点上执行优雅重启,因为它不会影响配置步骤。你也可以在完成对监听器配置的修改后再执行优雅重启。

配置完虚拟主机后,你将配置监听器。导航到 "管理面板"的 "听众"部分。点击默认监听器,然后点击虚拟主机映射表右上角的加号(+)按钮。

从对应于虚拟主机的下拉菜单中,选择你在虚拟主机配置中分配的虚拟主机名称。在所示的例子中,选择的虚拟主机是MyWebsite

在域名的文本框中,输入完全合格的注册域名,你将用它来为你配置的虚拟主机服务。在下面的屏幕截图中,示例值被设置为 mywebsite.com,但是用你用于your_domain 的值来更新它。

Listener Configuration

注意:默认监听器被配置为监听端口8088 。用于HTTP流量的端口是80 ,如果启用了SSL/TLS加密,那么你的HTTPS网站将被期望在端口443 。你将需要在监听器配置地址设置中改变端口,以改变监听器监听的端口。

点击虚拟主机映射行右上方的 "保存"。

强烈建议你为你的网站启用TLS安全。在监听器的常规设置下,将安全选项更新为Yes ,并将提供HTTPS页面的监听器的端口从8088 改为443443 是HTTPS的默认端口。保存更新后的地址设置。

因为你在先决条件期间从一个证书机构生成了一个证书和密钥文件,你现在可以将它们添加到你的OpenLiteSpeed设置中。通过点击SSL私钥和证书行的编辑图标,在监听器配置的SSL部分添加证书和密钥文件路径。

如果你遵循先决条件中提到的指南,由Let's Encrypt生成的证书和密钥文件将在以下位置。

  • 私钥文件/etc/letsencrypt/live/your_domain.privkey.pem
  • 证书文件/etc/letsencrypt/live/your_domain.fullchain.pem

对于Let's Encrypt生成的证书,你必须将链式证书选项设置为Yes ,这是在OpenLiteSpeed上配置Let's Encrypt SSL的官方文档的建议。

监听器配置中SSL部分的TLS证书和密钥文件的配置样本如下所示(请确保更新文件路径以符合你的域名)。

TLS Configuration for Listener

如果你遇到任何问题,你可以在OpenLiteSpeed文档中查看为SSL配置OpenLiteSpeed的指南

在配置并保存这些设置后,点击屏幕右上角的优雅重启按钮以应用这些变化。

现在,你已经配置了一个带有监听器的虚拟主机,并为你网站的所有流量设置了TLS加密。在配置你的DNS以映射到你的服务器的公共IP地址后,你的网站将可以在你指定的域名上访问。

通过QUIC启用HTTP/3

注意:OpenLiteSpeed是首批将HTTP3协议纳入快速UDP互联网连接(QUIC)协议的开源服务器之一。

要启用HTTP3/QUIC,你必须为你的域名设置SSL,并通过管理面板配置证书和密钥。请返回步骤6了解方向。

如果你想使用HTTP3,你还必须允许UDP流量到你的服务器的端口443 。要做到这一点,请运行该命令。

sudo ufw allow 443/udp

总结

在本教程中,你建立了一个MariaDB数据库服务器和一个OpenLiteSpeed web服务器,能够为指定PHP版本的PHP应用程序提供服务。现在你可以在你的服务器上托管各种PHP应用程序和框架,如WordPressLaravelJoomla

如果你还没有,你可以在你的Web服务器上设置TLS安全,并启用HTTP/3 over QUIC,以最好地利用OpenLiteSpeed Web服务器。