OpenLiteSpeed Server op Fedora 31 samen met MariaDB te installeren en in te stellen

OpenLiteSpeed is een lichtgewicht en open-source versie van de LiteSpeed Server, ontwikkeld door LiteSpeed Technologies. Het ondersteunt Apache Rewrite regels, HTTP/2 en HTTP/3 samen met TLS v1.3 en QUIC protocollen. Het komt met een WebGUI gebaseerd Beheerpaneel dat het anders maakt dan andere servers en gemakkelijker te beheren.

In deze zelfstudie leren we hoe je OpenLiteSpeed Server op Fedora 31 installeert, samen met PHP 7.4 en MariaDB server.

Vereisten

  • Fedora 31 gebaseerde webserver.

  • Een niet-root gebruikersaccount met sudo rechten.

  • Werk je systeem bij met het.

    $ sudo dnf update
    
  • libnsl pakket. Dit pakket bevat de publieke client interface voor NIS diensten. Om het te installeren, geef je het volgende commando.

    $ sudo dnf install libnsl -y
    

Stap 1 - Firewall instellen

Voordat we met de zelfstudie beginnen, moeten we de Fedora Firewall instellen, die meestal standaard ingeschakeld is. Laten we eerst de status van de firewall controleren.

$ sudo systemctl status firewalld

Als hij niet werkt, start dan de firewall.

$ sudo systemctl start firewalld

Vervolgens moeten we SSH, HTTP, HTTPS en poorten 7080, 8088 voor de firewall inschakelen.

$ 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

Als je klaar bent, zie je de lijst van vrijstellingen die doorgevoerd worden.

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

Als je tevreden bent over de veranderingen, herlaad dan de firewall om de veranderingen live te zetten.

$ sudo firewall-cmd --reload

Schakel de firewall in zodat hij bij elke bootup opnieuw geladen wordt.

$ sudo systemctl enable firewalld

Stap 2 - Installeer OpenLiteSpeed

Voer het volgende commando uit om het binaire pakket OpenLiteSpeed van de website te downloaden. Bij het schrijven van deze handleiding was de laatste beschikbare versie 1.6.4. Controleer de nieuwste versie op de downloads pagina en verander de URL als dat nodig is.

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

Pak het archief uit.

$ tar -zxvf openlitespeed-1.6.4.tgz

Ga naar de openlitespeed directory en voer het installatiescript uit.

$ cd openlitespeed
$ sudo ./install.sh

Start de webserver.

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

Controleer de status van de server.

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

Open http://<YOURSERVERIP>:8088 om je webserver te benaderen. Je zou de volgende pagina moeten zien.

OpenLiteSpeed webserver

Stap 3 - Installeer PHP

OpenLiteSpeed server wordt geleverd met PHP 5.6 dat vooraf is ingeschakeld. Maar we willen PHP 7.4 gebruiken, dus installeren we onze kopie.

Installeer de REMI repository, dat is de officiƫle Fedora repository voor het installeren van PHP pakketten.

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

Schakel de remi en remi-php74 repositories in en de remi-modular repository uit. Dit schakelt de repository in die nodig is om PHP 7.4 pakketten te installeren.

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

Installeer PHP 7.4 samen met enkele aanvullende pakketten.

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

Controleer je PHP installatie.

$ 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

Je kunt controleren of de PHP modules ingeschakeld zijn.

$ php --modules

We zullen PHP later configureren om met OpenLiteSpeed te werken.

Stap 4 - Installeer MariaDB

Installeer de MariaDB server.

$ sudo dnf install mariadb-server

Start de MariaDB dienst en schakel die in.

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

Beveilig je MariaDB installatie. Dit script zal je root wachtwoord instellen, anonieme gebruikers verwijderen, remote root login verbieden en testtabellen laten vallen. Kies een sterk wachtwoord en beantwoord de vragen zoals hieronder beschreven.

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

Als dit gedaan is, kun je je met het volgende commando aanmelden in de MySQL shell.

$ sudo mysql -u root -p

Maak een test database en een gebruiker met toegangsrechten. Vervang testdb en testuser door passende namen voor je opstelling. Vervang password door een sterk wachtwoord.

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

Sluit de MySQL shell af.

exit

Stap 5 - Configureer OpenLiteSpeed

Configureer het beheerderspaneel

Stel de inloggegevens voor het beheerderspaneel in.

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

Je kunt met dit commando zowel de gebruikersnaam als het wachtwoord instellen. Je kunt dit commando ook gebruiken voor het geval je je inloggegevens vergeet.

Om het beheerpaneel te openen, open je http://<JouwSERVERIP>:7080.

Verander HTTP poort terug naar 80

Laten we de standaard HTTP poort veranderen in 80. Log in op je beheerpaneel op http://<YOURSERVERIP>:7080 met de inloggegevens die je zojuist gemaakt hebt.

Je wordt begroet door het volgende scherm.

OpenLiteSpeed dashboard

Bezoek de sectie Luisteraars van links. Je ziet de standaard luisteraars met poort 8080.

Luisteraars

Klik op de knop View om de details van de configuratie te zien. Op de volgende pagina onder Listener Default > General Page klik je op het Edit icoon en verander je de poort van 8088 in 80.

Standaard Luisteraars

Verander poortnummer

Klik op Save en herstart dan de server door op de Graceful restart knop te klikken.

Herlaad server

Stap 6 - PHP configureren

In deze stap moeten we onze kopie van PHP 7.4 aan de server koppelen.

Klik op het onderdeel Server Configuration aan de linkerkant en dan op de tab External App. Je ziet een bestaande LiteSpeed App voor PHP 5.6. We maken onze eigen LiteSpeed App voor PHP 7.4. Je kunt later gemakkelijk tussen beide wisselen als je wilt.

Externe app

Klik op de knop Toevoegen om een nieuwe app te maken. Kies voor het type LiteSpeed SAPI App en klik op Next.

SAPI app

Voeg vervolgens de onderstaande configuratie toe. Laat alle andere velden leeg.

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

Klik op Save als je klaar bent.

PHP 7.4

Nu we onze eigen op PHP 7.4 gebaseerde app gemaakt hebben, moeten we de server vertellen dat hij hem moet gaan gebruiken.

Ga naar het Script Handler tabblad en bewerk de lsphp handler. Verander de Handle naam in lsphp74 uit het uitklapmenu.

Script Handler

Klik op Save en herstart dan de server door op de Graceful restart knop te klikken.

Om te testen of je PHP goed omgeschakeld is, bezoek je http://<JOURSERVERIP>/phpinfo.php in je browser.

PHP Info

Stap 7 - Virtuele host opzetten

Eerst moeten we mappen aanmaken voor onze virtuele host.

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

De html directory zal de publieke bestanden bevatten en de logs directory de server logs.

Open vervolgens de Admin console en ga naar de sectie Virtuele Hosts van links en klik op de knop Toevoegen.

Virtuele host toevoegen

Vul de waarden in zoals aangegeven

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

Gegevens over virtuele hosts

Klik op de Save knop als je klaar bent. Je krijgt de volgende foutmelding omdat het configuratiebestand nu nog niet bestaat. Klik op de link om het configuratiebestand aan te maken.

Configuratie opslaan

Klik nogmaals op het Save knopje om het aanmaken van de Virtuele Host te voltooien.

Als de virtuele host is aangemaakt, ga je naar Virtual Hosts -> Kies Virtual Host(example.com) -> Algemeen en wijzig je de configuratie zoals aangegeven.

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

Configureer vhost

Klik op de knop Save als je klaar bent. Vervolgens moeten we index bestanden instellen. Klik op de knop bewerken bij Index files onder de sectie Algemeen. Stel de volgende opties in.

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

Stel het gebruik van server index bestanden in

Klik op Save als je klaar bent. Vervolgens moeten we Logbestanden kiezen. Ga naar de Log sectie en klik op Edit tegen Virtual Host Log en vul de volgende waarden in.

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

Logging instellen

Je kunt het Log Level kiezen als DEBUG als je op een productie/ontwikkelingsmachine zit.

Klik op Save en open dan de sectie Access Log. Vul de volgende waarden in.

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

configuratie van het bestand access.log

Klik op Save als je klaar bent. Vervolgens moeten we Access Control instellen onder de sectie Security. Stel de volgende waarden in.

Allowed List: *
Denied List: Not set

ACL

Klik op Save als je klaar bent. Vervolgens moeten we de script handler instellen. Stel de volgende waarden in.

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

PHP Luisteraar

Vervolgens moeten we Rewrite Control instellen onder de sectie Rewrite. Stel de volgende waarden in.

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

Herschrijf regels

En als laatste moeten we de Listeners instellen. Ga naar de sectie Listeners en klik op de knop View tegen Default Listener. Klik dan op de knop Add tegen Virtual Host Mappings om een nieuwe mapping toe te voegen en stel de volgende waarden in.

Virtual Host: example.com
Domains: example.com

Hostname

Klik op Save als je klaar bent. Klik nu op de Graceful restart knop om alle bovenstaande veranderingen toe te passen en de server opnieuw te starten.

Stap 8 - SSL instellen

Om Let's Encrypt te gebruiken, moeten we het Certbot gereedschap installeren.

$ sudo dnf install certbot

Verkrijg het SSL certificaat.

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

Volg de Interactieve prompt.

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

Open nu de Admin console en ga naar Listeners >> Add New Listener en voeg de volgende waarden toe.

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

SSL configuratie

Klik op Save als je klaar bent. Ga vervolgens naar de sectie Virtual Host Mappings onder de SSL Listener, klik op de knop Add en vul de volgende waarden in.

Virtual Host: example.com
Domains: example.com

Virtuele host mapping

Klik op Save wanneer je klaar bent.

Ga vervolgens naar Listeners >> SSL Listener >> SSL Tab >>SSL Private Key & Certificaat (knop Bewerken) en vul de volgende waarden in.

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

SSL Luisteraar

Klik op Save wanneer je klaar bent. Herstart de server door op de Graceful restart knop te klikken.

Stap 9 - Test site

Maak een Test bestand in je html directory.

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

Plak de volgende code in de Nano editor.

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

Bezoek je site op https://example.com in een browser en je zou de volgende pagina moeten zien.

Testplaats

Dat is alles voor deze handleiding. Als je vragen hebt, schiet ze dan in de reacties hieronder.