So installierst du den LOMP Stack (OpenLiteSpeed, MySQL und PHP) unter Ubuntu 24.04
OpenLiteSpeed ist eine schlanke und quelloffene Version des LiteSpeed Servers, der von LiteSpeed Technologies entwickelt wurde. Er unterstützt Apache Rewrite-Regeln, HTTP/2 und HTTP/3 sowie die Protokolle TLS v1.3 und QUIC. Er verfügt über ein WebGUI-basiertes Administrationspanel, wodurch er sich von anderen Servern unterscheidet und einfacher zu verwalten ist.
Der LOMP-Stack ist ein Akronym für Linux, OpenLiteSpeed, MySQL/MariaDB und PHP. Litespeed-Server sind für ihre Geschwindigkeit bekannt, vor allem in Verbindung mit PHP, das über die LiteSpeed Server Application Programming Interface (LSAPI) integriert wird. Der LiteSpeed PHP (LSPHP) Interpreter bedient dynamische PHP-Seiten über LSAPI.
Diese Anleitung zeigt dir, wie du einen OpenLiteSpeed Server auf Ubuntu 24.04 installierst.
Voraussetzungen
- Ein Server, auf dem Ubuntu 24.04 läuft.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Ein vollständig qualifizierter Domainname (FQDN) wie
example.com
, der auf den Server zeigt. - Stelle sicher, dass alles auf dem neuesten Stand ist.
$ sudo apt update $ sudo apt upgrade
- Ein paar Pakete, die dein System benötigt.
$ sudo apt install wget curl nano ufw software-properties-common dirmngr apt-transport-https gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Einige dieser Pakete sind vielleicht schon auf deinem System installiert.
Schritt 1 – Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Debian wird standardmäßig mit ufw (Uncomplicated Firewall) ausgeliefert.
Überprüfe, ob die Firewall aktiv ist.
$ sudo ufw status
Du wirst die folgende Ausgabe erhalten.
Status: inactive
Erlaube den SSH-Port, damit die Firewall die aktuelle Verbindung nicht unterbricht, wenn du sie aktivierst.
$ sudo ufw allow OpenSSH
Lasse auch HTTP- und HTTPS-Ports zu.
$ sudo ufw allow http $ sudo ufw allow https
Öffne die Ports, die mit Openlitespeed zu tun haben.
$ sudo ufw allow 7080/tcp
Aktiviere die Firewall
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Überprüfe den Status der Firewall erneut.
$ sudo ufw status
Du solltest eine ähnliche Ausgabe sehen.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere 7080/tcp ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6) 7080/tcp (v6) ALLOW Anywhere (v6)
Schritt 2 – Installiere OpenLiteSpeed
Wir werden OpenLiteSpeed installieren, indem wir den Quellcode kompilieren. Lade die OpenLiteSpeed-Quellcodedatei herunter. Den Link zur aktuellen Quellcodedatei findest du auf der offiziellen Downloadseite von OpenLiteSpeed. Die Version 1.7.19 ist die aktuell verfügbare stabile Version.
$ wget https://openlitespeed.org/packages/openlitespeed-1.7.19.src.tgz
Entpacke die Datei.
$ tar -zxf openlitespeed-*.tgz
Wechsle in das extrahierte Verzeichnis.
$ cd openlitespeed-1.7.19
Erstelle das Serverpaket.
$ sudo ./build.sh
Es kann sein, dass du gut 5-10 Minuten warten musst, bis der Prozess abgeschlossen ist. Ignoriere alle Warnungen, die du während des Prozesses erhältst. Wenn der Prozess abgeschlossen ist, erhältst du die folgende Ausgabe.
............... [100%] Linking CXX shared library modpagespeed.so /usr/bin/ld: warning: 140.x25519-asm-x86_64.o.o: missing .note.GNU-stack section implies executable stack /usr/bin/ld: NOTE: This behaviour is deprecated and will be removed in a future version of the linker [100%] Built target modpagespeed Start to pack files. -e Building finished, please run ./install.sh for installation. -e You may want to update the ols.conf to change the settings before installation. -e Enjoy.
Sobald der Vorgang abgeschlossen ist, öffne die Datei ols.conf
zur Bearbeitung.
$ sudo nano ols.conf
Bearbeite die Datei wie unten gezeigt.
#If you want to change the default values, please update this file. # SERVERROOT=/usr/local/lsws OPENLSWS_USER=nobody OPENLSWS_GROUP=nobody OPENLSWS_ADMIN=navjot OPENLSWS_EMAIL=navjot@example.com OPENLSWS_ADMINSSL=yes OPENLSWS_ADMINPORT=7080 USE_LSPHP7=yes DEFAULT_TMP_DIR=/tmp/lshttpd PID_FILE=/tmp/lshttpd/lshttpd.pid OPENLSWS_EXAMPLEPORT=8088 #You can set password here #OPENLSWS_PASSWORD=
Füge hier nicht dein Passwort ein. Wir werden das Passwort später über die Befehlszeile festlegen. Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Jetzt, wo OpenLiteSpeed erstellt ist, können wir es installieren.
$ sudo ./install.sh
Das Installationsskript installiert und aktiviert den Dienst lsws
für den Server. Wenn du fertig bist, erhältst du die folgende Ausgabe.
Updating webcache manager, please waiting ... Downloading latest shared code tar file... Checking tar file md5... Removing existing shared code directory... Extracting downloaded shared code... Removing local shared code tar file... Updating lscmctl script... Done! -e Installation finished, Enjoy! -e Your webAdmin password is kXjWTl5j, written to file /usr/local/lsws/adminpasswd.
Starte den OpenLiteSpeed-Server.
$ sudo systemctl start lsws
Überprüfe den Status des Dienstes.
$ sudo systemctl status lsws ? lshttpd.service - OpenLiteSpeed HTTP Server Loaded: loaded (/usr/lib/systemd/system/lshttpd.service; enabled; preset: enabled) Active: active (running) since Sun 2024-06-02 12:58:44 UTC; 3s ago Process: 52583 ExecStart=/usr/local/lsws/bin/lswsctrl start (code=exited, status=0/SUCCESS) Main PID: 52604 (litespeed) CGroup: /system.slice/lshttpd.service ??52604 "openlitespeed (lshttpd - main)" ??52610 "openlitespeed (lscgid)" ??52623 "openlitespeed (lshttpd - #01)" ??52624 lsphp Jun 02 12:58:42 lompserver systemd[1]: Starting lshttpd.service - OpenLiteSpeed HTTP Server... Jun 02 12:58:42 lompserver lswsctrl[52583]: [OK] litespeed: pid=52604. Jun 02 12:58:44 lompserver systemd[1]: Started lshttpd.service - OpenLiteSpeed HTTP Server.
Überprüfe die Version des installierten Servers.
$ /usr/local/lsws/bin/lshttpd -v LiteSpeed/1.7.19 Open (BUILD built: Tue Apr 16 15:14:26 UTC 2024) module versions: lsquic 3.3.2 modgzip 1.1 cache 1.66 mod_security 1.4 (with libmodsecurity v3.0.12)
Erstelle das Administrator-Passwort
Du kannst das Administratorkennwort verwenden, das du während der Installation erhalten hast. Du solltest jedoch dein eigenes erstellen, indem du es zurücksetzt. Führe das Skript zum Zurücksetzen des Passworts aus.
$ sudo /usr/local/lsws/admin/misc/admpass.sh
Du wirst die folgende Ausgabe erhalten. Wähle deinen Benutzernamen und gib ein sicheres Passwort ein.
Please specify the user name of administrator. This is the user name required to login the administration Web interface. User name [admin]: navjot 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!
Du kannst nun das neue Administrator-Passwort verwenden.
Öffne http://<YOURSERVERIP>:7080
, um auf das Administrationspanel von OpenLiteSpeed zuzugreifen. Bei der ersten Anmeldung warnt dein Browser, dass deine Verbindung nicht privat ist. Klicke auf „Erweitert“ und dann auf „Risiko akzeptieren und fortfahren“ (bei Firefox) oder „Weiter zu <YOURSERVERIP>(unsafe)
“ (bei Chromium-basierten Browsern). Du wirst die Warnung nicht mehr sehen.
Du solltest die Anmeldeseite sehen.
Gib die Anmeldedaten ein, die du zuvor festgelegt hast, und klicke auf die Schaltfläche Anmelden, um fortzufahren.
Du erhältst den folgenden Bildschirm.
Schritt 3 – MySQL installieren
Bevor wir mit der MySQL-Installation fortfahren, müssen wir das LiteSpeed-Repository aktualisieren. Das über das Installationsprogramm hinzugefügte Litespeed-Repository funktioniert nicht richtig.
Öffne die Datei /etc/apt/sources.list.d/lst_debian_repo.list
zum Bearbeiten.
$ sudo nano /etc/apt/sources.list.d/lst_debian_repo.list
Ändere den Inhalt der Datei, indem du den Namen der Ubuntu 24.04-Version (noble
) zur Repository-URL hinzufügst.
deb http://rpms.litespeedtech.com/debian/ noble main
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Installiere den MySQL-Server.
$ sudo apt install mysql-server
Der MySQL-Dienst wird nach der Installation automatisch gestartet und ausgeführt.
Überprüfe den Status des Dienstes.
$ sudo systemctl status mysql
Du erhältst die folgende Ausgabe.
? mysql.service - MySQL Community Server Loaded: loaded (/usr/lib/systemd/system/mysql.service; enabled; preset: enabled) Active: active (running) since Sun 2024-06-02 13:42:12 UTC; 8min ago Process: 57889 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS) Main PID: 57898 (mysqld) Status: "Server is operational" Tasks: 37 (limit: 2263) Memory: 370.6M (peak: 386.9M) CPU: 6.762s CGroup: /system.slice/mysql.service ??57898 /usr/sbin/mysqld Jun 02 13:42:11 lompserver systemd[1]: Starting mysql.service - MySQL Community Server...
Führe das MySQL-Sicherheitsskript aus.
$ sudo mysql_secure_installation
Du wirst aufgefordert, Validate Password Component
zu installieren. Klicke auf Y
, um fortzufahren.
Securing the MySQL server deployment. Connecting to MySQL using a blank password. VALIDATE PASSWORD COMPONENT can be used to test passwords and improve security. It checks the strength of password and allows the users to set only those passwords which are secure enough. Would you like to setup VALIDATE PASSWORD component? Press y|Y for Yes, any other key for No: y
Als Nächstes wirst du aufgefordert, die Stärke des Passworts zu wählen. Wähle 2
für Strong und fahre fort.
There are three levels of password validation policy: LOW Length >= 8 MEDIUM Length >= 8, numeric, mixed case, and special characters STRONG Length >= 8, numeric, mixed case, special characters and dictionary file Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Bei der MySQL-Installation wirst du nicht aufgefordert, ein Root-Passwort festzulegen, da der Standard-Authentifizierungstyp auth_socket
ist, der von der Authentifizierung deines Linux-Systems abhängt. Du kannst es jedoch später ändern.
Skipping password set for root as authentication with auth_socket is used by default. If you would like to use password authentication instead, this can be done with the "ALTER_USER" command. See https://dev.mysql.com/doc/refman/8.0/en/alter-user.html#alter-user-password-management for more information.
Als nächstes werden dir einige Fragen gestellt, um die Sicherheit von MySQL zu verbessern. Gib Y ein, um anonyme Benutzer zu entfernen, Remote-Root-Logins zu verbieten, die Testdatenbank zu entfernen und die Berechtigungstabellen neu zu laden.
By default, a MySQL installation has an anonymous user, allowing anyone to log into MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y Success. By default, MySQL 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? (Press y|Y for Yes, any other key for No) : 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? (Press y|Y for Yes, any other key for No) : y Success. All done!
Du kannst die MySQL-Shell aufrufen, indem du sudo mysql
in die Befehlszeile eingibst.
Schritt 4 – PHP installieren
Da wir unser Paket aus dem Quellcode erstellt haben, kompiliert und baut es eine alte Version von PHP, die nicht für den Einsatz empfohlen wird. Du kannst dies mit dem folgenden Befehl überprüfen.
$ /usr/local/lsws/fcgi-bin/lsphp -v PHP 5.6.40 (litespeed) (built: May 10 2023 23:03:31) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
Deshalb müssen wir die neueste Version von PHP kompilieren und installieren. Doch bevor wir fortfahren, müssen wir die Build-Tools installieren.
$ sudo apt install build-essential autoconf libtool bison re2c pkg-config
Der nächste Schritt ist die Installation der Pakete, die für den PHP-Build-Prozess benötigt werden.
$ sudo apt install libssl-dev libsqlite3-dev zlib1g-dev libcurl4-openssl-dev libonig-dev libzip-dev libmemcached-dev libreadline-dev libgmp-dev libpng-dev libjpeg-dev libwebp-dev libxpm-dev libicu-dev libfreetype6-dev libxslt-dev libldb-dev libtidy-dev libvips-dev libsodium-dev libavif-dev libldap2-dev libxml2-dev libkrb5-dev libc-client2007e-dev libpq-dev libargon2-1 libargon2-dev libbz2-dev libffi-dev libc-client-dev libpspell-dev flex libgmp3-dev libmcrypt-dev libmhash-dev freetds-dev libmysqlclient-dev libncurses5-dev libpcre3-dev libaspell-dev librecode-dev libsnmp-dev
Als Nächstes laden wir den PHP-Quellcode herunter. Wir laden die Version PHP 8.3.7 herunter, die zum Zeitpunkt der Erstellung dieses Artikels die neueste Version ist.
$ cd ~ $ wget https://www.php.net/distributions/php-8.3.7.tar.gz
Entpacke die Dateien.
$ tar -xzf php-8.3.7.tar.gz
Wechsle in das heruntergeladene Verzeichnis.
$ cd php-8.3.7
Als Nächstes führst du das configure-Skript mit den folgenden Optionen aus. Die Option --enable-litespeed
ist wichtig.
$ sudo ./configure --prefix=/usr/local/lsws/lsphp83 --enable-bcmath --enable-calendar --enable-exif --enable-ftp --enable-gd --enable-intl --enable-mbregex --enable-mbstring --enable-mysqlnd --enable-opcache --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --with-avif --with-curl --with-ffi --with-freetype --with-gettext --with-gmp --with-imap --with-imap-ssl --with-jpeg --with-kerberos --with-libxml --with-ldap --with-mysqli --with-mysql-sock=/run/mysqld/mysqld.sock --with-openssl --with-password-argon2 --with-pdo-mysql=mysqlnd --with-pdo-pgsql=/usr/bin/pg_config --with-pear --with-pspell --with-readline --with-sodium --with-tidy --with-webp --with-xpm --with-xsl --with-zip --with-zlib --enable-litespeed
Wenn das Skript fertig ist, solltest du folgende Ausgabe erhalten.
+--------------------------------------------------------------------+ | License: | | This software is subject to the PHP License, available in this | | distribution in the file LICENSE. By continuing this installation | | process, you are bound by the terms of this license agreement. | | If you do not agree with the terms of this license, you must abort | | the installation process at this point. | +--------------------------------------------------------------------+ Thank you for using PHP.
Kompiliere den Quellcode.
$ sudo make -j $(nproc)
Wenn du fertig bist, erhältst du eine ähnliche Ausgabe.
Generating phar.php Generating phar.phar PEAR package PHP_Archive not installed: generated phar will require PHP's phar extension be enabled. directorytreeiterator.inc phar.inc invertedregexiterator.inc directorygraphiterator.inc pharcommand.inc clicommand.inc Build complete. Don't forget to run 'make test'.
Sobald du fertig bist, führe den folgenden Befehl aus, um die Version zu überprüfen.
$ ./sapi/litespeed/php -v PHP 8.3.7 (litespeed) (built: Jun 3 2024 05:28:43) Copyright (c) The PHP Group Zend Engine v4.3.7, Copyright (c) Zend Technologies
Installiere PHP.
$ sudo make install
Du erhältst die folgende Ausgabe.
Installing shared extensions: /usr/local/lsws/lsphp83/lib/php/extensions/no-debug-non-zts-20230831/ Installing PHP CLI binary: /usr/local/lsws/lsphp83/bin/ Installing PHP CLI man page: /usr/local/lsws/lsphp83/php/man/man1/ Installing PHP LiteSpeed binary: /usr/local/lsws/lsphp83/bin/ Installing phpdbg binary: /usr/local/lsws/lsphp83/bin/ Installing phpdbg man page: /usr/local/lsws/lsphp83/php/man/man1/ Installing PHP CGI binary: /usr/local/lsws/lsphp83/bin/ Installing PHP CGI man page: /usr/local/lsws/lsphp83/php/man/man1/ Installing build environment: /usr/local/lsws/lsphp83/lib/php/build/ Installing header files: /usr/local/lsws/lsphp83/include/php/ Installing helper programs: /usr/local/lsws/lsphp83/bin/ program: phpize program: php-config Installing man pages: /usr/local/lsws/lsphp83/php/man/man1/ page: phpize.1 page: php-config.1 Installing PEAR environment: /usr/local/lsws/lsphp83/lib/php/ [PEAR] Archive_Tar - installed: 1.4.14 [PEAR] Console_Getopt - installed: 1.4.3 [PEAR] Structures_Graph- installed: 1.1.1 [PEAR] XML_Util - installed: 1.4.5 warning: pear/PEAR dependency package "pear/Archive_Tar" installed version 1.4.14 is not the recommended version 1.4.4 [PEAR] PEAR - installed: 1.10.15 Wrote PEAR system config file at: /usr/local/lsws/lsphp83/etc/pear.conf You may want to add: /usr/local/lsws/lsphp83/lib/php to your php.ini include_path Installing PDO headers: /usr/local/lsws/lsphp83/include/php/ext/pdo/
Überprüfe die PHP-Installation. Es gibt zwei PHP-Binärdateien im Verzeichnis /usr/local/lsws/lsphp83/bin
. Das eine ist die normale php
, die Kommandozeilenversion, und das andere ist die Litespeed-Version lsphp
. Die zweite ist die, die wir verwenden werden.
$ /usr/local/lsws/lsphp83/bin/lsphp -v PHP 8.3.7 (litespeed) (built: Jun 3 2024 05:28:43) Copyright (c) The PHP Group Zend Engine v4.3.7, Copyright (c) Zend Technologies
Du kannst die Liste der aktivierten PHP-Module überprüfen.
$ /usr/local/lsws/lsphp83/bin/php --modules [PHP Modules] bcmath calendar Core ctype curl date dom exif FFI fileinfo filter ftp gd gettext gmp hash iconv imap intl json ldap libxml mbstring mysqli mysqlnd openssl pcre PDO pdo_mysql pdo_pgsql pdo_sqlite Phar posix pspell random readline Reflection session shmop SimpleXML soap sockets sodium SPL sqlite3 standard sysvsem sysvshm tidy tokenizer xml xmlreader xmlwriter xsl zip zlib [Zend Modules]
Kopiere die Datei php.ini-production
aus dem Installationsordner in den Ordner /usr/local/lsws/lsphp83/lib
.
$ sudo cp php.ini-production /usr/local/lsws/lsphp83/lib/php.ini
Wir werden OpenLiteSpeed später für die Zusammenarbeit mit PHP konfigurieren.
Öffne die Datei php.ini
zum Bearbeiten.
$ sudo nano /usr/local/lsws/lsphp83/lib/php.ini
Suche die Variable include_path
und ändere ihren Wert wie unten gezeigt.
$ ;;;;;;;;;;;;;;;;;;;;;;;;; ; Paths and Directories ; ;;;;;;;;;;;;;;;;;;;;;;;;; ; UNIX: "/path1:/path2" include_path = "/usr/local/lsws/lsphp83/lib/php"
Wenn du fertig bist, speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Schritt 5 – MySQL konfigurieren
Melde dich in der MySQL-Shell an.
$ sudo mysql
Erstelle eine Testdatenbank. Ersetze testdb
durch den entsprechenden Datenbanknamen deiner Wahl.
mysql> CREATE DATABASE testdb;
Erstelle einen Testbenutzer. Ersetze testuser
durch einen geeigneten Benutzernamen. Ersetze Your_Password123
durch ein sicheres Passwort.
mysql> CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'Your_Password123';
Erteile dem Benutzer alle Rechte für die Datenbank.
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser'@'localhost';
Lösche die Benutzerrechte.
mysql> FLUSH PRIVILEGES;
Beende die MySQL-Shell.
mysql> exit
Schritt 6 – OpenLiteSpeed konfigurieren
Ändere den HTTP-Port wieder auf 80
Ändern wir den Standard-HTTP-Port auf 80. Melde dich mit den soeben erstellten Anmeldedaten in deinem Administrationsbereich unter http://<YOURSERVERIP>:7080
an.
Rufe den Abschnitt Listeners auf der linken Seite auf. Du wirst die Standard-Listener mit dem Port 8080
sehen.
Klicke auf die Schaltfläche Anzeigen, um die detaillierte Konfiguration zu sehen. Auf der nächsten Seite unter Listener Standard > Allgemeine Seite klickst du auf das Symbol Bearbeiten und änderst den Port von 8080
in 80
.
Klicke auf Speichern und starte den Server neu, indem du auf die Schaltfläche Gnadenloser Neustart klickst.
Öffne die URL http://<YOURSERVERIP>
in deinem Browser und du solltest die folgende Seite erhalten.
Schritt 7 – PHP konfigurieren
In diesem Schritt müssen wir unsere Kopie von PHP 8.3 mit dem Server verknüpfen.
Klicke auf der linken Seite auf den Abschnitt Serverkonfiguration und dann auf den Reiter Externe App. Du wirst eine bestehende LiteSpeed App für PHP sehen. Wir werden einige Änderungen an ihr vornehmen.
Klicke auf die Schaltfläche Bearbeiten, um die PHP-App zu bearbeiten.
Als Nächstes musst du die Konfiguration wie unten gezeigt anpassen. Lasse alle anderen Felder leer.
Name: lsphp 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: lsphp83/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
Klicke auf Speichern, wenn du fertig bist.
Jetzt, wo wir unsere eigene PHP 8.3 App erstellt haben, müssen wir dem Server sagen, dass er sie benutzen soll. Da wir den Standardeintrag bearbeitet haben, ist er bereits konfiguriert. Starte den Server neu, indem du auf die Schaltfläche Gnadenloser Neustart klickst.
Um zu testen, ob dein PHP korrekt umgestellt wurde, besuche http://<YOURSERVERIP>/phpinfo.php
in deinem Browser.
PHP neu starten
Wenn du auf OpenLiteSpeed die php.ini bearbeitest oder ein neues PHP-Modul installierst, werden die Änderungen bei einem Neustart des Servers nicht angezeigt. Dafür musst du den PHP-Prozess neu starten. Als Erstes musst du die Prozess-IDs für den lsphp
Prozess ausfindig machen.
$ ps aux | grep lsphp nobody 120093 0.0 0.8 123772 32920 ? S 06:35 0:00 lsphp nobody 120111 0.0 0.4 123772 18980 ? Ss 06:38 0:00 lsphp navjot 120139 0.0 0.0 6544 2304 pts/0 S+ 06:44 0:00 grep --color=auto lsphp
Beende die Prozesse von lsphp
manuell.
$ sudo kill -9 120093 $ sudo kill -9 120111
Starte den Server neu.
$ sudo systemctl restart lsws
Schritt 8 – VirtualHost erstellen
Zuerst müssen wir Verzeichnisse für unseren virtuellen Host erstellen.
$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p
Das Verzeichnis html
wird die öffentlichen Dateien enthalten und das Verzeichnis logs
die Serverprotokolle.
Als Nächstes öffnest du die Verwaltungskonsole, rufst links den Bereich Virtuelle Hosts auf und klickst auf die Schaltfläche Hinzufügen.
Fülle die Werte wie angegeben aus
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
Klicke auf die Schaltfläche Speichern, wenn du fertig bist. Du bekommst die folgende Fehlermeldung, weil die Konfigurationsdatei noch nicht existiert. Klicke auf den Link, um die Konfigurationsdatei zu erstellen.
Klicke erneut auf die Schaltfläche Speichern, um die Erstellung des virtuellen Hosts abzuschließen.
Sobald der virtuelle Host erstellt ist, gehe zu Virtuelle Hosts -> Wähle Virtuellen Host(example.com) -> Allgemein und ändere die Konfiguration wie angegeben.
Document Root: $VH_ROOT/html/ Domain Name: example.com Enable GZIP Compression: Yes Enable Brotli Compression: Yes
Klicke auf die Schaltfläche Speichern, wenn du fertig bist. Als nächstes müssen wir die Indexdateien einrichten. Klicke auf die Schaltfläche Bearbeiten neben Indexdateien unter dem Abschnitt Allgemein. Stelle die folgenden Optionen ein.
Use Server Index Files: No Index files: index.php, index.html, index.htm Auto Index: No
Klicke auf Speichern, wenn du fertig bist. Als Nächstes müssen wir die Logdateien auswählen. Gehe zum Abschnitt Log, klicke auf Bearbeiten unter Virtual Host Log und trage die folgenden Werte ein. Lass die anderen Einstellungen unverändert.
Use Server’s Log: Yes File Name: $VH_ROOT/logs/error.log Log Level: ERROR Rolling Size (bytes): 10M Keep Days: 30 Compress Archive: Not Set
Du kannst als Log Level DEBUG
wählen, wenn du auf einem Entwicklungsrechner arbeitest.
Klicke auf Speichern und dann auf das Pluszeichen im Abschnitt Zugriffsprotokoll, um einen neuen Eintrag hinzuzufügen. Fülle 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 Compress Archive: Not Set Bytes log: Not Set
Klicke auf Speichern, wenn du fertig bist. Als Nächstes müssen wir die Zugriffskontrolle im Abschnitt Sicherheit konfigurieren. Lege die folgenden Werte fest.
Allowed List: * Denied List: Not set
Klicke auf Speichern, wenn du fertig bist. Als Nächstes müssen wir die Definition des Skript-Handlers festlegen. Klicke auf das Pluszeichen (+), um eine neue Definition hinzuzufügen. Lege die folgenden Werte fest.
Suffixes: php Handler Type: LiteSpeed SAPI Handler Name: [Server Level]: lsphp
Klicke auf Speichern, wenn du fertig bist. Als Nächstes musst du die Rewrite Control im Abschnitt Rewrite festlegen. Stelle die folgenden Werte ein.
Enable Rewrite: Yes Auto Load from .htaccess: Yes Log Level: Not Set
Klicke auf Speichern, wenn du fertig bist. Zu guter Letzt müssen wir die Listener einstellen. Gehe zum Abschnitt Listeners und klicke auf die Schaltfläche View neben Default Listener. Klicke dann auf die Schaltfläche Hinzufügen unter Virtuelle Host-Zuordnungen, um eine neue Zuordnung hinzuzufügen, und lege die folgenden Werte fest.
Virtual Host: example.com Domains: example.com
Klicke auf Speichern, wenn du fertig bist. Klicke nun auf die Schaltfläche Gnadenloser Neustart, um alle oben genannten Änderungen zu übernehmen und den Server neu zu starten.
Schritt 9 – SSL installieren
Um SSL in OpenLiteSpeed einzurichten, müssen wir zwei Zertifikate einrichten. Ein selbstsigniertes Zertifikat für den gesamten Server und ein Let’s Encrypt-Zertifikat für den standortspezifischen Server.
Im Administrationsbereich ist bereits ein selbstsigniertes Zertifikat vorinstalliert, das im Verzeichnis /usr/local/lsws/admin/conf
zu finden ist.
Erstellen wir zunächst das selbstsignierte Zertifikat für den Gesamtserver.
$ cd ~ $ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
Du wirst eine ähnliche Ausgabe erhalten.
----- 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) []:example.com Email Address []:navjot@example.com
Du kannst in allen Feldern die Eingabetaste drücken und sie leer lassen. Gib deine Domain für den Common Name und deine E-Mail-Adresse ein.
Erstelle das Verzeichnis für die selbstsignierten Zertifikate.
$ sudo mkdir /usr/local/lsws/certs
Kopiere das Zertifikat in das Verzeichnis /usr/local/lsws/certs
.
$ sudo mv *.pem /usr/local/lsws/certs
Wir müssen Certbot installieren, um die von Let’s Encrypt angebotenen kostenlosen SSL-Zertifikate zu generieren.
Du kannst Certbot entweder über das Repository von Debian installieren oder die neueste Version mit dem Snapd-Tool herunterladen. Wir werden die Snapd-Version verwenden. Bei Ubuntu 24.04 ist Snapd bereits vorinstalliert.
Führe die folgenden Befehle aus, um sicherzustellen, dass deine Version von Snapd auf dem neuesten Stand ist.
$ sudo snap install core $ sudo snap refresh core
Gib den folgenden Befehl ein, um Certbot zu installieren.
$ sudo snap install --classic certbot
Stelle mit folgendem Befehl sicher, dass der Certbot-Befehl ausgeführt werden kann, indem du einen symbolischen Link auf das Verzeichnis /usr/bin
erstellst.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Überprüfe die Installation.
$ certbot --version certbot 2.10.0
Führe den folgenden Befehl aus, um ein SSL-Zertifikat zu erzeugen.
Beziehe das SSL-Zertifikat. Das Webroot-Verzeichnis wird auf das zuvor konfigurierte öffentliche HTML-Verzeichnis gesetzt.
$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d example.com
Erstelle ein Diffie-Hellman-Gruppenzertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Überprüfe den Certbot-Erneuerungsplanerdienst.
$ sudo systemctl list-timers
Du findest snap.certbot.renew.service
als einen der Dienste, die zur Ausführung vorgesehen sind.
NEXT LEFT LAST PASSED UNIT ACTIVATES Mon 2024-06-03 07:20:00 UTC 5min Mon 2024-06-03 07:10:02 UTC 4min 11s ago sysstat-collect.timer sysstat-collect.service Mon 2024-06-03 08:29:00 UTC 1h 14min - - snap.certbot.renew.timer snap.certbot.renew.service Mon 2024-06-03 08:50:32 UTC 1h 36min Mon 2024-06-03 07:04:04 UTC 10min ago fwupd-refresh.timer fwupd-refresh.service
Um zu überprüfen, ob die SSL-Erneuerung einwandfrei funktioniert, führe einen Probelauf des Prozesses durch.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, ist alles in Ordnung. Dein Zertifikat wird automatisch erneuert.
Öffne nun die Verwaltungskonsole, gehe zu Listeners >> Add New Listener und füge die folgenden Werte hinzu.
Listener Name: SSL IP Address: ANY IPv4 Port: 443 Secure: Yes
Klicke auf Speichern, wenn du fertig bist. Als Nächstes gehst du zum Abschnitt Virtuelle Host-Zuordnungen unter dem SSL-Listener, indem du auf SSL klickst, auf die Schaltfläche Hinzufügen klickst und die folgenden Werte einträgst.
Virtual Host: example.com Domains: example.com
Klicke auf Speichern, wenn du fertig bist. Als Nächstes gehst du zu Listeners >> SSL Listener >> SSL Tab >>SSL Private Key & Certificate (Schaltfläche Edit) und gibst die folgenden Werte für das selbstsignierte Zertifikat ein, das wir zuvor erstellt haben.
Private Key File: $SERVER_ROOT/certs/key.pem Certificate File: $SERVER_ROOT/certs/cert.pem Chained Certificate: Yes
Klicke auf Speichern, wenn du fertig bist. Gehe dann zu Listeners >> SSL Listener >> Registerkarte SSL >> SSL-Protokoll (Schaltfläche Bearbeiten) und gib die folgenden Werte für das SSL-Protokoll und die Verschlüsselungsdetails ein.
Protocol Version: TLS v1.2 TLS v1.3 Ciphers: ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305 Enable ECDH Key Exchange: Yes Enable DH Key Exchange: Yes DH Parameter: /etc/ssl/certs/dhparam.pem
Klicke auf Speichern, wenn du fertig bist. Als nächstes gehst du zu Virtuelle Hosts >> example.com >> Registerkarte SSL >> SSL Private Key & Certificate (Schaltfläche Bearbeiten) und gibst die folgenden Werte für das Let’s Encrypt-Zertifikat ein.
Private Key File: /etc/letsencrypt/live/example.com/privkey.pem Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem Chained Certificate: Yes
Klicke auf Speichern, wenn du fertig bist. Als nächstes gehst du zu Virtuelle Hosts >> example.com >> Registerkarte SSL >> OCSP Stapling (Schaltfläche Bearbeiten) und gibst die folgenden Werte ein, um OCSP Stapling zu aktivieren.
Enable OCSP Stapling: Yes OCSP Response Max Age(Secs): 300 OCSP Responder: http://r3.o.lencr.org
Klicke auf Speichern, wenn du fertig bist. Als nächstes gehst du zu Virtuelle Hosts >> example.com >> Registerkarte SSL >> Sicherheit (Schaltfläche Bearbeiten) und gibst die folgenden Werte ein, um das HTTP3/QUIC-Protokoll zu aktivieren.
ALPN: Enable HTTP/2 and HTTP/3 Enable HTTP3/QUIC: Yes
Die anderen Optionen brauchen wir nicht zu aktivieren, da sie standardmäßig aktiviert sind.
Klicke auf Speichern, wenn du fertig bist.
Starte den Server neu, indem du auf die Schaltfläche Gnadenloser Neustart klickst.
Schritt 10 – Testseite
Erstelle eine Testdatei in deinem html
Verzeichnis.
$ sudo nano /usr/local/lsws/example.com/html/index.php
Füge 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 = "Your_Password123"; // 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>
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst. Öffne die URL https://example.com
in einem Browser und du solltest die folgende Seite sehen.
Die Testseite ist jetzt voll funktionsfähig. Du kannst den Server nun für dynamische PHP-Websites und -Anwendungen nutzen.
Fazit
Damit ist unsere Anleitung zur Installation von LOMP Stack (OpenLiteSpeed, MySQL und PHP) auf einem Ubuntu 24.04 Server abgeschlossen. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.