Cómo instalar y configurar el servidor OpenLiteSpeed en Fedora 31 junto con MariaDB

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

En este tutorial, aprenderemos a instalar OpenLiteSpeed Server en Fedora 31 junto con PHP 7.4 y el servidor MariaDB.

Requisitos previos

  • Servidor web basado en Fedora 31.

  • Una cuenta de usuario no root con privilegios sudo.

  • Actualizar el sistema.

    $ sudo dnf update
    
  • Paquete libnsl. Este paquete contiene la interfaz pública de cliente para los servicios NIS. Para instalarlo, emite el siguiente comando.

    $ sudo dnf install libnsl -y
    

Paso 1 - Configurar el cortafuegos

Antes de comenzar con el tutorial, necesitamos configurar el Firewall de Fedora, que suele estar activado por defecto. Comprobemos primero el estado del cortafuegos.

$ sudo systemctl status firewalld

Si no está funcionando, inicia el cortafuegos.

$ sudo systemctl start firewalld

A continuación, tenemos que habilitar SSH, HTTP, HTTPS y los puertos 7080, 8088 para el cortafuegos.

$ sudo firewall-cmd --permanent --add-service=ssh
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=7080/tcp
$ sudo firewall-cmd --permanent --add-port=8088/tcp

Cuando hayas terminado, podrás ver la lista de exenciones que se aplicarán.

$ sudo firewall-cmd --permanent --list-all

Cuando estés satisfecho con los cambios, recarga el Cortafuegos para que los cambios sean efectivos.

$ sudo firewall-cmd --reload

Activa el cortafuegos para que se recargue en cada arranque.

$ sudo systemctl enable firewalld

Paso 2 - Instalar OpenLiteSpeed

Ejecuta el siguiente comando para descargar el paquete binario de OpenLiteSpeed del sitio web. En el momento de escribir este tutorial, la última versión disponible era la 1.6.4. Comprueba la última versión en la página de descargas y cambia la URL según sea necesario.

$ wget https://openlitespeed.org/packages/openlitespeed-1.6.4.tgz

Extrae el archivo.

$ tar -zxvf openlitespeed-1.6.4.tgz

Pasa al directorio openlitespeed y ejecuta el script de instalación.

$ cd openlitespeed
$ sudo ./install.sh

Inicia el servidor web.

$ sudo /usr/local/lsws/bin/lswsctrl start

Comprueba el estado del servidor.

$ sudo /usr/local/lsws/bin/lswsctrl status

Abre http://<YOURSERVERIP>:8088 para acceder a tu servidor web. Deberías ver la siguiente página.

Servidor web OpenLiteSpeed

Paso 3 - Instalar PHP

El servidor OpenLiteSpeed viene con PHP 5.6 que está prehabilitado. Pero nosotros queremos usar PHP 7.4 así que instalaremos nuestra copia.

Instala el repositorio REMI que es el repositorio oficial de Fedora para instalar paquetes PHP.

$ sudo dnf -y install https://rpms.remirepo.net/fedora/remi-release-31.rpm

Activa los repositorios remi y remi-php74 y desactiva el repositorio remi-modular. Esto habilita el repositorio necesario para instalar los paquetes de PHP 7.4.

$ sudo dnf config-manager --set-enabled remi
$ sudo dnf config-manager --set-enabled remi-php74
$ sudo dnf config-manager --set-disabled remi-modular

Instala PHP 7.4 junto con algunos paquetes adicionales.

$ sudo dnf install php php-mysqlnd php-gd php-mcrypt php-bcmath php-litespeed

Verifica tu instalación de PHP.

$ php -v
PHP 7.4.0 (cli) (built: Nov 26 2019 20:13:36) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
   with Zend OPcache v7.4.0, Copyright (c), by Zend Technologies

Puedes comprobar los módulos PHP habilitados.

$ php --modules

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

Paso 4 - Instalar MariaDB

Instala el servidor MariaDB.

$ sudo dnf install mariadb-server

Inicia y habilita el servicio MariaDB.

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

Asegura tu instalación de MariaDB. Este script establecerá tu contraseña de root, eliminará los usuarios anónimos, no permitirá el inicio de sesión de root remoto y eliminará las tablas de prueba. Elige una contraseña fuerte y responde a las preguntas que se describen a continuación.

$ sudo mysql_secure_installation
[sudo] password for username: 

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user.  If you've just installed MariaDB, and
you haven't set the root password yet, the password will be blank,
so you should just press enter here.

Enter current password for root (enter for none): 
OK, successfully used password, moving on...

Setting the root password ensures that nobody can log into the MariaDB 
root user without the proper authorisation.

Set root password? [Y/n] y
New password: 
Re-enter new password: 
Password updated successfully!
Reloading privilege tables..
 ... Success!

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!

Una vez hecho esto, puedes entrar en el shell de MySQL con el siguiente comando.

$ sudo mysql -u root -p

Crea una base de datos de prueba y un usuario con permiso de acceso. Sustituye testdb y testuser por los nombres adecuados a tu configuración. Sustituye password por una contraseña fuerte.

CREATE DATABASE testdb;
CREATE USER 'testuser' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON testdb.* TO 'testuser';
FLUSH PRIVILEGES;

Sal del intérprete de comandos de MySQL.

exit

Paso 5 - Configurar OpenLiteSpeed

Configurar el panel de administración

Configura las credenciales del panel de administrador.

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

Puedes establecer tanto el nombre de usuario como la contraseña utilizando este comando. También puedes utilizar este comando en caso de que olvides tus datos de acceso.

Para acceder al panel de administración, abre http://<TUVERIP>:7080.

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.

Te aparecerá la siguiente pantalla.

Panel de control de OpenLiteSpeed

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

Oyentes

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

Escuchas por defecto

Cambiar el número de puerto

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

Recargar el servidor

Paso 6 - Configurar PHP

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

Haz clic en la sección Configuración del Servidor, a la izquierda, y luego en la pestaña Aplicación Externa. Verás que existe una LiteSpeed App para PHP 5.6. Crearemos nuestra propia LiteSpeed App para PHP 7.4. Puedes cambiar fácilmente entre ellas más adelante si lo deseas.

Aplicación externa

Haz clic en el botón Añadir para crear una nueva aplicación. Para el tipo, selecciona LiteSpeed SAPI App y haz clic en Siguiente.

Aplicación SAPI

A continuación, añade la siguiente configuración. Deja todos los demás campos en blanco.

Name: lsphp74
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: /usr/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.

PHP 7.4

Ahora que hemos creado nuestra propia aplicación basada en PHP 7.4, tenemos que decirle al servidor que empiece a utilizarla.

Ve a la pestaña Manejador de Script y edita el manejador lsphp. Cambia el nombre del Manejador por lsphp74 en el menú desplegable.

Manejador de guiones

Haz clic en Guardar y, a continuación, reinicia el servidor haciendo clic en el botón de reinicio graceful.

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

Información PHP

Paso 7 - Configurar el host virtual

En primer lugar, tenemos que 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 de administración y accede a la sección Hosts virtuales de la izquierda y haz clic en el botón Añadir.

Añadir host virtual

Rellena los valores según lo especificado

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

Detalles del host virtual

Haz clic en el botón Guardar cuando hayas terminado. Obtendrás 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.

Guardar la configuración

Vuelve a hacer clic en 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 Compression: Yes

Configurar el vhost

Haz clic en el botón Guardar cuando hayas terminado. A continuación, tenemos que configurar los archivos de índice. Haz clic en el botón de edición 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

Configurar el uso de los archivos de índice del servidor

Haz clic en el botón Guardar cuando hayas terminado. A continuación, tenemos que elegir los archivos de registro. Ve a la sección Registro y haz clic en Editar en el Registro del Host Virtual y rellena los siguientes valores.

Use Server’s Log: Yes
File Name: $VH_ROOT/logs/error.log
Log Level: ERROR
Rolling Size (bytes): 10M

Configurar el registro

Puedes elegir el Nivel de Registro como DEBUG si estás en una máquina de producción/desarrollo.

Haz clic en Guardar y luego abre la sección Registro de acceso. 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
Bytes log: Not Set
Compress Archive: Yes

configuración del archivo access.log

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

ACL

Haz clic en Guardar cuando hayas terminado. A continuación, tenemos que configurar el gestor de scripts. Establece los siguientes valores.

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

Escuchador PHP

A continuación, tenemos que configurar 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

Reescribir las reglas

Y por último, necesitamos establecer los Escuchadores. Ve a la sección Escuchadores y haz clic en el botón Ver contra Escuchador por defecto. A continuación, haz clic en el botón Añadir frente a Mapeos de hosts virtuales para añadir un nuevo mapeo y establece los siguientes valores.

Virtual Host: example.com
Domains: example.com

Nombre de host

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

Paso 8 - Configurar SSL

Para utilizar Let's Encrypt, necesitamos instalar la herramienta Certbot.

$ sudo dnf install certbot

Obtén el certificado SSL.

$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ -d example.com

Sigue el aviso interactivo.

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator webroot, Installer None
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]
Starting new HTTPS connection (1): acme-v01.api.letsencrypt.org

-------------------------------------------------------------------------------
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree
in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
-------------------------------------------------------------------------------
(A)gree/(C)ancel: A

-------------------------------------------------------------------------------
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
-------------------------------------------------------------------------------
(Y)es/(N)o: N
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Using the webroot path /usr/local/lsws/example.com/html for all unmatched domains.
Waiting for verification...
Cleaning up challenges

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example/fullchain.pem. Your key file has 
   been saved at:
   /etc/letsencrypt/live/linode.nspeaks.com/privkey.pem Your cert will
   expire on 2020-03-07. To obtain a new or tweaked version of this
   certificate in the future, simply run certbot again. To
   non-interactively renew *all* of your certificates, run "certbot
   renew"
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Ahora abre la consola de administración y ve a Escuchas >> Añadir nuevo oyente y añade los siguientes valores.

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

Configuración SSL

Haz clic en Guardar cuando hayas terminado. A continuación, ve a la sección Mapeos de Host Virtuales bajo el Escuchador SSL, haz clic en el botón Añadir y rellena los siguientes valores.

Virtual Host: example.com
Domains: example.com

Mapeo de host virtual

Haz clic en Guardar cuando hayas terminado.

A continuación, ve a Escuchas >> Escuchador SSL >> Pestaña SSL >> Clave privada y certificado SSL (botón Editar) y rellena los siguientes valores

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

Escucha SSL

Haz clic en Guardar cuando hayas terminado. Reinicia el servidor haciendo clic en el botón de reinicio graceful.

Paso 9 - 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 = "password";

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

Visita tu sitio en https://example.com en un navegador y deberías ver la siguiente página.

Lugar de la prueba

Eso es todo para este tutorial. Si tienes alguna pregunta, hazla en los comentarios de abajo.

También te podría gustar...