Cómo instalar la pila LOMP (OpenLiteSpeed, MySQL y PHP) en Debian 12

OpenLiteSpeed es una versión ligera y de código abierto del Servidor LiteSpeed desarrollado por LiteSpeed Technologies. Es compatible con las reglas Apache Rewrite, HTTP/2 y HTTP/3, así como con los protocolos TLS v1.3 y QUIC. Viene con un panel de administración basado en WebGUI que lo diferencia de otros servidores y lo hace más fácil de gestionar.

La pila LOMP es un acrónimo de Linux, OpenLiteSpeed, MySQL/MariaDB y PHP. Los servidores Litespeed son conocidos por su velocidad, especialmente con PHP, que se integra mediante la Interfaz de Programación de Aplicaciones para Servidores LiteSpeed (LSAPI). El intérprete de LiteSpeed PHP (LSPHP) sirve páginas PHP dinámicas a través de LSAPI.

En este tutorial, aprenderemos a instalar un servidor OpenLiteSpeed en una máquina Debian 12.

Requisitos previos

  • Un servidor con Debian 12.
  • Un usuario no root con privilegios sudo.
  • Un nombre de dominio completo (FQDN) como example.com que apunte al servidor.
  • No es necesario desactivar ni configurar SELinux para que funcione con OpenLiteSpeed.
  • Asegúrate de que todo está actualizado.
    $ sudo apt update
    $ sudo apt upgrade
    
  • Pocos paquetes necesita tu sistema.
    $ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release debian-archive-keyring unzip -y
    

    Puede que algunos de estos paquetes ya estén instalados en tu sistema.

Paso 1 – Configurar el Cortafuegos

El primer paso es configurar el cortafuegos. Debian viene con ufw (Uncomplicated Firewall) por defecto.

Comprueba si el cortafuegos se está ejecutando.

$ sudo ufw status

Obtendrás la siguiente salida.

Status: inactive

Permite el puerto SSH para que el cortafuegos no rompa la conexión actual al activarlo.

$ sudo ufw allow OpenSSH

Permite también los puertos HTTP y HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Abre los puertos relacionados con Openlitespeed.

$ sudo ufw allow 7080/tcp

Habilita el cortafuegos

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

Comprueba de nuevo el estado del cortafuegos.

$ sudo ufw status

Deberías ver un resultado similar.

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)

Paso 2 – Instala OpenLiteSpeed

OpenLiteSpeed no incluye un paquete para Debian 12. Por lo tanto, crearemos nuestra copia a partir del código fuente.

Descarga el archivo del código fuente de OpenLiteSpeed. Puedes obtener el enlace al último archivo de código fuente en la página oficial de descargas de OpenLiteSpeed.

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

Extrae el archivo.

$ tar -zxf openlitespeed-*.tgz

Cambia al directorio extraído.

$ cd openlitespeed-1.7.18

Construye el paquete del servidor.

$ sudo ./build.sh

Puede que tengas que esperar entre 5 y 10 minutos a que termine el proceso. Ignora cualquier advertencia que recibas durante el proceso. Cuando termine, recibirás el siguiente mensaje.

[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.

Una vez finalizado el proceso, abre el archivo ols.conf para editarlo.

$ sudo nano ols.conf

Edita el archivo como se muestra a continuación.

#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=

No añadas aquí tu contraseña. Estableceremos la contraseña más tarde utilizando la línea de comandos. Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Ahora que OpenLiteSpeed está construido, vamos a instalarlo.

$ sudo ./install.sh

El script instalador instala y habilita el servicio lsws para el servidor. Cuando termine, recibirás el siguiente mensaje.

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.

Inicia el servidor OpenLiteSpeed.

$ sudo systemctl start lsws

Comprueba el estado del servicio.

$ 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.

Comprueba la versión del servidor instalada.

$ /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)

Crear la contraseña de administrador

Puedes utilizar la contraseña de administrador proporcionada durante el proceso de instalación. Sin embargo, debes crear la tuya propia restableciéndola. Ejecuta el script de restablecimiento de contraseña.

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

Obtendrás la siguiente salida. Elige tu nombre de usuario y establece una contraseña segura.

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!

Ya puedes utilizar la nueva contraseña de administrador.

Abre http://<YOURSERVERIP>:7080 para acceder al panel de administración de OpenLiteSpeed. En tu primer acceso, tu navegador te advertirá de que tu conexión no es privada. Haz clic en Avanzado y pulsa «Aceptar el riesgo y Continuar» (en el caso de Firefox) o «Proceder a <YOURSERVERIP>(unsafe)» (en el caso de un navegador basado en Chromium). No volverás a ver la advertencia.

Deberías ver la página de inicio de sesión.

Página de inicio de sesión de OpenLiteSpeed

Introduce las credenciales que estableciste anteriormente y pulsa el botón Iniciar sesión para continuar.

Aparecerá la siguiente pantalla.

Panel de administración de OpenLiteSpeed

Paso 3 – Instalar MariaDB

Debian ya no incluye el servidor MySQL. Por lo tanto, utilizaremos el sustituto de MySQL, MariaDB. Pero antes de seguir adelante, tenemos que actualizar el repositorio de LiteSpeed. El repositorio de LiteSpeed añadido a través del instalador no funciona correctamente.

Abre el archivo /etc/apt/sources.list.d/lst_debian_repo.list para editarlo.

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

Cambia el contenido del archivo añadiéndole Debian 11 (bullseye). No podemos utilizar Debian 12 (bookworm) ya que el repositorio no está actualizado para ella.

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

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Instala el servidor MariaDB.

$ sudo apt install mariadb-server

El servicio MariaDB se inicia y ejecuta automáticamente tras la instalación.

Comprueba el estado del servicio.

$ sudo systemctl status mariadb

Obtendrás el siguiente resultado.

? mariadb.service - MariaDB 10.11.3 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; preset: enabled)
     Active: active (running) since Fri 2023-09-29 01:21:09 UTC; 1min 26s ago
       Docs: man:mariadbd(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 361450 (mariadbd)
     Status: "Taking your SQL requests now..."
      Tasks: 10 (limit: 4652)
     Memory: 190.8M
        CPU: 411ms
     CGroup: /system.slice/mariadb.service
             ??361450 /usr/sbin/mariadbd

Ejecuta el script de seguridad de MariaDB.

$ sudo mariadb-secure-installation

Se te pedirá la contraseña de root. Pulsa Intro porque no le hemos puesto ninguna contraseña.

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):

A continuación, se te preguntará si quieres cambiar al método de autenticación de socket Unix. El complemento unix_socket te permite utilizar las credenciales de tu sistema operativo para conectarte al servidor MariaDB. Como ya tienes una cuenta raíz protegida, introduce n para continuar.

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

A continuación, se te preguntará si quieres cambiar la contraseña de root. En Debian 12, la contraseña de root está estrechamente ligada al mantenimiento automatizado del sistema, por lo que conviene no modificarla. Escribe n para continuar.

 ... skipping.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n

A continuación, se te harán algunas preguntas para mejorar la seguridad de MariaDB. Escribe Y para eliminar los usuarios anónimos, desautorizar los inicios de sesión remotos de root, eliminar la base de datos de prueba y recargar las tablas de privilegios.

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

Puedes entrar en el intérprete de comandos de MariaDB escribiendo sudo mysql o sudo mariadb en la línea de comandos.

Paso 4 – Instalar PHP

Como hemos creado nuestro paquete a partir del código fuente, compila y construye una versión antigua de PHP cuyo uso no se recomienda. Puedes comprobarlo mediante el siguiente comando.

$ /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

Por lo tanto, necesitamos compilar e instalar la última versión de PHP. Pero, antes de proceder, necesitamos instalar las herramientas de compilación.

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

El siguiente paso es instalar los paquetes necesarios para el proceso de compilación de 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

A continuación, descarga el código fuente de PHP. Descargaremos la versión PHP 8.2.10, que es la última versión disponible en el momento de escribir esto.

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

Extrae los archivos.

$ tar -xzf php-8.2.11.tar.gz

Cambia al directorio descargado.

$ cd php-8.2.11

A continuación, ejecuta el script configure con las siguientes opciones. La opción --enable-litespeed es esencial.

$ 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

Deberías obtener la siguiente salida una vez finalizado el script.

+--------------------------------------------------------------------+
| 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.

Compila el código fuente.

$ sudo make -j $(nproc)

Recibirás una salida similar una vez finalizado.

/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'.

Una vez terminado, ejecuta el siguiente comando para intentar comprobar la versión.

$ ./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

Instala PHP.

$ sudo make install

Obtendrás la siguiente salida.

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/

Verifica la instalación de PHP. Hay dos binarios PHP disponibles en el directorio /usr/local/lsws/lsphp82/bin. Uno es el normal php que es la versión de línea de comandos y el otro es la versión Litespeed lsphp. La segunda es la que utilizaremos.

$ /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

Puedes consultar la lista de módulos PHP habilitados.

$ /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]

Copia el php.ini-production de la carpeta de instalación a la carpeta /usr/local/lsws/lsphp82/lib.

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

Más adelante configuraremos OpenLiteSpeed para que funcione con PHP.

Abre el php.ini para editarlo.

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

Busca la variable include_path y cambia su valor como se muestra a continuación.

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

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

Cuando hayas terminado, guarda el archivo pulsando Ctrl + X e introduciendo Y cuando se te pida.

Paso 5 – Configurar MariaDB

Accede al shell de MariaDB.

$ sudo mysql

Crea una base de datos de prueba. Sustituye testdb por el nombre de base de datos que prefieras.

mysql> CREATE DATABASE testdb;

Crea un usuario de prueba. Sustituye testuser por un nombre de usuario apropiado. Sustituye Your_Password123 por una contraseña segura.

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

Concede todos los privilegios sobre la base de datos al usuario.

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

Como no vamos a modificar el usuario root, debes crear otro usuario SQL para realizar tareas administrativas que empleen autenticación por contraseña. Elige una contraseña fuerte para éste.

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

Elimina los privilegios del usuario.

mysql> FLUSH PRIVILEGES;

Sal del intérprete de comandos MySQL.

mysql> exit

Paso 6 – Configurar OpenLiteSpeed

Vuelve a cambiar el puerto HTTP a 80

Cambiemos el puerto HTTP por defecto a 80. Accede a tu panel de administración en http://<YOURSERVERIP>:7080 con las credenciales que acabas de crear.

Visita la sección Escuchadores de la izquierda. Verás los oyentes por defecto con el puerto 8080.

Receptores OpenLiteSpeed

Pulsa el botón Ver para ver la configuración detallada. En la página siguiente, en Listener Default > General Page, haz clic en el icono Editar y cambia el puerto de 8080 a 80.

Escucha por defecto de OpenLiteSpeed

Escucha OpenLiteSpeed Editar

Haz clic en Guardar y luego reinicia el servidor haciendo clic en el botón Reinicio graceful.

OpenLiteSpeed Reinicia el Servidor

Paso 7 – Configurar PHP

En este paso, tenemos que asociar nuestra copia de PHP 8.2 con el servidor.

Haz clic en la sección Configuración del Serv idor, a la izquierda, y luego en la pestaña Aplicación Externa. Verás una LiteSpeed App para PHP ya existente. Haremos algunas modificaciones en ella.

Aplicaciones externas de OpenLiteSpeed

Haz clic en el botón Editar para editar la aplicación PHP.

A continuación, haz coincidir la configuración como se muestra a continuación. Deja todos los demás campos en blanco.

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

Haz clic en Guardar cuando hayas terminado.

Aplicación LiteSpeed SAPI

Ahora que hemos creado nuestra propia app PHP 8.2, tenemos que decirle al servidor que empiece a utilizarla. Como hemos editado el listado por defecto, ya está configurado. Reinicia el servidor haciendo clic en el botón Reinicio graceful.

Para comprobar si tu PHP se ha conmutado correctamente, visita http://<YOURSERVERIP>/phpinfo.php en tu navegador.

OpenLiteSpeed PHP Información

Reiniciar PHP

En OpenLiteSpeed, si editas php.ini o instalas un nuevo módulo PHP, al reiniciar el servidor no se mostrarán los cambios. Para ello tendrás que reiniciar el proceso PHP. En primer lugar, tendrás que localizar los ID de proceso del proceso 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

Mata manualmente los procesos lsphp.

$ sudo kill -9 500747
$ sudo kill -9 500748

Reinicia el Servidor.

$ sudo systemctl restart lsws

Paso 8 – Crear el VirtualHost

En primer lugar, necesitamos crear directorios para nuestro host virtual.

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

El directorio html contendrá los archivos públicos y el directorio logs contendrá los registros del servidor.

A continuación, abre la consola Admin, accede a la sección Hosts Virtuales desde la izquierda y haz clic en el botón Añadir.

Resumen de hosts virtuales

Rellena los valores como se indica

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

Configuración del host virtual OpenLiteSpeed

Pulsa el botón Guardar cuando hayas terminado. Aparecerá el siguiente error porque el archivo de configuración no existe en este momento. Haz clic en el enlace para crear el archivo de configuración.

Configuración del host virtual

Vuelve a pulsar el botón Guardar para terminar de crear el host virtual.

Una vez creado el host virtual, ve a Hosts Virtuales -> Elegir Host Virtual(ejemplo.com) -> General y modifica la configuración como se indica.

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

Sección general del host virtual OpenLiteSpeed

Pulsa el botón Guardar cuando hayas terminado. A continuación, tenemos que configurar los archivos de índice. Haz clic en el botón Editar contra Archivos de índice debajo de la Sección General. Configura las siguientes opciones.

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

Archivos de índice de OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, tenemos que elegir Archivos de registro. Ve a la sección Registro, haz clic en Editar en Registro de host virtual e introduce los siguientes valores. No modifiques los demás ajustes.

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

Registro de host virtual OpenLiteSpeed

Puedes elegir el Nivel de registro como DEBUG si estás en una máquina de desarrollo.

Haz clic en Guardar y, a continuación, haz clic en el signo más de la sección Registro de acceso para añadir una nueva entrada. Rellena los siguientes valores.

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

Registro de acceso a OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, tenemos que configurar el Control de Acceso en la sección Seguridad. Establece los siguientes valores.

Allowed List: *
Denied List: Not set

Control de acceso OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, tenemos que configurar la Definición del Manejador de Script. Haz clic en el signo más (+) para añadir una nueva definición. Establece los siguientes valores.

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

Definición del Manejador de Script OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, tenemos que establecer el Control de Reescritura en la sección Reescritura. Establece los siguientes valores.

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

Control de reescritura OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. Y por último, tenemos que configurar los Escuchadores. Ve a la sección Escuchas y haz clic en el botón Ver frente a Escucha predeterminada. A continuación, haz clic en el botón Añadir en Asignaciones de host virtual para añadir una nueva asignación y establece los siguientes valores.

Virtual Host: example.com
Domains: example.com

Asignaciones de host virtual OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. Ahora, haz clic en el botón Reinicio graceful para aplicar todos los cambios anteriores y reiniciar el servidor.

Paso 9 – Instalar SSL

Configurar SSL en OpenLiteSpeed requiere que configuremos dos certificados. Un certificado autofirmado para todo el servidor y un certificado Let’s Encrypt específico para cada sitio.

El panel de administración ya viene con un certificado autofirmado preinstalado que está disponible en el directorio /usr/local/lsws/admin/conf.

Creemos primero el certificado autofirmado para el servidor general.

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

Obtendrás una salida similar.

-----
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]

Puedes pulsar intro en todos los campos y dejarlos vacíos. Introduce tu dominio para el Nombre común y tu dirección de correo electrónico.

Crea el directorio para los certificados autofirmados.

$ sudo mkdir /usr/local/lsws/certs

Copia el certificado en el directorio /usr/local/lsws/certs.

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

Necesitamos instalar Certbot para generar certificados SSL gratuitos ofrecidos por Let’s Encrypt.

Puedes instalar Certbot utilizando el repositorio de Debian u obtener la última versión utilizando la herramienta Snapd. Nosotros utilizaremos la versión Snapd. Debian 12 no viene con Snapd instalado.

Instala el paquete Snapd.

$ sudo apt install -y snapd

Ejecuta los siguientes comandos para asegurarte de que tu versión de Snapd está actualizada.

$ sudo snap install core
$ sudo snap refresh core

Ejecuta el siguiente comando para instalar Certbot.

$ sudo snap install --classic certbot

Utiliza el siguiente comando para asegurarte de que se puede ejecutar el comando Certbot creando un enlace simbólico al directorio /usr/bin.

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

Verifica la instalación.

$ certbot --version
certbot 2.6.0

Ejecuta el siguiente comando para generar un certificado SSL.

Obtén el certificado SSL. El directorio webroot se establece en el directorio HTML público configurado anteriormente.

$ 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

Genera un certificado de grupo Diffie-Hellman.

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

Comprueba el servicio programador de renovación de Certbot.

$ sudo systemctl list-timers

Encontrarás snap.certbot.renew.service como uno de los servicios programados para ejecutarse.

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

Para comprobar si la renovación SSL funciona correctamente, realiza una ejecución en seco del proceso.

$ sudo certbot renew --dry-run

Si no ves ningún error, ya está todo listo. Tu certificado se renovará automáticamente.

Ahora abre la consola Admin, ve a Escuchas >> Añadir nueva escucha, y añade los siguientes valores.

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

Escucha SSL OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, ve a la sección Asignaciones de host virtual, debajo de la Escucha SSL, haz clic en SSL, pulsa el botón Añadir y rellena los siguientes valores.

Virtual Host: example.com
Domains: example.com

Asignaciones de host virtual OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, ve a Receptores >> Receptor SSL >> Pestaña SSL >>Clave privada y certificado SSL (botón Editar) e introduce los siguientes valores para el certificado autofirmado que hemos creado antes.

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

Clave y certificado SSL autofirmados OpenLIteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, ve a Receptores >> Receptor SSL >> Pestaña SSL >> Protocolo SSL (botón Editar) e introduce los siguientes valores para el protocolo SSL y los detalles de cifrado.

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

Protocolos SSL OpenLiteSpeed

Pulsa Guardar cuando hayas terminado. A continuación, ve a Anfitriones virtuales >> ejemplo.com >> Pestaña SSL >> Clave privada y certificado SSL (botón Editar) y rellena los siguientes valores con el certificado 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

Clave y certificado SSL de OpenLiteSpeed Let's Encrypt

Haz clic en Guardar cuando hayas terminado. A continuación, ve a Anfitriones Virtuales >> ejemplo.com >> Pestaña SSL >> Engrapado OCSP (botón Editar) e introduce los siguientes valores para activar el Engrapado OCSP.

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

Grapado OCSP OpenLiteSpeed

Haz clic en Guardar cuando hayas terminado. A continuación, ve a Anfitriones Virtuales >> ejemplo.com >> Pestaña SSL >> Seguridad (botón Editar) y rellena los siguientes valores para habilitar el protocolo HTTP3/QUIC.

Enable HTTP3/QUIC: Yes

No necesitamos activar otras opciones porque están activadas por defecto.

Protocolo OpenLiteSpeed HTTP3/QUIC

Haz clic en Guardar cuando hayas terminado.

Reinicia el servidor haciendo clic en el botón Reinicio graceful.

Paso 10 – Sitio de Prueba

Crea un archivo de Prueba en tu directorio html.

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

Pega el siguiente código en el editor 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>

Guarda el archivo pulsando Ctrl + X e introduciendo Y cuando te lo pida. Abre la URL https://example.com en un navegador y deberías ver la siguiente página.

Prueba del sitio OpenLiteSpeed

El sitio de prueba es totalmente funcional. Puedes empezar a utilizar el servidor para servir sitios web y aplicaciones PHP dinámicas.

Conclusión

Con esto concluye nuestro tutorial sobre la instalación de LOMP Stack (OpenLiteSpeed, MySQL y PHP) en un servidor Debian 12. Si tienes alguna pregunta, publícala en los comentarios a continuación.

También te podría gustar...