Wie installiert und konfiguriert man OpenLiteSpeed Server zusammen mit MariaDB und PHP unter Ubuntu 20.04

OpenLiteSpeed ist eine schlanke und Open-Source-Version des LiteSpeed-Servers, die von LiteSpeed Technologies entwickelt wurde. Es wird mit einer WebGUI-basierten Administrationsoberfläche geliefert, wodurch es sich von anderen Servern unterscheidet und einfacher zu verwalten ist.

In diesem Tutorial werden wir lernen, wie man OpenLiteSpeed Server auf Ubuntu 20.04 zusammen mit PHP 7.4 und MariaDB Server installiert.

Voraussetzungen

  • Auf Ubuntu 20.04 basierender Webserver.
  • Ein Nicht-Root-Benutzerkonto mit sudo-Berechtigungen.

Aktualisieren Sie Ihr System.

$ sudo apt update
$ sudo apt upgrade

Schritt 1 – Konfigurieren der Firewall

Bevor wir mit dem Tutorial beginnen, müssen wir die Unkomplizierte Firewall (UFW) konfigurieren, die normalerweise standardmäßig aktiviert ist. Lassen Sie uns zuerst den Status der Firewall überprüfen.

Wir müssen SSH, HTTP, HTTPS und die Ports 7080, 8088 für die Firewall aktivieren.

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

Überprüfen Sie den Status der 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)     

Wenn es nicht funktioniert, dann starten Sie die Firewall.

$ sudo ufw enable

Schritt 2 – OpenLiteSpeed installieren

Es gibt verschiedene Versionen von OpenLiteSpeed, die Sie installieren können. Empfohlene Versionen sind aus der 1.6.x oder 1.7.x Serie zum Zeitpunkt der Erstellung dieses Tutorials.

Wir werden für unser Tutorial das offizielle OpenLiteSpeed Repository verwenden, das nur die Version 1.6.x verwaltet.

Fügen Sie den OpenLiteSpeed-Repository-Schlüssel hinzu.

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

Fügen Sie das Repository hinzu.

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

Aktualisieren Sie das Repository.

$ sudo apt update

OpenLiteSpeed installieren

$ sudo apt install openlitespeed

Überprüfen Sie den Status des Servers.

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

Wenn er nicht läuft, können Sie mit dem folgenden Befehl starten.

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

Öffnen http://<YOURSERVERIP>:8088Sie für den Zugriff auf Ihren Webserver. Sie sollten die folgende Seite sehen.

OpenLiteSpeed-Standardseite

Schritt 3 – PHP installieren

Der OpenLiteSpeed-Server wird mit PHP 7.3 ausgeliefert, das voraktiviert ist. Wir wollen aber PHP 7.4 verwenden, daher werden wir unsere eigene Kopie installieren.

Installieren Sie PHP 7.4 zusammen mit einigen zusätzlichen Paketen.

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

Überprüfen Sie Ihre PHP-Installation.

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

Sie können prüfen, ob die PHP-Module aktiviert sind.

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

Wir werden PHP später für die Zusammenarbeit mit OpenLiteSpeed konfigurieren.

Schritt 4 – MariaDB installieren

Installieren Sie den MariaDB-Server.

$ sudo apt install mariadb-server

Starten und aktivieren Sie den MariaDB-Dienst.

$ sudo systemctl start mariadb
$ sudo systemctl enable mariadb

Sichern Sie Ihre MariaDB-Installation. Dieses Skript wird Ihr Root-Passwort setzen, anonyme Benutzer entfernen, die entfernte Root-Anmeldung verbieten und Testtabellen löschen. Wählen Sie ein sicheres Passwort und beantworten Sie die Fragen wie unten beschrieben.

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

Sobald dies geschehen ist, können Sie sich mit dem folgenden Befehl in die MySQL-Shell einloggen.

$ sudo mysql -u root -p

Erstellen Sie eine Testdatenbank und einen Benutzer mit Zugriffsberechtigung. Ersetzen Sie testdbund testuserdurch entsprechende Namen für Ihre Einrichtung. Ersetzen Sie passworddurch ein starkes Passwort.

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

Beenden Sie die MySQL-Shell.

exit

Schritt 5 – Konfigurieren von OpenLiteSpeed

Verwaltungskonsole konfigurieren

Legen Sie die Anmeldedaten für das Administrator-Panel fest.

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

Sie können diesen Befehl auch verwenden, falls Sie Ihre Anmeldedaten vergessen haben.

Um auf das Administrationspanel zuzugreifen, öffnen Sie http://<YOURSERVERIP>:7080.

Bei Ihrer ersten Anmeldung gibt Ihr Browser Warnungen aus, dass Ihre Verbindung nicht privat ist. Klicken Sie auf „Erweitert“ und dann auf „Risiko akzeptieren und fortfahren“ (im Falle von Firefox) oder „Weiter zu <YOURSERVERIP>(unsafe)“ (im Falle eines Browsers auf Chrombasis). Sie werden die Warnung nicht mehr sehen.

Sie werden auf dem folgenden Bildschirm begrüsst.

OpenLiteSpeed-Anmeldeseite

Schalten Sie den HTTP-Port wieder auf 80

Lassen Sie uns den Standard-HTTP-Port auf 80 ändern. Melden Sie sich mit den soeben erstellten Anmeldedaten in Ihrem Administrationsbereich unter at http://<YOURSERVERIP>:7080an.

Sie werden vom folgenden Bildschirm begrüßt.

OpenLiteSpeed Admin Startseite

Besuchen Sie die Listeners-Sektion von links. Sie sehen die Standard-Hörer mit Port 8080.

OpenLiteSpeed-Hörer

Klicken Sie auf die Schaltfläche Ansicht, um Details zur Konfiguration anzuzeigen. Klicken Sie auf der nächsten Seite unter Listener Default > General Page auf das Symbol Editieren und ändern Sie den Port von 8080 auf 80.

OpenLiteSpeed Standard-Hörer

OpenLiteSpeed-Hörer bearbeiten

Klicken Sie auf Speichern und starten Sie dann den Server neu, indem Sie auf die Schaltfläche Graceful restart klicken.

OpenLiteSpeed Neustart-Server

Schritt 6 – PHP konfigurieren

In diesem Schritt müssen wir unsere Kopie von PHP 7.4 mit dem Server assoziieren.

Klicken Sie auf den Abschnitt Serverkonfiguration auf der linken Seite und dann auf die Registerkarte Externe Anwendung. Sie werden eine bestehende LiteSpeed App für PHP 7.3 sehen. Wir werden unsere eigene LiteSpeed App für PHP 7.4 erstellen. Sie können später leicht zwischen ihnen wechseln, wenn Sie möchten.

Externe Anwendungen

Klicken Sie auf die Schaltfläche Hinzufügen, um eine neue Anwendung zu erstellen. Wählen Sie für den Typ LiteSpeed SAPI App und klicken Sie auf Weiter.

Konfiguration externer Anwendungen

Fügen Sie als nächstes die folgende Konfiguration hinzu. Lassen Sie alle anderen Felder leer.

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

Klicken Sie auf Speichern, wenn Sie fertig sind.

LiteSpeed SAPI-Anwendung

Nun, da wir unsere eigene, auf PHP 7.4 basierende Anwendung erstellt haben, müssen wir dem Server mitteilen, dass er sie verwenden soll.

Gehen Sie zum Register Skript-Handler und bearbeiten Sie den lsphp-Handler. Wechseln Sie im Drop-Down-Menü auf lsphp74den Namen des Handlers.

Script Handler Definition

Klicken Sie auf Speichern und starten Sie dann den Server neu, indem Sie auf die Schaltfläche Anmutiger Neustart klicken.

Um zu testen, ob Ihr PHP korrekt umgestellt wurde, besuchen Sie http://<YOURSERVERIP>/phpinfo.phpIhren Browser.

PHP-Informationen

Schritt 7 – Virtuellen Host einrichten

Zuerst müssen wir Verzeichnisse für unseren virtuellen Host erstellen.

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

Das htmlVerzeichnis enthält die öffentlichen Dateien und das logsVerzeichnis enthält die Serverprotokolle.

Als nächstes öffnen Sie die Admin-Konsole und greifen von links auf den Abschnitt Virtuelle Hosts zu und klicken auf die Schaltfläche Hinzufügen.

Zusammenfassung der virtuellen Gastgeber

Geben Sie die Werte wie angegeben ein

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

Einstellungen für virtuelle Hosts

Klicken Sie auf die Schaltfläche Speichern, wenn Sie fertig sind. Sie erhalten den folgenden Fehler, weil die Konfigurationsdatei ab jetzt nicht existiert. Klicken Sie auf den Link, um die Konfigurationsdatei zu erstellen.

Konfiguration des virtuellen Hosts

Klicken Sie erneut auf die Schaltfläche Speichern, um die Erstellung des virtuellen Hosts abzuschließen.

Sobald der virtuelle Host erstellt ist, gehen Sie zu Virtual Hosts -> Wählen Sie Virtual Host(example.com) -> General und ändern Sie die Konfiguration wie angegeben.

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

Virtueller Gastgeber Allgemeine Sektion

Klicken Sie auf die Schaltfläche Speichern, wenn Sie fertig sind. Als nächstes müssen wir Indexdateien einrichten. Klicken Sie auf die Schaltfläche Bearbeiten unter Indexdateien unterhalb der Sektion Allgemein. Stellen Sie die folgenden Optionen ein.

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

OpenliteSpeed Index-Dateien

Klicken Sie auf Speichern, wenn Sie fertig sind. Als nächstes müssen wir Log files wählen. Gehen Sie zum Abschnitt Log und klicken Sie auf Edit against Virtual Host Log und geben Sie die folgenden Werte ein.

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

Virtuelles Host-Protokoll

Sie können die Log-Ebene so DEBUGwählen, als ob Sie sich auf einem Produktions-/Entwicklungsrechner befinden.

Klicken Sie auf Speichern und dann auf das Pluszeichen im Abschnitt Zugriffsprotokoll, um einen neuen Eintrag hinzuzufügen. Geben Sie die folgenden Werte ein.

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

Klicken Sie auf Speichern, wenn Sie fertig sind. Als nächstes müssen wir die Zugriffskontrolle unter dem Abschnitt Sicherheit konfigurieren. Stellen Sie die folgenden Werte ein.

Allowed List: *
Denied List: Not set

OpenliteSpeed-Zugangskontrolle

Klicken Sie auf Speichern, wenn Sie fertig sind. Als nächstes müssen wir die Definition des Script-Handlers festlegen. Stellen Sie die folgenden Werte ein.

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

Script Handler Definition

Als nächstes müssen wir die Rewrite-Kontrolle im Abschnitt Rewrite einstellen. Stellen Sie die folgenden Werte ein.

Rewrite-Kontrolle

Und schließlich müssen wir die Zuhörer einstellen. Gehen Sie zum Abschnitt Listeners und klicken Sie auf die Schaltfläche View gegen Default Listener. Klicken Sie dann auf die Schaltfläche Add unter Virtual Host Mappings, um eine neue Zuordnung hinzuzufügen und die folgenden Werte einzustellen.

Virtuelle Host-Zuordnungen

Klicken Sie auf Speichern, wenn Sie fertig sind. Klicken Sie nun auf die Schaltfläche Graceful restart, um alle obigen Änderungen zu übernehmen und den Server neu zu starten.

Schritt 8 – SSL einrichten

Die Einrichtung von SSL in OpenLiteSpeed erfordert die Einrichtung von zwei Zertifikaten. Ein selbstsigniertes Zertifikat für den gesamten Server und ein Let’s Encrypt standortspezifischer Server.

Lassen Sie uns zuerst das selbstsignierte Zertifikat erstellen.

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

Sie können die Eingabetaste durch alle Felder drücken und sie leer lassen.

Die Zertifikate werden nun im /home/userVerzeichnis gespeichert. Wir werden diese Informationen später benötigen.

Um Let’s Encrypt verwenden zu können, müssen wir das Tool Certbot installieren.

$ sudo apt install certbot

Beziehen Sie das SSL-Zertifikat.

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

Folgen Sie der interaktiven Eingabeaufforderung.

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

Öffnen Sie nun die Admin-Konsole und gehen Sie zu Listeners >> Add New Listener und fügen Sie die folgenden Werte hinzu.

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

SSL Listener

Klicken Sie auf Speichern, wenn Sie fertig sind. Gehen Sie dann zum Abschnitt Virtual Host Mappings unter dem SSL-Listener, indem Sie auf SSL klicken, klicken Sie auf die Schaltfläche Add und geben Sie die folgenden Werte ein.

Virtual Host: example.com
Domains: example.com

Virtuelle Host-Zuordnung

Klicken Sie auf Speichern, wenn Sie fertig sind.

Als Nächstes gehen Sie zu Listeners >> SSL Listener >> Registerkarte SSL >>SSL Private Key & Certificate (Schaltfläche Bearbeiten) und geben Sie die folgenden Werte für das von uns zuvor erstellte selbstsignierte Zertifikat ein.

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

Selbstsignierter SSL-Schlüssel und -Zertifikat

Als nächstes gehen Sie zu Virtuelle Hosts >> example.com >> Registerkarte SSL >> Privater SSL-Schlüssel & Zertifikat (Schaltfläche Bearbeiten) und füllen die folgenden Werte mit dem Let’s Encrypt-Zertifikat aus.

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

Verschlüsseln wir SSL-Schlüssel und -Zertifikat

Klicken Sie auf Speichern, wenn Sie fertig sind.

Starten Sie den Server neu, indem Sie auf die Schaltfläche Graceful restart klicken.

Schritt 9 – Test Site

Erstellen Sie eine Testdatei in Ihrem htmlVerzeichnis.

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

Fügen Sie den folgenden Code in den Nano-Editor ein.

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

Besuchen Sie Ihre Website unter https://example.comin einem Browser und Sie sollten die folgende Seite sehen.

OpenLiteSpeed-Standorttest

Das ist alles für dieses Tutorial. Wenn Sie Fragen haben, stellen Sie diese in den Kommentaren unten.

Das könnte Dich auch interessieren …