Come installare LOMP Stack (OpenLiteSpeed, MySQL e PHP) su Rocky Linux 9
OpenLiteSpeed è una versione leggera e open source del LiteSpeed Server sviluppata da LiteSpeed Technologies. Supporta le regole Apache Rewrite, HTTP/2 e HTTP/3, nonché i protocolli TLS v1.3 e QUIC. Viene fornito con un pannello di amministrazione basato su WebGUI, che lo rende diverso dagli altri server e più facile da gestire.
LOMP Stack è l'acronimo di Linux, OpenLiteSpeed, MySQL/MariaDB e PHP. I server Litespeed sono noti per la loro velocità, in particolare con PHP che si integra utilizzando l'interfaccia di programmazione dell'applicazione LiteSpeed Server (LSAPI). L'interprete LiteSpeed PHP (LSPHP) serve pagine PHP dinamiche tramite LSAPI.
Questo tutorial ti mostrerà passo dopo passo come installare un server LOMP su una macchina Rocky Linux 9.
Prerequisiti
Un server che esegue Rocky Linux 9.
Un utente non root con privilegi sudo.
Un nome di dominio completo (FQDN) come example.com
che punta al server.
SELinux non ha bisogno di essere disabilitato o configurato per funzionare con OpenLiteSpeed.
Assicurati che tutto sia aggiornato.
$ sudo dnf update
Pochi pacchetti di cui il tuo sistema ha bisogno.
$ sudo dnf install wget curl nano unzip yum-utils -y
Alcuni di questi pacchetti potrebbero essere già installati sul tuo sistema.
Passaggio 1: configurare il firewall
Il primo passo è configurare il firewall. Rocky Linux utilizza Firewalld Firewall. Controlla lo stato del firewall.
$ sudo firewall-cmd --state
running
Il firewall funziona con zone diverse e la zona pubblica è quella predefinita che utilizzeremo. Elenca tutti i servizi e le porte attive sul firewall.
$ sudo firewall-cmd --permanent --list-services
Dovrebbe mostrare il seguente output.
cockpit dhcpv6-client ssh
OpenLiteSpeed necessita della porta 7080 per il suo pannello di amministrazione.
$ sudo firewall-cmd --permanent --add-port=7080/tcp
Abbiamo anche bisogno delle porte HTTP e HTTPS per funzionare. Aprili.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Ricaricare il firewall per applicare le modifiche.
$ sudo firewall-cmd --reload
Elenca nuovamente tutti i servizi.
$ sudo firewall-cmd --permanent --list-services
Dovresti ottenere il seguente output.
cockpit dhcpv6-client http https ssh
Passaggio 2: installa OpenLiteSpeed
Scarica il file binario OpenLiteSpeed. Puoi ottenere il collegamento al file binario più recente dalla pagina di download ufficiale di OpenLiteSpeed.
$ wget https://openlitespeed.org/packages/openlitespeed-1.7.16.tgz
Estrai il file.
$ tar -zxf openlitespeed-*.tgz
Passa alla directory estratta.
$ cd openlitespeed
Esegui il programma di installazione.
$ sudo ./install.sh
Attendi un po' di tempo affinché il programma di installazione finisca.
Ci sono alcuni problemi con OpenLiteSpeed su macchine Rocky Linux 9 a causa dei quali potresti vedere alcuni errori relativi ai pacchetti PHP mancanti. Puoi ignorarli per ora perché il server può ancora funzionare con varie soluzioni alternative.
Lo script di installazione installa e abilita il servizio systemd lshttpd
.
Avvia il server OpenLiteSpeed.
$ sudo systemctl start lshttpd
Controlla la versione del server installata.
$ /usr/local/lsws/bin/lshttpd -v
LiteSpeed/1.7.16 Open (BUILD built: Thu Nov 17 16:18:46 UTC 2022)
module versions:
lsquic 3.1.1
modgzip 1.1
cache 1.64
mod_security 1.4
Crea la password dell'amministratore
Esegui lo script di reimpostazione della password.
$ sudo /usr/local/lsws/admin/misc/admpass.sh
Otterrai il seguente output. Fornisci admin
come nome utente e imposta una password complessa.
Please specify the user name of administrator.
This is the user name required to login the administration Web interface.
User name [admin]: admin
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!
Ora puoi utilizzare la nuova password di amministratore.
Apri http://
per accedere al pannello di amministrazione di OpenLiteSpeed. Al tuo primo accesso, il tuo browser ti avviserà che la tua connessione non è privata. Fai clic su Avanzate e fai clic su "Accetta il rischio e continua" (nel caso di Firefox) o "Procedi a
" (nel caso di browser basato su Chromium). Non vedrai più l'avviso.
Dovresti vedere la pagina di accesso.
Inserisci admin
come nome utente e password impostati in precedenza e premi il pulsante Accedi per procedere.
Otterrai la seguente schermata.
Passaggio 3: installare PHP
Il programma di installazione di OpenLiteSpeed solitamente installa PHP 7.4 per impostazione predefinita. Nel caso di Rocky Linux 9, non viene installato automaticamente. Inoltre, installeremo una versione recente di PHP. Prima di farlo, dobbiamo installare il repository LiteSpeed.
Installa il repository OpenLiteSpeed eseguendo il comando seguente.
$ sudo rpm -Uvh http://rpms.litespeedtech.com/centos/litespeed-repo-1.3-1.el8.noarch.rpm
Puoi prendere l'ultima versione del file RPM dalla pagina del repository OpenLiteSpeed.
Installa PHP 8.2.
$ sudo dnf install lsphp82 lsphp82-mysqlnd lsphp82-process lsphp82-bcmath lsphp82-pdo lsphp82-common lsphp82-xml lsphp82-opcache lsphp82-soap
I pacchetti lsphp-gd
e lsphp-mbstring
mancano ancora dal repository. Quindi, se li vuoi, dovrai aspettare un po' prima che vengano rilasciati ufficialmente.
Verifica l'installazione di PHP.
$ /usr/local/lsws/lsphp82/bin/php -v
PHP 8.2.1 (cli) (built: Jan 3 2023 18:40:55) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.1, Copyright (c) Zend Technologies
with Zend OPcache v8.2.1, Copyright (c), by Zend Technologies
Puoi controllare l'elenco dei moduli PHP abilitati.
$ /usr/local/lsws/lsphp82/bin/php --modules
[PHP Modules]
bcmath
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
posix
random
readline
Reflection
session
shmop
SimpleXML
soap
sockets
SPL
sqlite3
standard
sysvmsg
sysvsem
sysvshm
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zip
zlib
[Zend Modules]
Zend OPcache
Configureremo OpenLiteSpeed per funzionare con PHP in seguito.
Passaggio 4: installare MySQL
Installa il server MySQL.
$ sudo dnf install mysql-server
Abilita e avvia il server MySQL.
$ sudo systemctl enable mysqld --now
Controlla lo stato del servizio.
$ sudo systemctl status mysqld
Otterrai il seguente output.
? mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since Fri 2023-02-17 07:31:00 UTC; 2s ago
Process: 14933 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
Process: 14955 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
Main PID: 15054 (mysqld)
Status: "Server is operational"
Tasks: 39 (limit: 5873)
Memory: 427.1M
CPU: 4.079s
CGroup: /system.slice/mysqld.service
??15054 /usr/libexec/mysqld --basedir=/usr
Feb 17 07:30:51 nspeaks.xyz systemd[1]: Starting MySQL 8.0 database server...
Feb 17 07:30:51 nspeaks.xyz mysql-prepare-db-dir[14955]: Initializing MySQL database
Feb 17 07:31:00 nspeaks.xyz systemd[1]: Started MySQL 8.0 database server.
Esegui lo script di sicurezza MySQL.
$ sudo mysql_secure_installation
Riceverai diversi suggerimenti. Il primo messaggio ti chiederà se desideri installare il plugin Validate Password. Premi Y per installare il plugin. Scegli 2 come livello di sicurezza che richiederà che la tua password sia lunga almeno 8 caratteri e includa un mix di caratteri maiuscoli, minuscoli, numerici e speciali.
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
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
Successivamente, ti verrà chiesto di creare una password di root complessa. Assicurati che la tua password corrisponda ai requisiti del plugin Validate.
Please set the password for root here.
New password:
Re-enter new password:
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : Y
Successivamente, ti verranno chieste diverse richieste relative all'aumento della sicurezza del database. Premi Y a ogni richiesta.
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!
Accedi alla shell MySQL.
$ mysql -u root -p
Inserisci la tua password di root quando richiesto.
Creare un database di prova e un utente con autorizzazione di accesso. Sostituisci testdb
e testuser
con nomi appropriati per la tua configurazione. Sostituisci password
con una password complessa.
mysql> CREATE DATABASE testdb;
mysql> CREATE USER 'testuser' IDENTIFIED BY 'Your_Password123';
mysql> GRANT ALL PRIVILEGES ON testdb.* TO 'testuser';
mysql> FLUSH PRIVILEGES;
Esci dalla shell MySQL.
mysql> exit
Passaggio 5: configurare OpenLiteSpeed
Ripristina la porta HTTP su 80
Cambiamo la porta HTTP predefinita in 80. Accedi al tuo pannello di amministrazione su http://
con le credenziali che hai appena creato.
Visita la sezione Ascoltatori da sinistra. Vedrai i listener predefiniti con la porta 8080
.
Fai clic sul pulsante Visualizza per visualizzare la configurazione dettagliata. Nella pagina successiva, sotto Pagina Predefinita ascoltatore > Generale, fai clic sull'icona Modifica e modifica la porta da 8080
a 80 codice>.
Fare clic su Salva e riavviare il server facendo clic sul pulsante Riavvio graduale.
Passaggio 6: configurare PHP
In questo passaggio dobbiamo associare la nostra copia di PHP 8.2 al server.
Fai clic sulla sezione Configurazione server a sinistra e poi sulla scheda App esterna. Vedrai un'app LiteSpeed esistente per PHP. Apporteremo alcune modifiche.
Fai clic sul pulsante Modifica per modificare l'app PHP.
Successivamente, abbina la configurazione come mostrato di seguito. Lascia vuoti tutti gli altri campi.
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: lsphp82/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
Fai clic su Salva al termine.
Ora che abbiamo creato la nostra app PHP 8.2, dobbiamo dire al server di iniziare a usarla. Poiché abbiamo modificato l'elenco predefinito, è già configurato. Riavvia il server facendo clic sul pulsante Riavvio regolare.
Per verificare se il tuo PHP è stato modificato correttamente, visita http://
nel tuo browser.
Passaggio 7: creare VirtualHost
Innanzitutto, dobbiamo creare directory per il nostro host virtuale.
$ sudo mkdir /usr/local/lsws/example.com/{html,logs} -p
La directory html
conterrà i file pubblici e la directory logs
conterrà i log del server.
Successivamente, apri la Console di amministrazione, accedi alla sezione Host virtuali da sinistra e fai clic sul pulsante Aggiungi.
Compila i valori come specificato
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
Al termine, fai clic sul pulsante Salva. Riceverai il seguente errore perché il file di configurazione non esiste al momento. Fare clic sul collegamento per creare il file di configurazione.
Fai di nuovo clic sul pulsante Salva per completare la creazione dell'host virtuale.
Una volta creato l'host virtuale, vai su Host virtuali -> Scegli host virtuale (esempio.com) -> Generale e modifica la configurazione come indicato.
Document Root: $VH_ROOT/html/
Domain Name: example.com
Enable GZIP Compression: Yes
Enable Brotli Compression: Yes
Al termine, fai clic sul pulsante Salva. Successivamente, dobbiamo impostare i file indice. Fai clic sul pulsante di modifica accanto a File indice sotto la sezione Generale. Imposta le seguenti opzioni.
Use Server Index Files: No
Index files: index.php, index.html, index.htm
Auto Index: No
Al termine, fai clic su Salva. Successivamente, dobbiamo scegliere File di registro. Vai alla sezione Log, fai clic su Modifica rispetto al registro dell'host virtuale e inserisci i seguenti valori. Lascia invariate le altre impostazioni.
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
Puoi scegliere il Livello registro come DEBUG
se ti trovi su una macchina di produzione/sviluppo.
Fai clic su Salva, quindi sul segno più nella sezione Log di accesso per aggiungere una nuova voce. Compila i seguenti valori.
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: Not Set
Al termine, fai clic su Salva. Successivamente, dobbiamo configurare il Controllo accesso nella sezione Sicurezza. Impostare i seguenti valori.
Allowed List: *
Denied List: Not set
Al termine, fai clic su Salva. Successivamente, dobbiamo impostare la Definizione del gestore dello script. Fare clic sul segno più (+) per aggiungere una nuova definizione. Impostare i seguenti valori.
Suffixes: php
Handler Type: LiteSpeed SAPI
Handler Name: [Server Level]: lsphp
Al termine, fai clic su Salva. Successivamente, dobbiamo impostare Controllo riscrittura nella sezione Riscrivi. Impostare i seguenti valori.
Enable Rewrite: Yes
Auto Load from .htaccess: Yes
Log Level: Not Set
Al termine, fai clic su Salva. E infine, dobbiamo impostare gli ascoltatori. Vai alla sezione Listener e fai clic sul pulsante Visualizza accanto a Listener predefinito. Quindi, fai clic sul pulsante Aggiungi accanto a Mappatura host virtuale per aggiungere una nuova mappatura e impostare i seguenti valori.
Virtual Host: example.com
Domains: example.com
Al termine, fai clic su Salva. Ora fai clic sul pulsante Riavvio normale per applicare tutte le modifiche sopra riportate e riavviare il server.
Passaggio 8: installare SSL
La configurazione di SSL in OpenLiteSpeed richiede la configurazione di due certificati. Un certificato autofirmato per l'intero server e un server Let's Encrypt specifico per il sito.
Creiamo prima il certificato autofirmato.
$ openssl req -x509 -days 365 -newkey rsa:4096 -keyout key.pem -out cert.pem -nodes
Otterrai un output simile.
-----
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) [XX]:
State or Province Name (full name) []:
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section) []:
Common Name (eg, your name or your server's hostname) []:example.com
Email Address []:[email
Puoi premere Invio attraverso tutti i campi e lasciarli vuoti. Inserisci il tuo dominio per il Nome comune e il tuo indirizzo email.
I certificati sono ora archiviati nella directory /home/user
. Avremo bisogno di queste informazioni in seguito.
Per utilizzare Let's Encrypt, dobbiamo installare lo strumento Certbot. Per questo utilizzeremo il programma di installazione del pacchetto Snapd. Poiché Rocky Linux non viene fornito con esso, installa il programma di installazione Snapd. Per funzionare richiede l'archivio EPEL.
$ sudo dnf install -y epel-release
Installa Snapd.
$ sudo dnf install -y snapd
Abilita e avvia il servizio Snap.
$ sudo systemctl enable snapd --now
Installa il pacchetto Snap core e assicurati che la tua versione di Snapd sia aggiornata.
$ sudo snap install core && sudo snap refresh core
Crea i collegamenti necessari affinché Snapd funzioni.
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Emettere il comando seguente per installare Certbot.
$ sudo snap install --classic certbot
Utilizzare il comando seguente per garantire che il comando Certbot possa essere eseguito creando un collegamento simbolico alla directory /usr/bin
.
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Verificare l'installazione.
$ certbot --version
certbot 2.3.0
Esegui il comando seguente per generare un certificato SSL.
Ottieni il certificato SSL. La directory webroot è impostata sulla directory HTML pubblica configurata in precedenza.
$ sudo certbot certonly --webroot -w /usr/local/lsws/example.com/html/ --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email -d example.com
Genera un certificato gruppo Diffie-Hellman.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Per verificare se il rinnovo SSL funziona correttamente, esegui un test del processo.
$ sudo certbot renew --dry-run
Se non vedi errori, è tutto a posto. Il tuo certificato si rinnoverà automaticamente.
Ora apri la Console di amministrazione e vai su Listener >> Aggiungi nuovo listener e aggiungi i seguenti valori.
Listener Name: SSL
IP Address: ANY
Port: 443
Secure: Yes
Al termine, fai clic su Salva. Successivamente, vai alla sezione Virtual Host Mapping sotto SSL Listener facendo clic su SSL, facendo clic sul pulsante Aggiungi e inserendo i seguenti valori.
Virtual Host: example.com
Domains: example.com
Al termine, fai clic su Salva. Successivamente, vai su Listener >> SSL Listener >> scheda SSL >> Chiave privata e certificato SSL (pulsante Modifica) e inserisci i seguenti valori per il certificato autofirmato che abbiamo creato in precedenza.
Private Key File: /home/user/key.pem
Certificate File: /home/user/cert.pem
Chained Certificate: Yes
Al termine, fai clic su Salva. Successivamente, vai su Listener >> SSL Listener >> Scheda SSL >> Protocollo SSL (pulsante Modifica) e inserisci i seguenti valori per il protocollo SSL e i dettagli di crittografia.
Protocol Version: TLS v1.2 TLS v1.3
Ciphers: ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384
Enable ECDH Key Exchange: Yes
Enable DH Key Exchange: Yes
DH Parameter: /etc/ssl/certs/dhparam.pem
Al termine, fai clic su Salva. Successivamente, vai su Host virtuali >> esempio.com >> scheda SSL >> Chiave privata e certificato SSL (pulsante Modifica) e inserisci i seguenti valori con il certificato Let's Encrypt.
Private Key File: /etc/letsencrypt/live/example.com/privkey.pem
Certificate File: /etc/letsencrypt/live/example.com/fullchain.pem
Chained Certificate: Yes
Al termine, fai clic su Salva. Successivamente, vai su Host virtuali >> esempio.com >> scheda SSL >> Pinzatura OCSP (pulsante Modifica) e inserisci i seguenti valori per abilitare la pinzatura OCSP.
Enable OCSP Stapling: Yes
OCSP Response Max Age(Secs): 300
OCSP Responder: http://r3.o.lencr.org
Al termine, fai clic su Salva. Successivamente, vai su Host virtuali >> esempio.com >> scheda SSL >> Sicurezza (pulsante Modifica) e inserisci i seguenti valori per abilitare il protocollo HTTP3/QUIC.
Enable HTTP3/QUIC: Yes
Non è necessario abilitare altre opzioni perché sono attive per impostazione predefinita.
Al termine, fai clic su Salva.
Riavvia il server facendo clic sul pulsante Riavvio grazioso.
Passaggio 9: sito di prova
Crea un file di test nella tua directory html
.
$ sudo nano /usr/local/lsws/example.com/html/index.php
Incolla il seguente codice nell'editor 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>
Apri l'URL https://example.com
in un browser e dovresti visualizzare la pagina seguente.
Il sito di prova è completamente funzionante. Puoi iniziare a utilizzare il server per servire siti Web e applicazioni PHP dinamici.
Conclusione
Questo conclude il nostro tutorial sull'installazione di LOMP Stack (OpenLiteSpeed, MySQL e PHP) su un server Rocky Linux 9. Se avete domande, pubblicatele nei commenti qui sotto.