Как установить стек LOMP OpenLiteSpeed, MySQL и PHP на Debian 12

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

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

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 debian-archive-keyring unzip -y

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

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

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

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 не поставляется в пакете для Debian 12. Поэтому мы будем собирать нашу копию из исходного кода.

Загрузите файл исходного кода OpenLiteSpeed. Ссылку на последнюю версию файла исходного кода вы можете получить на странице официальной загрузки OpenLiteSpeed.

wget https://openlitespeed.org/packages/openlitespeed-1.7.18.src.tgz

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

tar -zxf openlitespeed-*.tgz

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

cd openlitespeed-1.7.18

Создайте серверный пакет.

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 protected]
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
* lsws.service - LSB: lshttpd Loaded: loaded (/etc/init.d/lsws; generated) Active: active (running) since Wed 2023-09-27 15:55:13 UTC; 4h 18min ago Docs: man:systemd-sysv-generator(8) Tasks: 4 (limit: 4652) Memory: 79.2M CPU: 37.823s CGroup: /system.slice/lsws.service ??64164 "openlitespeed (lshttpd - main)" ??64171 "openlitespeed (lscgid)" ??64184 "openlitespeed (lshttpd - #01)" ??64185 "openlitespeed (lshttpd - #02)"
Sep 27 15:55:11 lomp systemd[1]: Starting lsws.service - LSB: lshttpd...
Sep 27 15:55:13 lomp systemd[1]: Started lsws.service - LSB: lshttpd.

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

/usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.18 Open (BUILD built: Tue Aug 29 12:59:39 UTC 2023) module versions: lsquic 3.2.0 modgzip 1.1 cache 1.64 mod_security 1.4 (with libmodsecurity v3.0.9)

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

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

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://<YOURSERVERIP>:7080 для доступа к административной панели OpenLiteSpeed. При первом входе в систему браузер выдаст предупреждение о том, что ваше соединение не является приватным. Выберите пункт «Дополнительно» и нажмите кнопку «Принять риск и продолжить» (в случае Firefox) или «Перейти к <YOURSERVERIP>(unsafe) « (в случае браузера на базе Chromium). Вы больше не увидите предупреждения. Вы должны увидеть страницу входа в систему.

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

Шаг 3 – Установка MariaDB

Debian больше не поставляется с сервером MySQL Поэтому мы будем использовать замену MySQLMariaDB Но прежде чем приступить к работе, необходимо обновить репозиторий LiteSpeed. Репозиторий Litespeed, добавленный через программу установки, работает некорректно. Откройте файл /etc/apt/sources.list.d/lst_debian_repo.list для редактирования.
sudo nano /etc/apt/sources.list.d/lst_debian_repo.list

Измените содержимое файла, добавив в него Debian 11 ( bullseye ). Мы не можем использовать Debian 12 ( bookworm ), так как репозиторий для него не обновлён.

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

После завершения работы сохраните файл, нажав Ctrl X и введя Y при появлении запроса.Установите сервер MariaDB

sudo apt install mariadb-server

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

Запустите скрипт безопасности MariaDB

sudo mariadb-secure-installation

Вам будет предложено ввести пароль root. Нажмите Enter, так как мы не задавали никакого пароля.

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
haven't set the root password yet, you should just press enter here.
Enter current password for root (enter for none):

Далее будет предложено переключиться на метод аутентификации Unix socket. Ввод unix_socket позволяет использовать учетные данные операционной системы для подключения к серверу MariaDB Так как у вас уже есть защищённая учётная запись root, введите n для продолжения работы.

OK, successfully used password, moving on...
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] n

Следующий запрос: хотите ли вы изменить пароль root. В Debian 12 пароль root тесно связан с автоматическим обслуживанием системы, поэтому его следует оставить в покое. Введите n для продолжения работы.

... skipping.
You already have your root account protected, so you can safely answer 'n'.
Change the root password? [Y/n] n

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

... skipping.
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!
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!
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!
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!

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

Шаг 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-0 libargon2-dev libbz2-dev libffi-dev libc-client-dev libpspell-dev flex libgmp3-dev libmcrypt-dev libmhash-dev freetds-dev libmariadb-dev libmariadb-dev-compat libncurses5-dev libpcre3-dev libaspell-dev librecode-dev libsnmp-dev

Следующий шаг – загрузка исходного кода PHP. Мы загрузим версию PHP 8.2.10, которая является последней версией на момент написания статьи.

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

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

tar -xzf php-8.2.11.tar.gz

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

cd php-8.2.11

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

sudo ./configure --prefix=/usr/local/lsws/lsphp82 --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)

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

/bin/bash /home/navjot/php-8.2.11/libtool --silent --preserve-dup-deps --tag CC --mode=link cc -shared -I/home/navjot/php-8.2.11/include -I/home/navjot/php-8.2.11/main -I/home/navjot/php-8.2.11 -I/home/navjot/php-8.2.11/ext/date/lib -I/usr/include/libxml2 -I/usr/include/x86_64-linux-gnu -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/c-client -I/home/navjot/php-8.2.11/ext/mbstring/libmbfl -I/home/navjot/php-8.2.11/ext/mbstring/libmbfl/mbfl -I/usr/include/postgresql -I/usr/include/pspell -I/usr/include/tidy -I/home/navjot/php-8.2.11/TSRM -I/home/navjot/php-8.2.11/Zend  -D_GNU_SOURCE -I/usr/include/c-client  -fno-common -Wstrict-prototypes -Wformat-truncation -Wlogical-op -Wduplicated-cond -Wno-clobbered -Wall -Wextra -Wno-strict-aliasing -Wno-unused-parameter -Wno-sign-compare -g -O2 -fvisibility=hidden -Wimplicit-fallthrough=1 -DZEND_SIGNALS -o ext/opcache/opcache.la -export-dynamic -avoid-version -prefer-pic -module -rpath /home/navjot/php-8.2.11/modules -L/usr/lib/x86_64-linux-gnu/mit-krb5 -L/usr/lib/x86_64-linux-gnu ext/opcache/ZendAccelerator.lo ext/opcache/zend_accelerator_blacklist.lo ext/opcache/zend_accelerator_debug.lo ext/opcache/zend_accelerator_hash.lo ext/opcache/zend_accelerator_module.lo ext/opcache/zend_persist.lo ext/opcache/zend_persist_calc.lo ext/opcache/zend_file_cache.lo ext/opcache/zend_shared_alloc.lo ext/opcache/zend_accelerator_util_funcs.lo ext/opcache/shared_alloc_shm.lo ext/opcache/shared_alloc_mmap.lo ext/opcache/shared_alloc_posix.lo ext/opcache/jit/zend_jit.lo ext/opcache/jit/zend_jit_gdb.lo ext/opcache/jit/zend_jit_vm_helpers.lo -lrt
/bin/bash /home/navjot/php-8.2.11/libtool --silent --preserve-dup-deps --tag CC --mode=install cp ext/opcache/opcache.la /home/navjot/php-8.2.11/modules
Build complete.
Don't forget to run 'make test'.

После завершения работы выполните следующую команду для проверки версии.

./sapi/litespeed/php -v
PHP 8.2.11 (litespeed) (built: Sep 28 2023 18:40:08)
Copyright (c) The PHP Group
Zend Engine v4.2.11, Copyright (c) Zend Technologies

Установка PHP.

sudo make install

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

Installing shared extensions: /usr/local/lsws/lsphp82/lib/php/extensions/no-debug-non-zts-20220829/
Installing PHP CLI binary: /usr/local/lsws/lsphp82/bin/
Installing PHP CLI man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing PHP LiteSpeed binary:  /usr/local/lsws/lsphp82/bin/
Installing phpdbg binary: /usr/local/lsws/lsphp82/bin/
Installing phpdbg man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing PHP CGI binary: /usr/local/lsws/lsphp82/bin/
Installing PHP CGI man page: /usr/local/lsws/lsphp82/php/man/man1/
Installing build environment: /usr/local/lsws/lsphp82/lib/php/build/
Installing header files: /usr/local/lsws/lsphp82/include/php/
Installing helper programs: /usr/local/lsws/lsphp82/bin/ program: phpize program: php-config
Installing man pages: /usr/local/lsws/lsphp82/php/man/man1/ page: phpize.1 page: php-config.1
Installing PEAR environment: /usr/local/lsws/lsphp82/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.13
Wrote PEAR system config file at: /usr/local/lsws/lsphp82/etc/pear.conf
You may want to add: /usr/local/lsws/lsphp82/lib/php to your php.ini include_path
Installing PDO headers: /usr/local/lsws/lsphp82/include/php/ext/pdo/

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

/usr/local/lsws/lsphp82/bin/lsphp -v
PHP 8.2.11 (litespeed) (built: Sep 28 2023 18:40:08)
Copyright (c) The PHP Group
Zend Engine v4.2.11, Copyright (c) Zend Technologies

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

/usr/local/lsws/lsphp82/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 из папки install в папку /usr/local/lsws/lsphp82/lib.

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

Мы настроим OpenLiteSpeed для работы с PHP позже.Откройте папку php.ini для редактирования.

sudo nano /usr/local/lsws/lsphp82/lib/php.ini

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

;;;;;;;;;;;;;;;;;;;;;;;;;
; Paths and Directories ;
;;;;;;;;;;;;;;;;;;;;;;;;;
; UNIX: "/path1:/path2"
include_path = /usr/local/lsws/lsphp82/lib/php

После завершения работы сохраните файл, нажав Ctrl X и введя Y при появлении запроса.

Шаг 5 – Настройка MariaDB

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

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';

Поскольку мы не изменяем пользователя root, следует создать еще одного пользователя SQL для выполнения административных задач, использующих парольную аутентификацию. Выберите для него надежный пароль.

MariaDB>GRANT ALL ON *.* TO 'navjot'@'localhost' IDENTIFIED BY 'Yourpassword32!' WITH GRANT OPTION;

Смыть привилегии пользователя.

mysql>FLUSH PRIVILEGES;

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

mysql>exit

Шаг 6 – Настройка OpenLiteSpeed

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

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

Нажмите кнопку Просмотреть, чтобы увидеть подробную конфигурацию. На следующей странице в разделе Listener Default >General щелкните на значке Edit и измените порт с 8080 на 80 .

Нажмите кнопку Save и перезагрузите сервер, нажав на кнопку Graceful restart.

Шаг 7 – Настройка PHP

На этом шаге нам необходимо связать нашу копию PHP 8.2 с сервером. Щелкните на разделе Конфигурация сервера слева, а затем на вкладке tab Внешнее приложение . Вы увидите существующее приложение LiteSpeed App for PHP. Мы внесем в него некоторые изменения.

Нажмите на кнопку Edit, чтобы отредактировать приложение 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: lsphp82/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

Нажмите кнопку Save, когда закончите.

Теперь, когда мы создали собственное приложение PHP 8.2, нам нужно указать серверу, чтобы он начал его использовать. Поскольку мы редактировали листинг по умолчанию, он уже настроен. Перезапустите сервер, нажав на кнопку Graceful restart.Чтобы проверить, правильно ли переключился PHP, посетите http://<YOURSERVERIP>/phpinfo.php в браузере.

Перезапуск PHP

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

ps aux | grep lsphp
nobody 500747  0.9  0.8 121104 34928 ? S 05:58 0:00 lsphp
nobody 500748  0.0  0.4 121104 16760 ? Ss 05:58 0:00 lsphp
navjot 500751  0.0  0.0 3876  1908 pts/0 S+ 05:58 0:00 grep lsphp

Убить процессы lsphp вручную.

sudo kill -9 500747
sudo kill -9 500748

Перезапустите сервер.

sudo systemctl restart lsws

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

Сначала необходимо создать директории для нашего виртуального хоста.

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

Каталог html будет содержать публичные файлы, а каталог logs – журналы сервера.Далее откройте консоль администратора, слева зайдите в раздел Virtual Hosts и нажмите кнопку Add.

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

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

После завершения нажмите кнопку Save. Вы получите следующую ошибку, поскольку файл конфигурации на данный момент не существует. Щелкните на ссылке для создания файла конфигурации.

Нажмите еще раз на кнопку Save для завершения создания виртуального хоста. После создания виртуального хоста перейдите в раздел Virtual Hosts ->Choose Virtual Host(example.com) ->General и измените конфигурацию, как указано

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

Нажмите кнопку Save для завершения. Далее необходимо настроить индексные файлы. Нажмите кнопку редактирования напротив Index files под секцией General. Установите следующие параметры.

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

После этого нажмите кнопку Сохранить. Далее необходимо выбрать файлы журнала. Перейдите в раздел Log, нажмите кнопку Edit напротив Virtual Host Log и заполните следующие значения. Остальные параметры оставьте без изменений.

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

Вы можете выбрать для Log Level значение DEBUG, если вы находитесь на машине разработки.Нажмите кнопку Save, а затем щелкните на знаке плюс в разделе Access Log, чтобы добавить новую запись. Заполните следующие значения.

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

После этого нажмите Save. Далее необходимо настроить Access Control в разделе Security. Установите следующие значения.

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


После этого нажмите кнопку Сохранить. И, наконец, необходимо установить слушателей. Перейдите в раздел Listeners и нажмите на кнопку View напротив Default Listener . Затем нажмите на кнопку Add напротив Virtual Host Mappings, чтобы добавить новое отображение, и установите следующие значения.

Virtual Host: example.com
Domains: example.com

Нажмите кнопку Save, когда все готово. Теперь нажмите на кнопку Graceful restart, чтобы применить все вышеуказанные изменения и перезапустить сервер.

Шаг 9 – Установка SSL

Установка SSL в OpenLiteSpeed требует установки двух сертификатов. В административной панели уже установлен самоподписной сертификат, который находится в каталоге /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) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:[email protected]

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

sudo mkdir /usr/local/lsws/certs

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

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

Для генерации бесплатных SSL-сертификатов, предлагаемых Let’s Encrypt, нам необходимо установить Certbot. Вы можете установить Certbot из репозитория Debian или получить последнюю версию с помощью инструмента Snapd. Мы будем использовать версию Snapd. Debian 12 поставляется без установленного Snapd.Установите пакет Snapd.

sudo apt install -y 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.6.0

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

sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -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
.....
Sat 2023-09-30 18:12:21 UTC 2h 59min left  Sat 2023-09-30 14:22:18 UTC 50min ago apt-daily.timer apt-daily.service
Sat 2023-09-30 18:54:00 UTC 3h 41min left  - - snap.certbot.renew.timer snap.certbot.renew.service
Sun 2023-10-01 00:00:00 UTC 8h left - - dpkg-db-backup.timer dpkg-db-backup.service

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

sudo certbot renew --dry-run

Если ошибок нет, то все готово. Теперь откройте консоль администратора, перейдите в раздел Listeners >>Add New Listener и добавьте следующие значения.

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

После этого нажмите Save. Далее перейдите в раздел Virtual Host Mappings под SSL Listener, выбрав SSL, нажав на кнопку Add и заполнив следующие значения.

Virtual Host: example.com
Domains: example.com

Нажмите Save после завершения. Далее перейдите в раздел Listeners >>SSL Listener >>SSL Tab >>SSL Private Key & Certificate (кнопка Edit) и введите следующие значения для самоподписного сертификата, созданного нами ранее.

Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes

Нажмите кнопку Save. Далее перейдите в раздел Listeners >>SSL Listener >>SSL Tab >>SSL Protocol (кнопка Edit) и заполните следующие значения для протокола и шифра 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

После этого нажмите кнопку Сохранить. Далее перейдите по адресу Virtual Hosts >>example.com >>SSL Tab >>SSL Private Key & Certificate (кнопка Edit) и заполните следующие значения с помощью Let’s Encrypt Certificate.

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

Нажмите Save после завершения. Далее перейдите в раздел Virtual Hosts >>example.com >>SSL Tab >>OCSP Stapling (кнопка Edit) и заполните следующие значения для включения OCSP Stapling.

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

Нажмите Save после завершения. Далее перейдите в раздел Virtual Hosts >>example.com >>SSL Tab >>Security (кнопка Edit) и введите следующие значения для включения протокола HTTP3/QUIC.

Enable HTTP3/QUIC: Yes

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

Нажмите Save после завершения. Перезапустите сервер, нажав на кнопку Graceful restart.

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

Создайте файл Test в директории 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-сайтов и приложений.

Зарубин Иван Эксперт по Linux и Windows

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

Вдохновлен www.howtoforge.com

Похожие статьи

Комментарии (0)