Comment installer et configurer le serveur OpenLiteSpeed sur Fedora 31 avec MariaDB

OpenLiteSpeed est une version légère et open-source du serveur LiteSpeed développé par LiteSpeed Technologies. Il prend en charge les règles Apache Rewrite, HTTP/2 et HTTP/3 ainsi que les protocoles TLS v1.3 et QUIC. Il est livré avec un panneau d’administration basé sur le WebGUI qui le rend différent des autres serveurs et plus facile à gérer.

Dans ce tutoriel, nous allons apprendre à installer le serveur OpenLiteSpeed sur Fedora 31 avec PHP 7.4 et le serveur MariaDB.

Conditions préalables

  • Un serveur Web basé sur Fedora 31.

  • Un compte utilisateur non-root avec des privilèges sudo.

  • Mets ton système à jour.

    $ sudo dnf update
    
  • Paquet libnsl. Ce paquet contient l'interface client publique pour les services NIS. Pour l'installer, exécute la commande suivante.

    $ sudo dnf install libnsl -y
    

Étape 1 - Configurer le pare-feu

Avant de commencer le tutoriel, nous devons configurer le pare-feu Fedora qui est généralement activé par défaut. Vérifions d'abord l'état du pare-feu.

$ sudo systemctl status firewalld

S'il ne fonctionne pas, alors démarre le pare-feu.

$ sudo systemctl start firewalld

Ensuite, nous devons activer SSH, HTTP, HTTPS et les ports 7080, 8088 pour le pare-feu.

$ 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

Lorsque tu as terminé, tu peux voir la liste des exemptions qui seront mises en place.

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

Lorsque tu es satisfait des changements, recharge le pare-feu pour que les changements soient effectifs.

$ sudo firewall-cmd --reload

Active le pare-feu pour qu'il soit rechargé à chaque démarrage.

$ sudo systemctl enable firewalld

Étape 2 - Installe OpenLiteSpeed

Exécute la commande suivante pour télécharger le paquetage binaire OpenLiteSpeed sur le site Web. Au moment de la rédaction de ce tutoriel, la dernière version disponible était la 1.6.4. Vérifie la dernière version sur la page des téléchargements et modifie l'URL si nécessaire.

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

Extrais l'archive.

$ tar -zxvf openlitespeed-1.6.4.tgz

Passe dans le répertoire openlitespeed et exécute le script d'installation.

$ cd openlitespeed
$ sudo ./install.sh

Démarre le serveur Web.

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

Vérifie l'état du serveur.

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

Ouvre http://<YOURSERVERIP>:8088 pour accéder à ton serveur Web. Tu devrais voir la page suivante.

Serveur web OpenLiteSpeed

Étape 3 - Installer PHP

Le serveur OpenLiteSpeed est livré avec PHP 5.6 qui est préactivé. Mais comme nous voulons utiliser PHP 7.4, nous allons installer notre propre copie.

Installe le référentiel REMI qui est le référentiel officiel de Fedora pour l'installation des paquets PHP.

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

Active les référentiels remi et remi-php74 et désactive le référentiel remi-modular. Cela active le dépôt nécessaire à l'installation des paquets 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

Installe PHP 7.4 ainsi que quelques paquets supplémentaires.

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

Vérifie ton installation 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

Tu peux vérifier les modules PHP activés.

$ php --modules

Nous configurerons PHP pour qu'il fonctionne avec OpenLiteSpeed plus tard.

Étape 4 - Installe MariaDB

Installe le serveur MariaDB.

$ sudo dnf install mariadb-server

Démarre et active le service MariaDB.

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

Sécurise ton installation MariaDB. Ce script va définir ton mot de passe root, supprimer les utilisateurs anonymes, interdire la connexion root à distance et supprimer les tables de test. Choisis un mot de passe fort et réponds aux questions comme décrit ci-dessous.

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

Une fois que c'est fait, tu peux te connecter au shell MySQL à l'aide de la commande suivante.

$ sudo mysql -u root -p

Crée une base de données de test et un utilisateur avec une autorisation d'accès. Remplace testdb et testuser par les noms appropriés pour ta configuration. Remplace password par un mot de passe fort.

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

Quitte le shell MySQL.

exit

Étape 5 - Configure OpenLiteSpeed

Configurer le panneau d'administration

Définis les informations d'identification du panneau Administrateur.

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

Tu peux définir le nom d'utilisateur et le mot de passe à l'aide de cette commande. Tu peux aussi utiliser cette commande au cas où tu oublierais tes informations de connexion.

Pour accéder au panneau d'administration, ouvre http://<YOURSERVERIP>:7080.

Remettre le port HTTP à 80

Changeons le port HTTP par défaut en 80. Connecte-toi à ton panneau d'administration à http://<YOURSERVERIP>:7080 avec les informations d'identification que tu viens de créer.

Tu seras accueilli par l'écran suivant.

Tableau de bord OpenLiteSpeed

Visite la section Écouteurs à partir de la gauche. Tu verras les auditeurs par défaut avec le port 8080.

Auditeurs

Clique sur le bouton View pour voir la configuration détaillée. Sur la page suivante, sous Listener Default > General Page, clique sur l'icône Edit et change le port de 8088 à 80.

Écouteurs par défaut

Change le numéro de port

Clique sur Enregistrer, puis redémarre le serveur en cliquant sur le bouton Redémarrage progressif.

Recharge le serveur

Étape 6 - Configurer PHP

Dans cette étape, nous devons associer notre copie de PHP 7.4 au serveur.

Clique sur la section Configuration du serveur à gauche, puis sur l'onglet App externe. Tu verras une LiteSpeed App existante pour PHP 5.6. Nous allons créer notre propre LiteSpeed App pour PHP 7.4. Tu pourras facilement passer de l'une à l'autre plus tard si tu le souhaites.

Application externe

Clique sur le bouton Ajouter pour créer une nouvelle application. Pour le type, sélectionne LiteSpeed SAPI App et clique sur Suivant.

SAPI App

Ensuite, ajoute la configuration ci-dessous. Laisse tous les autres champs vides.

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

Clique sur Enregistrer lorsque tu as terminé.

PHP 7.4

Maintenant que nous avons créé notre propre application basée sur PHP 7.4, nous devons dire au serveur de commencer à l'utiliser.

Va dans l'onglet Script Handler et modifie le handler lsphp. Change le nom du gestionnaire en lsphp74 dans le menu déroulant.

gestionnaire de script

Clique sur Enregistrer, puis redémarre le serveur en cliquant sur le bouton Redémarrage gracieux.

Pour tester si ton PHP a été commuté correctement, visite http://<YOURSERVERIP>/phpinfo.php dans ton navigateur.

Info PHP

Étape 7 - Configurer l'hôte virtuel

Tout d'abord, nous devons créer des répertoires pour notre hôte virtuel.

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

Le répertoire html contiendra les fichiers publics et le répertoire logs contiendra les journaux du serveur.

Ensuite, ouvre la console d'administration et accède à la section Hôtes virtuels sur la gauche, puis clique sur le bouton Ajouter.

Ajouter un hôte virtuel

Remplis les valeurs comme indiqué

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

Détails de l'hôte virtuel

Clique sur le bouton Enregistrer quand tu as terminé. Tu obtiendras l'erreur suivante car le fichier de configuration n'existe pas pour l'instant. Clique sur le lien pour créer le fichier de configuration.

Sauvegarder la configuration

Clique à nouveau sur le bouton Enregistrer pour terminer la création de l'hôte virtuel.

Une fois l'hôte virtuel créé, va dans Hôtes virtuels -> Choisir l'hôte virtuel (exemple.com) -> Général et modifie la configuration comme indiqué.

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

Configure vhost

Clique sur le bouton Enregistrer quand tu as terminé. Ensuite, nous devons configurer les fichiers d'index. Clique sur le bouton Modifier contre Fichiers d'index sous la section Général. Configure les options suivantes.

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

Configurer l'utilisation des fichiers d'index du serveur

Clique sur Enregistrer lorsque tu as terminé. Ensuite, nous devons choisir les fichiers journaux. Va dans la section Log et clique sur Editer contre Virtual Host Log et renseigne les valeurs suivantes.

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

Config Config Config Config de la connexion

Tu peux choisir le niveau du journal comme DEBUG si tu es sur une machine de production/développement.

Clique sur Enregistrer, puis ouvre la section Journal d'accès. Remplis les valeurs suivantes.

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

Configuration du fichier access.log

Clique sur Enregistrer quand tu as terminé. Ensuite, nous devons configurer le contrôle d'accès dans la section Sécurité. Renseigne les valeurs suivantes.

Allowed List: *
Denied List: Not set

ACL

Clique sur Enregistrer lorsque tu as terminé. Ensuite, nous devons configurer le gestionnaire de script. Définis les valeurs suivantes.

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

Écouteur PHP

Ensuite, nous devons configurer le contrôle de réécriture dans la section Réécriture. Définis les valeurs suivantes.

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

Réécrire les règles

Et enfin, nous devons définir les Écouteurs. Va dans la section Listeners et clique sur le bouton View contre Default Listener. Ensuite, clique sur le bouton Ajouter contre Mappages d'hôtes virtuels pour ajouter un nouveau mappage et définir les valeurs suivantes.

Virtual Host: example.com
Domains: example.com

Nom d'hôte

Clique sur Enregistrer lorsque tu as terminé. Maintenant, clique sur le bouton Graceful restart pour appliquer toutes les modifications ci-dessus et redémarrer le serveur.

Étape 8 - Configurer SSL

Pour utiliser Let's Encrypt, nous devons installer l'outil Certbot.

$ sudo dnf install certbot

Obtiens le certificat SSL.

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

Suis l'invite interactive.

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

Ouvre maintenant la console d'administration et va dans Écouteurs >> Ajouter un nouvel écouteur et ajoute les valeurs suivantes.

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

Configuration SSL

Clique sur Enregistrer lorsque tu as terminé. Ensuite, va dans la section Virtual Host Mappings sous le SSL Listener, clique sur le bouton Add et remplis les valeurs suivantes.

Virtual Host: example.com
Domains: example.com

Mappage des hôtes virtuels

Clique sur Enregistrer quand tu as terminé.

Ensuite, va dans la section Listeners >> SSL Listener >> SSL Tab >>SSL Private Key & Certificate (bouton Edit) et renseigne les valeurs suivantes

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

Listener SSL

Clique sur Enregistrer lorsque tu as terminé. Redémarre le serveur en cliquant sur le bouton Graceful restart.

Étape 9 - Site de test

Crée un fichier Test dans ton répertoire html.

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

Colle le code suivant dans l'éditeur 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>

Visite ton site à https://example.com dans un navigateur et tu devrais voir la page suivante.

Site de test

C'est tout pour ce tutoriel. Si tu as des questions, pose-les dans les commentaires ci-dessous.

Vous aimerez aussi...