OpenLiteSpeed Server samen met MariaDB en PHP installeren en configureren op Ubuntu 20.04

OpenLiteSpeed is een lichtgewicht en open-source versie van de LiteSpeed Server, ontwikkeld door LiteSpeed Technologies. Het wordt geleverd met een WebGUI gebaseerd Beheerpaneel dat het anders maakt dan andere servers en gemakkelijker te beheren.

In deze handleiding leren we hoe je OpenLiteSpeed Server op Ubuntu 20.04 installeert, samen met PHP 7.4 en MariaDB server.

Vereisten

  • Ubuntu 20.04 gebaseerde webserver.

  • Een niet-root gebruikersaccount met sudo rechten.

Werk je systeem bij.

$ sudo apt update
$ sudo apt upgrade

Stap 1 - Configureer Firewall

Voor we met de zelfstudie beginnen, moeten we de Ongecompliceerde Firewall(UFW) instellen, die meestal standaard ingeschakeld is. Laten we eerst de status van de firewall controleren.

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

$ sudo ufw allow OpenSSH
$ sudo ufw allow http
$ sudo ufw allow https
$ sudo ufw allow 7080/tcp
$ sudo ufw allow 8088/tcp

Controleer de status van de firewall.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
7080/tcp                   ALLOW       Anywhere                  
8088/tcp                   ALLOW       Anywhere                  
OpenSSH (v6)               ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
7080/tcp (v6)              ALLOW       Anywhere (v6)             
8088/tcp (v6)              ALLOW       Anywhere (v6)     

Als hij niet werkt, start dan de firewall.

$ sudo ufw enable

Stap 2 - Installeer OpenLiteSpeed

Er zijn verschillende versies van OpenLiteSpeed die je kunt installeren. Aanbevolen versies zijn van de 1.6.x of 1.7.x serie op het moment van schrijven van deze handleiding.

We zullen voor onze zelfstudie de officiële Repository van OpenLiteSpeed gebruiken, die alleen de 1.6.x versie onderhoudt.

Voeg de OpenLiteSpeed Repository Sleutel toe.

$ wget -qO - https://rpms.litespeedtech.com/debian/lst_repo.gpg | sudo apt-key add -

Voeg de Repository toe.

$ echo "deb http://rpms.litespeedtech.com/debian/ focal main" | sudo tee /etc/apt/sources.list.d/openlitespeed.list

Werk de Repository bij.

$ sudo apt update

Installeer OpenLiteSpeed

$ sudo apt install openlitespeed

Controleer de status van de server.

$ sudo /usr/local/lsws/bin/lswsctrl status
litespeed is running with PID 21825.

Als hij niet draait, kun je beginnen met het volgende commando.

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

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

OpenLiteSpeed Standaard Pagina

Stap 3 - Installeer PHP

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

Installeer PHP 7.4 samen met enkele aanvullende pakketten.

$ sudo apt install lsphp74 lsphp74-common lsphp74-mysql lsphp74-curl

Controleer je PHP installatie.

$ /usr/local/lsws/lsphp74/bin/php7.4 -v
PHP 7.4.5 (cli) (built: May  7 2020 23:08:38) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
    with Zend OPcache v7.4.5, Copyright (c), by Zend Technologies

Je kunt controleren of de PHP modules ingeschakeld zijn.

$ /usr/local/lsws/lsphp74/bin/php7.4 --modules

We zullen PHP later configureren om met OpenLiteSpeed te werken.

Stap 4 - Installeer MariaDB

Installeer de MariaDB server.

$ sudo apt 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 testdatabase 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 credentials voor het beheerderspaneel in.

$ 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]: <username>

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!

Je kunt dit commando ook gebruiken voor het geval je je inloggegevens vergeet.

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

Bij de eerste keer inloggen geeft je browser een waarschuwing dat je verbinding niet privé is. Klik op Advanced en klik op "Accept the risk and Continue" (in het geval van Firefox) of "Proceed to <YOURSERVERIP>(unsafe)" (in het geval van een Chromium-gebaseerde browser). Je ziet de waarschuwing nu niet meer.

Je wordt begroet door het volgende scherm.

OpenLiteSpeed Inloggen pagina

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 credentials die je net gemaakt hebt.

Je wordt begroet door het volgende scherm.

OpenLiteSpeed Admin Home

Ga van links naar de sectie Listeners. Je ziet de standaard luisteraars met poort 8080.

OpenLiteSpeed Luisteraars

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

OpenLiteSpeed Standaard Luisteraar

OpenLiteSpeed Luisteraar bewerken

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

OpenLiteSpeed Herstart 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 7.3. We maken onze eigen LiteSpeed App voor PHP 7.4. Je kunt later gemakkelijk tussen beide wisselen als je wilt.

Externe toepassingen

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

Externe app configuratie

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

LiteSpeed SAPI app

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 Definitie

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://<YOURSERVERIP>/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.

Overzicht virtuele hosts

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

Instellingen voor 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.

Virtuele Host Configuratie

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

Virtuele Hosts Algemeen Gedeelte

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

OpenliteSpeed Index Bestanden

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

Logboek virtuele gastheer

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

Klik op Save en klik dan op het plus teken in de sectie Access Log om een nieuw item toe te voegen. 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

OpenliteSpeed Toegangslogboek

Klik op Save als je klaar bent. Vervolgens moeten we Access Control instellen onder de sectieSecurity. Stel de volgende Waarden in.

Allowed List: *
Denied List: Not set

OpenliteSpeed Toegangscontrole

Klik op Save als je klaar bent. Vervolgens moeten we de Script Handler Definition instellen. Stel de volgende waarden in.

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

Script Handler Definitie

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

Herschrijfregeling

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 bij Virtual Host Mappings om een nieuwe mapping toe te voegen en stel de volgende waarden in.

Virtuele Host Toewijzingen

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

Het instellen van SSL in OpenLiteSpeed vereist dat we twee certificaten instellen. Een zelf-ondertekend certificaat voor de algemene server en een Let's Encrypt site-specifieke server.

Laten we eerst het zelf-ondertekend certificaat aanmaken.

$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
Generating a RSA private key
..++++
......................++++
writing new private key to 'key.pem'
-----
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) [AU]:
State or Province Name (full name) [Some-State]:
Locality Name (eg, city) []:
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (e.g. server FQDN or YOUR name) []:
Email Address []:

Je kunt door alle velden heen op enter drukken en ze leeg laten.

De certificaten worden nu opgeslagen in de map /home/user. We zullen deze informatie later nodig hebben.

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

$ sudo apt 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-09-04. 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 Luisteraar

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

Virtual Host: example.com
Domains: example.com

Virtuele Hosts in kaart brengen

Klik op Save wanneer je klaar bent.

Ga vervolgens naar Listeners >> SSL Listener >> SSL Tab >>SSL Private Key & Certificate (knop Bewerken) en vul de volgende waarden in voor het zelf-ondertekende certificaat dat we eerder maakten.

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

Zelf ondertekende SSL sleutel en certificaat

Ga daarna naar Virtual Hosts >> example.com >> SSL Tab >> SSL Private Key & Certificaat (knop Bewerken) en vul de volgende waarden in voor het Let's Encrypt certificaat.

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

Let's Encrypt SSL sleutel en certificaat

Klik op Save als 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.

OpenLiteSpeed Site Test

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