Поиск по сайту:

Как установить стек LOMP (OpenLiteSpeed, MySQL и PHP) в Ubuntu 24.04


Это руководство существует для этих версий ОС.

  • Ubuntu 24.04 (Noble Numbat)
  • Ubuntu 22.04 (медуза-джемми)
  • Ubuntu 20.04 (фокусная ямка)
  • Ubuntu 18.04 (Бионический бобр)

На этой странице

  1. Предварительные условия
  2. Шаг 1. Настройка брандмауэра
  3. Шаг 2 — Установите OpenLiteSpeed

    1. Создайте пароль администратора
  4. Шаг 3 — Установите MySQL
  5. Шаг 4. Установите PHP
  6. Шаг 5 — Настройка MySQL
  7. Шаг 6. Настройте OpenLiteSpeed

    1. Переключите HTTP-порт обратно на 80.
  8. Шаг 7. Настройте PHP

    1. Перезапустить PHP
  9. Шаг 8 — Создайте виртуальный хост
  10. Шаг 9 — Установите SSL
  11. Шаг 10 — Тестовый сайт
  12. Заключение

OpenLiteSpeed — это облегченная версия сервера LiteSpeed с открытым исходным кодом, разработанная LiteSpeed Technologies. Он поддерживает правила Apache Rewrite, протоколы HTTP/2 и HTTP/3, а также TLS v1.3 и QUIC. Он поставляется с панелью администрирования на основе веб-интерфейса, что отличает его от других серверов и упрощает управление.

Стек LOMP — это аббревиатура Linux, OpenLiteSpeed, MySQL/MariaDB и PHP. Серверы Litespeed известны своей скоростью, особенно с PHP, который интегрируется с помощью интерфейса программирования приложений сервера LiteSpeed (LSAPI). Интерпретатор LiteSpeed PHP (LSPHP) обслуживает динамические страницы PHP через LSAPI.

Из этого туториала вы узнаете, как установить сервер OpenLiteSpeed в Ubuntu 24.04.

Предварительные условия

    Сервер под управлением Ubuntu 24.04.

    Пользователь без полномочий root с привилегиями sudo.

    Полное доменное имя (FQDN), например example.com, указывающее на сервер.

    Убедитесь, что все обновлено.

    $ sudo apt update
    $ sudo apt upgrade
    

    Несколько пакетов, которые нужны вашей системе.

    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
    

    Некоторые из этих пакетов могут уже быть установлены в вашей системе.

Шаг 1. Настройка брандмауэра

Первым шагом является настройка брандмауэра. По умолчанию Debian поставляется с ufw (несложным межсетевым экраном).

Проверьте, работает ли брандмауэр.

$ sudo ufw status

Вы получите следующий результат.

Status: inactive

Разрешите порт SSH, чтобы брандмауэр не разрывал текущее соединение при его включении.

$ sudo ufw allow OpenSSH

Также разрешите порты HTTP и HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Открытые порты, связанные с Openlitespeed.

$ sudo ufw allow 7080/tcp

Включить брандмауэр

$ sudo ufw enable
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup

Проверьте состояние брандмауэра еще раз.

$ sudo ufw status

Вы должны увидеть аналогичный результат.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
7080/tcp                   ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)
7080/tcp (v6)              ALLOW       Anywhere (v6)

Шаг 2 — Установите OpenLiteSpeed

Мы установим OpenLiteSpeed путем компиляции из исходного кода. Загрузите файл исходного кода OpenLiteSpeed. Вы можете получить ссылку на последний файл исходного кода на официальной странице загрузок OpenLiteSpeed. Версия 1.7.19 является текущей доступной стабильной версией.

$ wget https://openlitespeed.org/packages/openlitespeed-1.7.19.src.tgz

Извлеките файл.

$ tar -zxf openlitespeed-*.tgz

Перейдите в извлеченный каталог.

$ cd openlitespeed-1.7.19

Соберите серверный пакет.

$ sudo ./build.sh

Возможно, вам придется подождать около 5-10 минут, чтобы процесс завершился. Игнорируйте любые предупреждения, которые вы получаете во время процесса. Когда он будет завершен, вы получите следующий вывод.

...............
[100%] Linking CXX shared library modpagespeed.so
/usr/bin/ld: warning: 140.x25519-asm-x86_64.o.o: missing .note.GNU-stack section implies executable stack
/usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker
[100%] Built target modpagespeed
Start to pack files.
-e Building finished, please run ./install.sh for installation.
-e You may want to update the ols.conf to change the settings before installation.
-e Enjoy.

После завершения процесса откройте файл ols.conf для редактирования.

$ sudo nano ols.conf

Отредактируйте файл, как показано ниже.

#If you want to change the default values, please update this file.
#

SERVERROOT=/usr/local/lsws
OPENLSWS_USER=nobody
OPENLSWS_GROUP=nobody
OPENLSWS_ADMIN=navjot
[email 
OPENLSWS_ADMINSSL=yes
OPENLSWS_ADMINPORT=7080
USE_LSPHP7=yes
DEFAULT_TMP_DIR=/tmp/lshttpd
PID_FILE=/tmp/lshttpd/lshttpd.pid
OPENLSWS_EXAMPLEPORT=8088

#You can set password here
#OPENLSWS_PASSWORD=

Не добавляйте сюда свой пароль. Мы установим пароль позже, используя командную строку. Закончив, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Теперь, когда OpenLiteSpeed собран, давайте установим его.

$ sudo ./install.sh

Сценарий установщика устанавливает и включает службу lsws для сервера. По завершении вы получите следующий вывод.

Updating webcache manager, please waiting ...
Downloading latest shared code tar file...
Checking tar file md5...
Removing existing shared code directory...
Extracting downloaded shared code...
Removing local shared code tar file...
Updating lscmctl script...
Done!

-e Installation finished, Enjoy!

-e Your webAdmin password is kXjWTl5j, written to file /usr/local/lsws/adminpasswd.

Запустите сервер OpenLiteSpeed.

$ sudo systemctl start lsws

Проверьте статус услуги.

$ sudo systemctl status lsws
? lshttpd.service - OpenLiteSpeed HTTP Server
     Loaded: loaded (/usr/lib/systemd/system/lshttpd.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-06-02 12:58:44 UTC; 3s ago
    Process: 52583 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS)
   Main PID: 52604 (litespeed)
     CGroup: /system.slice/lshttpd.service
             ??52604 "openlitespeed (lshttpd - main)"
             ??52610 "openlitespeed (lscgid)"
             ??52623 "openlitespeed (lshttpd - #01)"
             ??52624 lsphp

Jun 02 12:58:42 lompserver systemd[1]: Starting lshttpd.service - OpenLiteSpeed HTTP Server...
Jun 02 12:58:42 lompserver lswsctrl[52583]: [OK] litespeed: pid=52604.
Jun 02 12:58:44 lompserver systemd[1]: Started lshttpd.service - OpenLiteSpeed HTTP Server.

Проверьте версию установленного сервера.

$ /usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.19 Open (BUILD built: Tue Apr 16 15:14:26 UTC 2024) 
        module versions:
        lsquic 3.3.2
        modgzip 1.1
        cache 1.66
        mod_security 1.4 (with libmodsecurity v3.0.12)

Создайте пароль администратора

Вы можете использовать пароль администратора, указанный в процессе установки. Однако вам следует создать свой собственный, сбросив его. Запустите скрипт сброса пароля.

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

Вы получите следующий результат. Выберите свое имя пользователя и установите надежный пароль.

Please specify the user name of administrator.
This is the user name required to login the administration Web interface.

User name [admin]: navjot

Please specify the administrator's password.
This is the password required to login the administration Web interface.

Password: 
Retype password: 
Administrator's username/password is updated successfully!

Теперь вы можете использовать новый пароль администратора.

Откройте http://:7080, чтобы получить доступ к панели администрирования OpenLiteSpeed. При первом входе в систему ваш браузер предупредит, что ваше соединение не является частным. Нажмите «Дополнительно» и нажмите «Принять риск и продолжить» (в случае Firefox) или «Перейти к <ВАШСЕРВЕРИП>(небезопасно)» (в случае браузера на основе Chromium). Вы больше не увидите предупреждение.

Вы должны увидеть страницу входа.

Введите учетные данные, которые вы указали ранее, и нажмите кнопку Войти, чтобы продолжить.

Вы получите следующий экран.

Шаг 3 — Установите MySQL

Прежде чем продолжить установку MySQL, нам необходимо обновить репозиторий LiteSpeed. Репозиторий Litespeed, добавленный через установщик, работает некорректно.

Откройте файл /etc/apt/sources.list.d/lst_debian_repo.list для редактирования.

$ sudo nano /etc/apt/sources.list.d/lst_debian_repo.list

Измените содержимое файла, добавив название выпуска Ubuntu 24.04 (noble) к URL-адресу репозитория.

deb http://rpms.litespeedtech.com/debian/ noble main

Закончив, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Установите сервер MySQL.

$ sudo apt install mysql-server

Служба MySQL автоматически запускается и работает после установки.

Проверьте статус услуги.

$ sudo systemctl status mysql

Вы получите следующий результат.

? mysql.service - MySQL Community Server
     Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled)
     Active: active (running) since Sun 2024-06-02 13:42:12 UTC; 8min ago
    Process: 57889 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
   Main PID: 57898 (mysqld)
     Status: "Server is operational"
      Tasks: 37 (limit: 2263)
     Memory: 370.6M (peak: 386.9M)
        CPU: 6.762s
     CGroup: /system.slice/mysql.service
             ??57898 /usr/sbin/mysqld

Jun 02 13:42:11 lompserver systemd[1]: Starting mysql.service - MySQL Community Server...

Запустите сценарий безопасности MySQL.

$ sudo mysql_secure_installation

Вам будет предложено установить Компонент проверки пароля. Нажмите Y, чтобы продолжить.

Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?

Press y|Y for Yes, any other key for No: y

Далее вам будет предложено выбрать надежность пароля. Выберите 2 для параметра Strong и продолжайте.

There are three levels of password validation policy:

LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2

При установке MySQL не потребуется устанавливать пароль root, поскольку тип аутентификации по умолчанию — auth_socket, который зависит от аутентификации вашей системы Linux. Однако вы можете изменить его позже.

Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.

Далее вам будут заданы определенные вопросы по улучшению безопасности MySQL. Введите Y, чтобы удалить анонимных пользователей, запретить удаленный вход в систему root, удалить тестовую базу данных и перезагрузить таблицы привилегий.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : y   
Success.


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? (Press y|Y for Yes, any other key for No) : y
Success.

By default, MySQL 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? (Press y|Y for Yes, any other key for No) : y
 - Dropping test database...
Success.

 - Removing privileges on test database...
Success.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.

All done!

Вы можете войти в оболочку MySQL, набрав sudo mysql в командной строке.

Шаг 4. Установите PHP

Поскольку мы собирали наш пакет из исходного кода, он компилирует и собирает старую версию PHP, которую не рекомендуется использовать. Вы можете проверить это с помощью следующей команды.

$ /usr/local/lsws/fcgi-bin/lsphp -v
PHP 5.6.40 (litespeed) (built: May 10 2023 23:03:31)
Copyright (c) 1997-2016 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies

Поэтому нам необходимо собрать и установить последнюю версию PHP. Но прежде чем продолжить, нам нужно установить инструменты сборки.

$ sudo apt install build-essential autoconf libtool bison re2c pkg-config

Следующим шагом является установка пакетов, необходимых для процесса сборки PHP.

$ sudo apt install libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libonig-dev libzip-dev libmemcached-dev libreadline-dev libgmp-dev libpng-dev libjpeg-dev libwebp-dev libxpm-dev libicu-dev libfreetype6-dev libxslt-dev libldb-dev libtidy-dev libvips-dev libsodium-dev libavif-dev libldap2-dev libxml2-dev libkrb5-dev libc-client2007e-dev libpq-dev libargon2-1 libargon2-dev libbz2-dev libffi-dev libc-client-dev libpspell-dev flex libgmp3-dev libmcrypt-dev libmhash-dev freetds-dev libmysqlclient-dev libncurses5-dev libpcre3-dev libaspell-dev librecode-dev libsnmp-dev

Затем загрузите исходный код PHP. Мы загрузим версию PHP 8.3.7, которая является последней доступной на момент написания статьи.

$ cd ~
$ wget https://www.php.net/distributions/php-8.3.7.tar.gz

Извлеките файлы.

$ tar -xzf php-8.3.7.tar.gz

Перейдите в загруженный каталог.

$ cd php-8.3.7

Затем запустите сценарий настройки со следующими параметрами. Опция --enable-litespeed обязательна.

$ sudo ./configure --prefix=/usr/local/lsws/lsphp83 --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd --enable-intl --enable-mbregex --enable-mbstring --enable-mysqlnd --enable-opcache --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --with-avif --with-curl --with-ffi --with-freetype --with-gettext --with-gmp --with-imap --with-imap-ssl --with-jpeg --with-kerberos --with-libxml --with-ldap  --with-mysqli --with-mysql-sock=/run/mysqld/mysqld.sock --with-openssl --with-password-argon2 --with-pdo-mysql=mysqlnd --with-pdo-pgsql=/usr/bin/pg_config --with-pear --with-pspell --with-readline --with-sodium --with-tidy --with-webp --with-xpm --with-xsl --with-zip --with-zlib --enable-litespeed

После завершения сценария вы должны получить следующий вывод.

+--------------------------------------------------------------------+
| License:                                                           |
| This software is subject to the PHP License, available in this     |
| distribution in the file LICENSE. By continuing this installation  |
| process, you are bound by the terms of this license agreement.     |
| If you do not agree with the terms of this license, you must abort |
| the installation process at this point.                            |
+--------------------------------------------------------------------+

Thank you for using PHP.

Скомпилируйте исходный код.

$ sudo make -j $(nproc)

После завершения вы получите аналогичный результат.

Generating phar.php
Generating phar.phar
PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled.
directorytreeiterator.inc
phar.inc
invertedregexiterator.inc
directorygraphiterator.inc
pharcommand.inc
clicommand.inc

Build complete.
Don't forget to run 'make test'.

Когда вы закончите, выполните следующую команду, чтобы попытаться проверить версию.

$ ./sapi/litespeed/php -v
PHP 8.3.7 (litespeed) (built: Jun  3 2024 05:28:43)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies

Установите PHP.

$ sudo make install

Вы получите следующий результат.

Installing shared extensions:     /usr/local/lsws/lsphp83/lib/php/extensions/no-debug-non-zts-20230831/
Installing PHP CLI binary:        /usr/local/lsws/lsphp83/bin/
Installing PHP CLI man page:      /usr/local/lsws/lsphp83/php/man/man1/
Installing PHP LiteSpeed binary:  /usr/local/lsws/lsphp83/bin/
Installing phpdbg binary:         /usr/local/lsws/lsphp83/bin/
Installing phpdbg man page:       /usr/local/lsws/lsphp83/php/man/man1/
Installing PHP CGI binary:        /usr/local/lsws/lsphp83/bin/
Installing PHP CGI man page:      /usr/local/lsws/lsphp83/php/man/man1/
Installing build environment:     /usr/local/lsws/lsphp83/lib/php/build/
Installing header files:          /usr/local/lsws/lsphp83/include/php/
Installing helper programs:       /usr/local/lsws/lsphp83/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/lsws/lsphp83/php/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/lsws/lsphp83/lib/php/
[PEAR] Archive_Tar    - installed: 1.4.14
[PEAR] Console_Getopt - installed: 1.4.3
[PEAR] Structures_Graph- installed: 1.1.1
[PEAR] XML_Util       - installed: 1.4.5
warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.14 is not the recommended version 1.4.4
[PEAR] PEAR           - installed: 1.10.15
Wrote PEAR system config file at: /usr/local/lsws/lsphp83/etc/pear.conf
You may want to add: /usr/local/lsws/lsphp83/lib/php to your php.ini include_path
Installing PDO headers:           /usr/local/lsws/lsphp83/include/php/ext/pdo/

Проверьте установку PHP. В каталоге /usr/local/lsws/lsphp83/bin доступны два двоичных файла PHP. Один из них — обычный php, который представляет собой версию для командной строки, а другой — версию Litespeed lsphp. Второй — тот, который мы будем использовать.

$ /usr/local/lsws/lsphp83/bin/lsphp -v
PHP 8.3.7 (litespeed) (built: Jun  3 2024 05:28:43)
Copyright (c) The PHP Group
Zend Engine v4.3.7, Copyright (c) Zend Technologies

Вы можете проверить список включенных модулей PHP.

$ /usr/local/lsws/lsphp83/bin/php --modules
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
exif
FFI
fileinfo
filter
ftp
gd
gettext
gmp
hash
iconv
imap
intl
json
ldap
libxml
mbstring
mysqli
mysqlnd
openssl
pcre
PDO
pdo_mysql
pdo_pgsql
pdo_sqlite
Phar
posix
pspell
random
readline
Reflection
session
shmop
SimpleXML
soap
sockets
sodium
SPL
sqlite3
standard
sysvsem
sysvshm
tidy
tokenizer
xml
xmlreader
xmlwriter
xsl
zip
zlib

[Zend Modules]

Скопируйте php.ini-production из папки установки в папку /usr/local/lsws/lsphp83/lib.

$ sudo cp php.ini-production /usr/local/lsws/lsphp83/lib/php.ini

Позже мы настроим OpenLiteSpeed для работы с PHP.

Откройте php.ini для редактирования.

$ sudo nano /usr/local/lsws/lsphp83/lib/php.ini

Найдите переменную include_path и измените ее значение, как показано ниже.

$ ;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;

; UNIX: "/path1:/path2"
include_path = "/usr/local/lsws/lsphp83/lib/php"

Закончив, сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.

Шаг 5 — Настройка MySQL

Войдите в оболочку MySQL.

$ sudo mysql

Создайте тестовую базу данных. Замените testdb соответствующим именем базы данных по вашему выбору.

mysql> CREATE DATABASE testdb;

Создайте тестового пользователя. Замените testuser соответствующим именем пользователя. Замените Your_Password123 надежным паролем.

mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'Your_Password123';

Предоставьте пользователю все права доступа к базе данных.

mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';

Сбросить привилегии пользователя.

mysql> FLUSH PRIVILEGES;

Выйдите из оболочки MySQL.

mysql> exit

Шаг 6. Настройте OpenLiteSpeed

Переключите HTTP-порт обратно на 80.

Давайте изменим HTTP-порт по умолчанию на 80. Войдите в свою панель администрирования по адресу http://:7080, используя только что созданные учетные данные.

Посетите раздел Прослушиватели слева. Вы увидите прослушиватели по умолчанию с портом 8080.

Нажмите кнопку Просмотр, чтобы просмотреть подробную конфигурацию. На следующей странице в разделе Страница прослушивателя по умолчанию > Общие нажмите Значок редактирования и измените порт с 8080 на 80.

Нажмите «Сохранить» и перезагрузите сервер, нажав кнопку «Мягкий перезапуск».

Откройте URL-адрес http:// в своем браузере, и вы должны увидеть следующую страницу.

Шаг 7. Настройте PHP

На этом этапе нам нужно связать нашу копию PHP 8.3 с сервером.

Нажмите раздел Конфигурация сервера слева, а затем перейдите на вкладку Внешнее приложение. Вы увидите существующее приложение LiteSpeed для PHP. Мы внесем в него некоторые правки.

Нажмите кнопку Изменить, чтобы отредактировать приложение PHP.

Затем сопоставьте конфигурацию, как показано ниже. Все остальные поля оставьте пустыми.

Name: lsphp
Address: uds://tmp/lshttpd/lsphp.sock
Max Connections: 35
Environment: PHP_LSAPI_MAX_REQUESTS=500
             PHP_LSAPI_CHILDREN=35
             LSAPI_AVOID_FORK=200M
Initial Request Timeout (secs): 60
Retry Timeout : 0
Persistent Connection: Yes
Response Buffering: no
Start By Server: Yes(Through CGI Daemon)
Command: lsphp83/bin/lsphp
Back Log: 100
Instances: 1
Priority: 0
Memory Soft Limit (bytes): 2047M
Memory Hard Limit (bytes): 2047M
Process Soft Limit: 1400
Process Hard Limit: 1500

Нажмите «Сохранить», когда закончите.

Теперь, когда мы создали собственное приложение PHP 8.3, мы должны указать серверу, чтобы он начал его использовать. Поскольку мы отредактировали список по умолчанию, он уже настроен. Перезапустите сервер, нажав кнопку Мягкий перезапуск.

Чтобы проверить, правильно ли был переключен ваш PHP, посетите http:///phpinfo.php в своем браузере.

Перезапустить PHP

В OpenLiteSpeed, если вы отредактируете php.ini или установите новый модуль PHP, перезапуск сервера не отобразит изменения. Для этого вам нужно будет перезапустить процесс PHP. Сначала вам нужно будет найти идентификаторы процесса lsphp.

$ ps aux | grep lsphp
nobody    120093  0.0  0.8 123772 32920 ?        S    06:35   0:00 lsphp
nobody    120111  0.0  0.4 123772 18980 ?        Ss   06:38   0:00 lsphp
navjot    120139  0.0  0.0   6544  2304 pts/0    S+   06:44   0:00 grep --color=auto lsphp

Вручную завершите процессы lsphp.

$ sudo kill -9 120093
$ sudo kill -9 120111

Перезагрузите Сервер.

$ sudo systemctl restart lsws

Шаг 8 — Создайте виртуальный хост

Во-первых, нам нужно создать каталоги для нашего виртуального хоста.

$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p

В каталоге html будут храниться общедоступные файлы, а в каталоге logs — журналы сервера.

Затем откройте консоль администратора, откройте раздел Виртуальные хосты слева и нажмите кнопку «Добавить».

Заполните значения, как указано

Virtual Host Name: example.com
Virtual Host Root: $SERVER_ROOT/example.com/
Config File: $SERVER_ROOT/conf/vhosts/$VH_NAME/vhconf.conf
Follow Symbolic Link: Yes
Enable Scripts/ExtApps: Yes
Restrained: Yes
External App Set UID Mode: Server UID

Когда закончите, нажмите кнопку Сохранить. Вы получите следующую ошибку, поскольку файл конфигурации на данный момент не существует. Нажмите на ссылку, чтобы создать файл конфигурации.

Нажмите кнопку Сохранить еще раз, чтобы завершить создание виртуального хоста.

После создания виртуального хоста перейдите в Виртуальные хосты -> Выбрать виртуальный хост(example.com) -> Общие и измените конфигурацию, как указано.

Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes

По завершении нажмите кнопку Сохранить. Далее нам нужно настроить индексные файлы. Нажмите кнопку редактирования рядом с Индексные файлы под разделом Общие. Установите следующие параметры.

Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No

Нажмите «Сохранить», когда закончите. Далее нам нужно выбрать Файлы журнала. Перейдите в раздел Журнал, нажмите «Изменить» напротив Журнал виртуального хоста и введите следующие значения. Остальные настройки оставьте без изменений.

Use Server’s Log: Yes
File Name: $VH_ROOT/logs/error.log
Log Level: ERROR
Rolling Size (bytes): 10M
Keep Days: 30
Compress Archive: Not Set

Вы можете выбрать Уровень журнала как DEBUG, если вы находитесь на машине разработки.

Нажмите «Сохранить», а затем нажмите знак «плюс» в разделе Журнал доступа, чтобы добавить новую запись. Заполните следующие значения.

Log Control: Own Log File
File Name: $VH_ROOT/logs/access.log
Piped Logger: Not Set
Log Format: Not Set
Log Headers: Not Set
Rolling Size (bytes): 10M
Keep Days: 30
Compress Archive: Not Set
Bytes log: Not Set

Когда закончите, нажмите Сохранить. Далее нам нужно настроить Контроль доступа в разделе Безопасность. Установите следующие значения.

Allowed List: *
Denied List: Not set

Когда закончите, нажмите Сохранить. Далее нам нужно установить Определение обработчика скриптов. Нажмите знак «плюс» (+), чтобы добавить новое определение. Установите следующие значения.

Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp

Когда закончите, нажмите Сохранить. Далее нам нужно установить Rewrite Control в разделе Rewrite. Установите следующие значения.

Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set

Когда закончите, нажмите Сохранить. И, наконец, нам нужно настроить слушателей. Перейдите в раздел Прослушиватели и нажмите кнопку Просмотр напротив Прослушиватель по умолчанию. Затем нажмите кнопку «Добавить» напротив Сопоставления виртуальных хостов, чтобы добавить новое сопоставление, и установите следующие значения.

Virtual Host: example.com
Domains: example.com

Когда закончите, нажмите Сохранить. Теперь нажмите кнопку Мягкий перезапуск, чтобы применить все указанные выше изменения и перезапустить сервер.

Шаг 9 — Установите SSL

Для настройки SSL в OpenLiteSpeed нам необходимо настроить два сертификата. Самозаверяющий сертификат для всего сервера и сервера Let's Encrypt для конкретного сайта.

Панель администрирования уже поставляется с предустановленным самозаверяющим сертификатом, который доступен в каталоге /usr/local/lsws/admin/conf.

Давайте сначала создадим самоподписанный сертификат для всего сервера.

$ cd ~
$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes

Вы получите аналогичный результат.

-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:example.com
Email Address []:[email 

Вы можете нажать Enter во всех полях и оставить их пустыми. Введите свой домен в качестве общего имени и адрес электронной почты.

Создайте каталог для самозаверяющих сертификатов.

$ sudo mkdir /usr/local/lsws/certs

Скопируйте сертификат в каталог /usr/local/lsws/certs.

$ sudo mv *.pem /usr/local/lsws/certs

Нам нужно установить Certbot для создания бесплатных сертификатов SSL, предлагаемых Let's Encrypt.

Вы можете либо установить Certbot, используя репозиторий Debian, либо получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd. Ubuntu 24.04 поставляется с предустановленным Snapd.

Выполните следующие команды, чтобы убедиться, что ваша версия Snapd обновлена.

$ sudo snap install core
$ sudo snap refresh core

Введите следующую команду, чтобы установить Certbot.

$ sudo snap install --classic certbot

Используйте следующую команду, чтобы гарантировать возможность запуска команды Certbot, создав символическую ссылку на каталог /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Проверьте установку.

$ certbot --version
certbot 2.10.0

Выполните следующую команду, чтобы создать сертификат SSL.

Получите SSL-сертификат. В качестве корневого веб-каталога устанавливается общедоступный каталог HTML, настроенный ранее.

$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email  -d example.com

Создайте сертификат группы Диффи-Хеллмана.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Проверьте службу планировщика обновления Certbot.

$ sudo systemctl list-timers

Вы найдете snap.certbot.renew.service как одну из запланированных к запуску служб.

NEXT                           LEFT LAST                              PASSED UNIT                      ACTIVATES                       
Mon 2024-06-03 07:20:00 UTC    5min Mon 2024-06-03 07:10:02 UTC 4min 11s ago sysstat-collect.timer     sysstat-collect.service
Mon 2024-06-03 08:29:00 UTC    1h 14min -                                  - snap.certbot.renew.timer  snap.certbot.renew.service
Mon 2024-06-03 08:50:32 UTC    1h 36min Mon 2024-06-03 07:04:04 UTC    10min ago fwupd-refresh.timer   fwupd-refresh.service

Чтобы проверить, работает ли продление SSL, выполните пробный запуск процесса.

$ sudo certbot renew --dry-run

Если вы не видите ошибок, все готово. Ваш сертификат будет продлен автоматически.

Теперь откройте консоль администратора, выберите Прослушиватели >> Добавить новый прослушиватель и добавьте следующие значения.

Listener Name: SSL
IP Address: ANY IPv4
Port: 443
Secure: Yes

Когда закончите, нажмите Сохранить. Затем перейдите в раздел Сопоставление виртуальных хостов в разделе «Прослушиватель SSL», щелкнув SSL, нажав кнопку «Добавить» и заполнив следующие значения.

Virtual Host: example.com
Domains: example.com

Когда закончите, нажмите Сохранить. Затем перейдите в раздел Прослушиватели >> Прослушиватель SSL >> Вкладка SSL >>Частный ключ и сертификат SSL (кнопка «Изменить») и введите следующие значения для самозаверяющего сертификата, который мы создали ранее.

Private Key File: $SERVER_ROOT/certs/key.pem
Certificate File: $SERVER_ROOT/certs/cert.pem
Chained Certificate: Yes

Когда закончите, нажмите Сохранить. Затем перейдите в Прослушиватели >> Прослушиватель SSL >> Вкладка SSL >> Протокол SSL (кнопка Изменить) и введите следующие значения для протокола SSL и сведений о шифре.

Protocol Version: TLS v1.2 TLS v1.3
Ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
Enable ECDH Key Exchange: Yes
Enable DH Key Exchange: Yes
DH Parameter: /etc/ssl/certs/dhparam.pem

Когда закончите, нажмите Сохранить. Затем перейдите в Виртуальные хосты >> example.com >> Вкладка SSL >> Закрытый ключ и сертификат SSL (кнопка «Изменить») и заполните следующие значения сертификатом Let's Encrypt.

Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes

Когда закончите, нажмите Сохранить. Затем перейдите в раздел Виртуальные хосты >> example.com >> Вкладка SSL >> Сшивание OCSP (кнопка «Изменить») и заполните следующие значения, чтобы включить сшивание OCSP.

Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org

Когда закончите, нажмите Сохранить. Затем перейдите в раздел Виртуальные хосты >> example.com >> вкладка SSL >> Безопасность (кнопка «Изменить») и введите следующие значения, чтобы включить протокол HTTP3/QUIC.

ALPN: Enable HTTP/2 and HTTP/3
Enable HTTP3/QUIC: Yes

Нам не нужно включать другие параметры, поскольку они включены по умолчанию.

Когда закончите, нажмите Сохранить.

Перезагрузите сервер, нажав кнопку «Мягкий перезапуск».

Шаг 10 — Тестовый сайт

Создайте тестовый файл в каталоге html.

$ sudo nano /usr/local/lsws/example.com/html/index.php

Вставьте следующий код в редактор Nano.

<html>
<head>
    <h2>OpenLiteSpeed Server Install Test</h2>
</head>
    <body>
    <?php echo '<p>Hello,</p>';

    // Define PHP variables for the MySQL connection.
    $servername = "localhost";
    $username = "testuser";
    $password = "Your_Password123";

    // Create a MySQL connection.
    $conn = mysqli_connect($servername, $username, $password);

    // Report if the connection fails or is successful.
    if (!$conn) {
        exit('<p>Your connection has failed.<p>' .  mysqli_connect_error());
    }
    echo '<p>You have connected successfully.</p>';
    ?>
</body>
</html>

Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Откройте URL-адрес https://example.com в браузере, и вы увидите следующую страницу.

Тестовый полигон полностью функционален. Вы можете начать использовать сервер для обслуживания динамических веб-сайтов и приложений PHP.

Заключение

На этом завершается наше руководство по установке стека LOMP (OpenLiteSpeed, MySQL и PHP) на сервере Ubuntu 24.04. Если у вас есть вопросы, задавайте их в комментариях ниже.