GNU/Linux >> Linux Esercitazione >  >> AlmaLinux

Come installare lo stack LEMP (Nginx, MariaDB e PHP) su AlmaLinux 8

LEMP è una raccolta di software open source comunemente usato insieme per servire applicazioni web. Il termine LEMP è un acronimo che rappresenta la configurazione di un sistema operativo Linux con un Nginx (pronunciato engine-x , da cui la E nell'acronimo), con i dati del sito archiviati in un database MySQL o MariaDB e contenuto dinamico elaborato da PHP che è comunemente usato per ospitare siti Web estesi grazie alle sue prestazioni e scalabilità.

Nel seguente tutorial imparerai come installare LEMP (Nginx, MariaDB, PHP 8.0) su AlmaLinux 8 .

Prerequisiti

  • Sistema operativo consigliato: AlmaLinux 8.
  • Account utente: Un account utente con privilegi sudo o accesso root (comando su) .

Aggiornamento del sistema operativo

Aggiorna il tuo AlmaLinux sistema operativo per assicurarsi che tutti i pacchetti esistenti siano aggiornati:

sudo dnf upgrade --refresh -y

Il tutorial utilizzerà il comando sudo e supponendo che tu abbia lo stato sudo . Per verificare lo stato di sudo sul tuo account:

sudo whoami

Esempio di output che mostra lo stato di sudo:

[joshua@localhost ~]$ sudo whoami
root

Se non hai impostato un account utente sudo e lo desideri, visita il nostro tutorial su Come aggiungere un utente ai sudoer su AlmaLinux .

Per utilizzare l'account root , usa il comando seguente con la password di root per accedere.

su

Installa Nginx

Per avviare l'installazione dello stack LEMP, dovrai installare il server web Nginx, che può essere fatto con il seguente comando da terminale:

sudo dnf install nginx

Esempio di output:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Conferma l'installazione controllando la versione build:

nginx -v

Esempio di output:

nginx version: nginx/1.14.1

Per impostazione predefinita, quando si installa Nginx su AlmaLinux, non è abilitato. Per abilitare all'avvio e avviare, utilizzare quanto segue:

sudo systemctl enable nginx && sudo systemctl start nginx

Esempio di abilitazione riuscita di (link simbolico) :

Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.

Ora, controlla lo stato del tuo servizio Nginx con il seguente comando da terminale:

systemctl status nginx

Esempio di output che dice che è tutto a posto:

È una buona idea consentire il traffico HTTP attraverso il firewall con il seguente comando:

sudo firewall-cmd --zone=public --add-service=http --permanent 

Ricarica il firewall con il seguente comando:

sudo firewall-cmd --reload

Ora puoi confermare che il tuo server web Nginx è operativo inserendo HTTP://server-ip o HTTP://nome-dominio nel tuo browser Internet e dovresti ottenere quanto segue:

Installa e configura MariaDB

Installazione

MariaDB è un sostituto drop-in di MySQL ed è stato sviluppato da ex membri del team MySQL preoccupati che Oracle potesse trasformare MySQL in un prodotto closed-source e potenzialmente a pagamento.

Immettere il seguente comando per installare MariaDB:

sudo dnf install mariadb-server mariadb

Esempio di output:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Per confermare l'installazione di MariaDB e per verificare quale build è installata, digita il seguente comando:

mysql --version

Esempio di output:

mysql  Ver 15.1 Distrib 10.3.28-MariaDB, for Linux (x86_64) using readline 5.1

Per impostazione predefinita, MariaDB non viene abilitato come Nginx prima non lo facesse. Per avviare e abilitare MariaDB all'avvio del sistema, utilizzare il seguente (systemctl) comando terminale:

sudo systemctl enable mariadb && sudo systemctl start mariadb

Esempio di abilitazione riuscita di (link simbolico) :

Created symlink /etc/systemd/system/mysql.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/mysqld.service → /usr/lib/systemd/system/mariadb.service.
Created symlink /etc/systemd/system/multi-user.target.wants/mariadb.service → /usr/lib/systemd/system/mariadb.service.

Ora assicurati che tutto sia operativo con il seguente comando:

systemctl status mariadb

Esempio di output che dice che è tutto a posto:

Configurazione

Ora che MariaDB è attivo e funzionante sul tuo sistema AlmaLinux, devi eseguire lo script di sicurezza post-installazione poiché le impostazioni predefinite devono essere riviste poiché spesso non sono sicure. Si consiglia vivamente di non saltare.

Innanzitutto, esegui il comando di installazione sicura di MariaDB come segue:

sudo mysql_secure_installation

Successivamente, ti verrà richiesto di inserire la tua (password di root MariaDB). Per ora, premi il tasto (INVIO) chiave poiché la password di root non è ancora impostata come di seguito:

Quindi, digita (Y) e premi Invio per configurare il (root) password come di seguito:

La prossima serie di domande che puoi tranquillamente premere (INVIO) , che risponderà (Y) a tutte le domande successive che ti chiedono di (rimuovere utenti anonimi, disabilitare il login root remoto e rimuovere il database di test) . Nota il (Y) è in maiuscolo, il che significa che è la risposta predefinita quando si preme il tasto (INVIO) chiave.

Esempio sotto:

Panoramica di ciò che avrebbe dovuto essere fatto sopra:

  • Impostazione della password per root conti.
  • Rimozione degli account root accessibili dall'esterno dell'host locale.
  • Rimozione degli account di utenti anonimi.
  • Rimozione del database di test, a cui per impostazione predefinita possono accedere utenti anonimi.

Questo passaggio è essenziale per la sicurezza del database MariaDB e non deve essere modificato o ignorato a meno che tu non sappia cosa stai facendo.

Ora, accedi al terminale del database MariaDB con il seguente comando:

sudo mysql -u root -p

Ti verrà chiesto di inserire la password di root che hai impostato nella configurazione dell'installazione o nello script di sicurezza post-installazione. Una volta all'interno dell'istanza del servizio MySQL, puoi eseguire il comando seguente come test per vederlo in funzione.

Digita il seguente comando MOSTRA DATABASE :

SHOW DATABASES;

Per chi non conosce MySQL e MariaDB, tutti i comandi devono terminare con ".

Esempio:

Per uscire dal terminale del database MariaDB, digitare (exit;) come segue:

exit;

Installa PHP (PHP-FPM)

Importa repository PHP 8.0

L'ultima parte da installare nell'installazione di LEMP è PHP. Dovrai installare (PHP-FPM) che è l'abbreviazione di (FastCGI Process Manager) . Si consiglia vivamente di installare PHP (Remi) deposito. Per chi non lo sapesse, Remi è il manutentore delle versioni PHP della famiglia Rhel. Per il tutorial, installeremo il nuovo PHP 8.0:

Il primo compito è installare (EPEL ) repository, che sta per (Extra Packages for Enterprise Linux). Per gli utenti più recenti di Rhel e AlmaLinux, EPEL contiene i pacchetti software più comunemente usati per Enterprise Linux.

Per installare EPEL, utilizza il seguente (dnf) comando terminale:

sudo dnf install epel-release

Esempio di output:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Ora che hai aggiunto il repository EPEL, abilita (repository Remi) con quanto segue:

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpm

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Quindi, usa il (dnf) comando per aggiornare l'elenco dei tuoi repository:

sudo dnf update

Noterai una domanda nel tuo terminale sull'importazione della (chiave GPG) per il repository Remi come di seguito:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Tieni presente che ti verrà chiesto altre due volte di digitare (Y) altre due volte per importare più chiavi GPG. Va bene.

Successivamente, ti verrà chiesto di aggiornare la versione EPEL:

Esempio:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Il tuo repository EPEL è ora aggiornato e sei pronto per passare alla parte successiva del tutorial.

Abilita il repository PHP 8.0 (Remi)

PHP 7.2 è la scelta PHP predefinita per l'installazione standard su Rhel/Alma Linux con il repository di Remi. Un rapido suggerimento è quello di utilizzare il (list php) comando per vedere le opzioni disponibili e quelle predefinite. Il comando seguente può eseguire questa operazione:

sudo dnf module list php

Otterrai il seguente output come di seguito. Nota il (d) tag per l'installazione di PHP predefinito:

Come puoi vedere sopra, il tag (d) è accanto a PHP 7.2, che dovrai reimpostare e modificare per procedere all'installazione di PHP 8.0 su AlmaLinux. Reimpostare l'elenco PHP è facile con il seguente comando:

sudo dnf module list reset php

Quindi, abilita PHP 8.0 con il seguente comando:

sudo dnf module enable php:remi-8.0 -y

Esempio di output una volta completato:

Nota, puoi abilitare PHP-7.4 seguendo il comando di reset del modulo dnf e usando invece il modulo dnf abilita il comando php:remi-7.4. Scegli la versione che ti serve per l'applicazione e questo era solo un esempio di come avere l'ultima versione PHP di qualsiasi scelta PHP tu decida.

Installa PHP 8.0

Ora che hai aggiunto il repository PHP di Remi e abilitato PHP 8.0 come versione predefinita sul tuo sistema AlmaLinux, puoi installare PHP 8.0 con il seguente comando:

sudo dnf install php

Esempio di output:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Se desideri installare le estensioni più comunemente utilizzate per PHP 8.0, usa il seguente comando:

sudo dnf install php-cli php-fpm php-curl php-mysqlnd php-gd php-opcache php-zip php-intl php-common php-bcmath php-imap php-imagick php-xmlrpc php-json php-readline php-memcached php-redis php-mbstring php-apcu php-xml

Nota, rimuovi le opzioni che non desideri siano facoltative.

Esempio di output:

Digita (Y), quindi premere (INVIO TASTO) per procedere.

Ora che hai installato PHP 8.0 e le estensioni controlla la versione con il seguente comando:

php -v

Esempio di output:

PHP 8.0.10 (cli) (built: Aug 24 2021 15:40:40) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.10, Copyright (c) Zend Technologies
    with Zend OPcache v8.0.10, Copyright (c), by Zend Technologies

Infine, PHP-FPM come Nginx e MariaDB prima che non fosse abilitato per impostazione predefinita, per abilitare PHP-FPM all'avvio del sistema e avviarlo, usa il seguente (systemctl) comando:

sudo systemctl enable php-fpm && sudo systemctl start php-fpm

Esempio di abilitazione riuscita di (link simbolico) :

Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.

Ora, come prima con il controllo dello stato degli altri requisiti nella tua installazione LEMP, usa il seguente (systemctl) comando da terminale per verificare lo stato e assicurarsi che tutto funzioni:

systemctl status php-fpm

Se non sono presenti errori, dovresti ottenere il seguente output:

A differenza delle installazioni LEMP su Debian/Ubuntu che utilizzano (www-data) utente, questo non è il caso delle installazioni della famiglia RHEL. Per impostazione predefinita su AlmaLinux, il servizio PHP-FPM è progettato per essere eseguito (Apache) utente, che non è corretto poiché stiamo usando Nginx, e questo doveva essere corretto.

Innanzitutto, apri dopo (www.conf) file di configurazione:

sudo nano /etc/php-fpm.d/www.conf

Quindi, sostituisci (Apache) utente e gruppo con (Nginx) utente e gruppo:

Per salvare, premi (CTRL+O) quindi esci da (CTRL+X) .

Ora ricaricherai o riavvierai anche tu il tuo servizio PHP-FPM:

sudo systemctl restart php-fpm

Crea pagina di destinazione PHP di prova

Per testare PHP-FPM con il server Web Nginx, devi creare un file nella directory webroot.

Per la guida, chiamerai il file (info.php) come segue:

sudo nano /usr/share/nginx/html/info.php

Incolla quanto segue (info.php) file:

<?php

phpinfo();

?>

Salva il file (CTRL+O), quindi esci da (CTRL+X) .

Ora nella barra degli indirizzi del tuo browser Internet, inserisci (indirizzo-ip-server/info.php) . Se hai installato Nginx sul tuo computer locale, usa l'impostazione predefinita (127.0.0.1/info.php) o (localhost/info.php) .

Dovresti vedere le informazioni PHP del tuo server:

Queste informazioni mostrano che gli script PHP possono essere eseguiti correttamente con il server web Nginx.

Per motivi di sicurezza, dovresti rimuovere il file. Per fare ciò, usa il seguente comando:

sudo rm -f /var/www/html/info.php

Se preferisci conservare il file per scopi futuri, aggiungi quanto segue al tuo file di blocco del server Nginx nel server {} sezione:

    location ^~ /info.php {
     allow <YOUR IP ADDRESS>; 
     deny all;
    }

Ciò consentirà solo all'indirizzo IP specificato di accedere al file. Si consiglia di nascondere la maggior parte delle informazioni di sistema da potenziali hacker e malintenzionati.

Crea un blocco server Nginx

Un blocco server Nginx è l'equivalente di un host virtuale in Apache, che contiene una configurazione per il tuo server web Nginx che risponde ai visitatori pubblici. Di seguito è riportato un esempio completo di come raggiungere questo obiettivo tenendo presente PHP-FPM.

Crea directory di blocchi del server

Il (.conf) i file si trovano normalmente in (siti-disponibili) e (abilitati per i siti). Gli utenti provenienti da diverse distribuzioni noteranno che questo è già installato; tuttavia, per AlmaLinux, dovrai crearli.

Crea i due (siti) richiesti directory con il seguente comando:

sudo mkdir /etc/nginx/sites-available && sudo mkdir /etc/nginx/sites-enabled

Modifica il file di configurazione di Nginx

Dopo aver creato le directory necessarie, modifica il file di configurazione principale di Nginx (nginx.conf) come segue:

sudo nano /etc/nginx/nginx.conf

Quindi incolla le righe successive in (HTTP) sezione di (nginx.conf) file di configurazione:

include /etc/nginx/sites-enabled/*.conf;
server_names_hash_bucket_size 64;

Esempio:

Nota, (server_names_hash_bucket_size) aumenta la memoria allocata per l'analisi dei nomi di dominio.

Salva la configurazione con (CLTR+O) e poi (CTRL+X) per uscire.

Crea file di configurazione del blocco server

Ora crea un file di blocco del server utilizzando qualsiasi editor di testo, la guida utilizzerà (nano) :

sudo nano /etc/nginx/sites-available/example.com.conf

Successivamente, è necessario impostare il file di configurazione con un esempio funzionante con PHP-FPM abilitato.

Di seguito viene fornito un esempio da copiare e incollare. Nota per sostituire (nome_server) con il tuo nome di dominio o IP:

server {
  listen 80;
  listen [::]:80;
  server_name example.com www.example.com;
  root /var/www/html/example.com/;
  index index.php index.html index.htm index.nginx-debian.html;

  location / {
    try_files $uri $uri/ /index.php;
  }

  location ~ \.php$ {
    fastcgi_pass unix:/run/php-fpm/www.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;

  }

 # A long browser cache lifetime can speed up repeat visits to your page
  location ~* \.(jpg|jpeg|gif|png|webp|svg|woff|woff2|ttf|css|js|ico|xml)$ {
       access_log        off;
       log_not_found     off;
       expires           360d;
  }

  # disable access to hidden files
  location ~ /\.ht {
      access_log off;
      log_not_found off;
      deny all;
  }
}

Ora salva il blocco del server con (CTRL+O), quindi esci con (CTRL+X) .

Crea pagina di destinazione di prova

Una buona idea è creare un sito di prova di esempio. Di seguito è riportato un test standard index.html impostato:

Se non hai già creato la tua directory web permanente o di prova:

sudo mkdir -p /var/www/htmlexample.com/

Dovrai configurare le autorizzazioni e puoi impostare come utente attualmente connesso con $USER variabile:

sudo chown -R $USER:$USER /var/www/html/example.com/

L'ultima impostazione di autorizzazione è consentire al pubblico di leggere la directory web (accedere al tuo sito) usando il permesso chmod 755:

sudo chmod -R 755 /var/www

Quindi, crea il index.html file:

sudo nano /var/www/html/example.com/index.html

Incolla il contenuto qui sotto. Come puoi vedere, è piuttosto semplice in quanto lo stiamo usando solo a scopo di test.

<html>
  <head>
    <title>You have reached Example.com!</title>
  </head>
  <body>
    <h1>Congratulations! The server block is active!</h1>
  </body>
</html>

Salva la configurazione con (CLTR+O) e poi (CTRL+X) per uscire.

Abilita Blocco server Nginx

Ora sei nelle fasi finali e ora è il momento di abilitare il file di configurazione del blocco del server. Per farlo, devi creare un link simbolico (symlink) per il file di configurazione del blocco server in (siti-disponibili) directory nella directory (siti abilitati) directory utilizzando il seguente comando:

sudo ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

Testare il blocco del server Nginx

Per finire, dovresti sempre eseguire un ciclo di prova prima di riavviare o ricaricare il tuo servizio Nginx, che è fondamentale se lavori in un ambiente live. Digita il seguente comando per testare il file di configurazione del blocco del server:

sudo nginx -t

Se non ci sono errori, otterrai il seguente output:

nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

Quindi, apri il tuo browser Internet e inserisci il tuo indirizzo di dominio (example.com) per verificare se il tuo server è raggiungibile.

Congratulazioni, hai creato con successo un blocco server Nginx che è PHP-FPM pronto.

Proteggi Nginx con il certificato gratuito SSL Let's Encrypt

Idealmente, vorresti eseguire il tuo Nginx su HTTPS utilizzando un certificato SSL . Il modo migliore per farlo è utilizzare Let's Encrypt, un'autorità di certificazione gratuita, automatizzata e aperta gestita dal Internet Security Research Group (ISRG) senza scopo di lucro .

Innanzitutto, installa EPEL repository e mod_ssl pacchetto per pacchetti e sicurezza più aggiornati.

sudo dnf install epel-release mod_ssl -y

Quindi, installa il pacchetto certbot come segue:

sudo dnf install python3-certbot-nginx -y

Una volta installato, esegui il seguente comando per avviare la creazione del tuo certificato:

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d www.example.com

Questa è la configurazione ideale che include i reindirizzamenti HTTPS 301 forzati, l'intestazione Strict-Transport-Security e la pinzatura OCSP. Assicurati solo di adattare l'e-mail e il nome di dominio alle tue esigenze.

Ora il tuo URL sarà HTTPS://www.example.com invece di HTTP://www.example.com .

Nota, se utilizzi il vecchio URL HTTP , reindirizzerà automaticamente a HTTPS .

Facoltativamente, puoi impostare un processo cron per rinnovare automaticamente i certificati. Certbot offre uno script che lo fa automaticamente e puoi prima testare per assicurarti che tutto funzioni eseguendo una corsa a secco.

sudo certbot renew --dry-run

Se tutto funziona, apri la finestra di crontab utilizzando il seguente comando da terminale.

sudo crontab -e

Quindi, specifica l'ora in cui dovrebbe rinnovarsi automaticamente. Questo dovrebbe essere controllato almeno quotidianamente e, se il certificato deve essere rinnovato, lo script non aggiornerà il certificato. Se hai bisogno di aiuto per trovare un buon momento per impostare, usa lo strumento gratuito crontab.guru.

00 00 */1 * * /usr/sbin/certbot-auto renew

Salva (CTRL+O) quindi esci da (CTRL+X), e il cronjob verrà abilitato automaticamente.


AlmaLinux
  1. Come installare lo stack LEMP su AlmaLinux

  2. Come installare Nginx con PHP e MySQL (stack LEMP) su CentOS 7

  3. Come installare Nginx con PHP e MariaDB (LEMP Stack) su Fedora 31

  4. Come installare Nginx con PHP e MySQL (LEMP Stack) su CentOS 7.6

  5. Come installare lo stack Nginx, MariaDB e PHP (FEMP) su FreeBSD

Come installare phpBB con LEMP su AlmaLinux 8

Come installare lo stack LEMP su AlmaLinux 8

Come installare lo stack LAMP su AlmaLinux 8

Come installare lo stack LEMP su Debian 11

Come installare lo stack LEMP su Fedora 35

Come installare LEMP (Nginx, MariaDB, PHP) su Centos 7