GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come installare lo stack LEMP su Ubuntu 20.04 Server/Desktop

Questo tutorial ti mostrerà come installare stack LEMP (Nginx, MariaDB e PHP7.4) su Ubuntu 20.04. Uno stack software è un insieme di strumenti software raggruppati insieme. LEMP sta per Linux, Nginx (Engine-X), MariaDB/MySQL e PHP, tutti open source e gratuiti. È lo stack software più comune che alimenta i siti Web dinamici e le applicazioni Web. Linux è il sistema operativo; Nginx è il server web; MariaDB/MySQL è il server di database e PHP è il linguaggio di scripting lato server responsabile della generazione di pagine Web dinamiche.

Prerequisiti

Per seguire questo tutorial, hai bisogno di un sistema operativo Ubuntu 20.04 in esecuzione sul tuo computer locale o su un server remoto.

Se stai cercando un VPS (Virtual Private Server), puoi registrare un account su DigitalOcean tramite questo link speciale per ottenere $ 50 di credito gratuito. (Solo per nuovi utenti). Se sei già un utente DigitalOcean, puoi registrare un account su Vultr tramite questo link speciale per ottenere un credito gratuito di $ 50 (solo per i nuovi utenti).

E se devi configurare lo stack LEMP con un nome di dominio, ti consiglio di acquistare i nomi di dominio da NameCheap perché il prezzo è basso e offrono protezione della privacy di Whois gratuita per tutta la vita.

Fase 1:aggiorna i pacchetti software

Prima di installare lo stack LEMP, è buona norma aggiornare il repository e i pacchetti software eseguendo i seguenti comandi sul tuo sistema operativo Ubuntu 20.04.

sudo apt update

sudo apt upgrade

Fase 2:installa Nginx Web Server

Nginx è un server web ad alte prestazioni e molto popolare in questi giorni. Può anche essere utilizzato come proxy inverso e server di memorizzazione nella cache. Immettere il comando seguente per installare il server Web Nginx.

sudo apt install nginx

Dopo l'installazione, possiamo consentire a Nginx di avviarsi automaticamente all'avvio eseguendo il comando seguente.

sudo systemctl enable nginx

Quindi avvia Nginx con questo comando:

sudo systemctl start nginx

Ora controlla il suo stato.

sudo systemctl status nginx

Uscita:

● nginx.service - A high performance web server and a reverse proxy server
     Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:11:43 UTC; 3s ago
       Docs: man:nginx(8)
    Process: 8533 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
    Process: 8545 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, status=0/SUCCESS)
   Main PID: 8549 (nginx)
      Tasks: 3 (limit: 9451)
     Memory: 3.9M
     CGroup: /system.slice/nginx.service
             ├─8549 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
             ├─8550 nginx: worker process
             └─8551 nginx: worker process

"Abilitato ” indica che l'avvio automatico all'avvio è abilitato e possiamo vedere che Nginx è in esecuzione. Puoi anche vedere quanta RAM Nginx sta usando dall'output. Se il comando precedente non si chiude immediatamente dopo l'esecuzione. Devi premere "q ” per farlo uscire.

Controlla la versione di Nginx.

nginx -v

Uscita:

nginx version: nginx/1.17.9 (Ubuntu)

Ora digita l'indirizzo IP pubblico del tuo server Ubuntu 20.04 nella barra degli indirizzi del browser. Dovresti vedere la pagina Web "Benvenuto in Nginx", il che significa che il server Web Nginx funziona correttamente. Se stai installando LEMP sul tuo computer Ubuntu 20.04 locale, digita 127.0.0.1localhost nella barra degli indirizzi del browser.

Se la connessione viene rifiutata o non viene completata, potrebbe esserci un firewall che impedisce le richieste in arrivo alla porta TCP 80. Se stai utilizzando il firewall iptables, devi eseguire il comando seguente per aprire la porta TCP 80.

sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT

Se stai usando il firewall UFW, esegui questo comando per aprire la porta TCP 80.

sudo ufw allow http

Infine, dobbiamo creare www-data (utente Nginx) come proprietario della directory web. Per impostazione predefinita, è di proprietà dell'utente root.

sudo chown www-data:www-data /usr/share/nginx/html -R

Fase 3:installa il server di database MariaDB

MariaDB è un sostituto drop-in di MySQL. È stato sviluppato da ex membri del team MySQL preoccupati che Oracle possa trasformare MySQL in un prodotto closed-source. Immettere il comando seguente per installare MariaDB su Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Dopo l'installazione, il server MariaDB dovrebbe essere avviato automaticamente. Usa systemctl per verificarne lo stato.

systemctl status mariadb

Uscita:

● mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled)
     Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 9161 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 31 (limit: 9451)
     Memory: 64.7M
     CGroup: /system.slice/mariadb.service
             └─9161 /usr/sbin/mysqld

Se non è in esecuzione, avvialo con questo comando:

sudo systemctl start mariadb

Per consentire a MariaDB di avviarsi automaticamente all'avvio, esegui

sudo systemctl enable mariadb

Ora esegui lo script di sicurezza post installazione.

sudo mysql_secure_installation

Quando ti chiede di inserire la password di root di MariaDB, premi il tasto Invio poiché la password di root non è ancora impostata. Quindi inserisci y per impostare la password di root per il server MariaDB.

Successivamente, puoi premere Invio per rispondere a tutte le domande rimanenti, che rimuoveranno l'utente anonimo, disabiliteranno l'accesso root remoto e rimuoveranno il database di test. Questo passaggio è un requisito di base per la sicurezza del database MariaDB. (Nota che Y è in maiuscolo, il che significa che è la risposta predefinita.)

Per impostazione predefinita, il pacchetto MaraiDB su Ubuntu utilizza unix_socket per autenticare l'accesso dell'utente, il che significa sostanzialmente che puoi utilizzare il nome utente e la password del sistema operativo per accedere alla console MariaDB. Quindi puoi eseguire il seguente comando per accedere senza fornire la password di root di MariaDB.

sudo mariadb -u root

Per uscire, corri

exit;

Controlla le informazioni sulla versione del server MariaDB.

mariadb --version

Come puoi vedere, abbiamo installato MariaDB 10.3.22.

mariadb  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Fase 4:installa PHP7.4

PHP7.4 è incluso nel repository Ubuntu 20.04 e presenta un lieve miglioramento delle prestazioni rispetto a PHP7.3. Immettere il comando seguente per installare PHP7.4 e alcune estensioni comuni.

sudo apt install php7.4 php7.4-fpm php7.4-mysql php-common php7.4-cli php7.4-common php7.4-json php7.4-opcache php7.4-readline php7.4-mbstring php7.4-xml php7.4-gd php7.4-curl

Le estensioni PHP sono comunemente necessarie per i sistemi di gestione dei contenuti (CMS) come WordPress. Ad esempio, se nella tua installazione manca php7.4-xml , alcune delle pagine del tuo sito WordPress potrebbero essere vuote e puoi trovare un errore nel registro degli errori di Nginx come:

PHP message: PHP Fatal error:  Uncaught Error: Call to undefined function xml_parser_create()

L'installazione di queste estensioni PHP assicura che il tuo CMS funzioni senza intoppi. Ora avvia php7.4-fpm.

sudo systemctl start php7.4-fpm

Abilita l'avvio automatico all'avvio.

sudo systemctl enable php7.4-fpm

Verifica lo stato:

systemctl status php7.4-fpm

Esempio di output:

● php7.4-fpm.service - The PHP 7.4 FastCGI Process Manager
     Loaded: loaded (/lib/systemd/system/php7.4-fpm.service; enabled; vendor pr>
     Active: active (running) since Fri 2020-04-10 14:40:26 UTC; 12s ago
       Docs: man:php-fpm7.4(8)
    Process: 21019 ExecStartPost=/usr/lib/php/php-fpm-socket-helper install /ru>
   Main PID: 21012 (php-fpm7.4)
     Status: "Processes active: 0, idle: 2, Requests: 0, slow: 0, Traffic: 0req>
      Tasks: 3 (limit: 9451)
     Memory: 9.4M
     CGroup: /system.slice/php7.4-fpm.service
             ├─21012 php-fpm: master process (/etc/php/7.4/fpm/php-fpm.conf)
             ├─21017 php-fpm: pool www
             └─21018 php-fpm: pool www

Se il comando precedente non si chiude immediatamente dopo l'esecuzione. Devi premere "q ” per farlo uscire.

Passaggio 5:crea un blocco server Nginx

Un blocco server Nginx è come un host virtuale in Apache. Non useremo il blocco del server predefinito perché è inadeguato per eseguire il codice PHP e se lo modifichiamo, diventa un pasticcio. Quindi rimuovi il default collegamento simbolico in sites-enabled directory eseguendo il comando seguente. (È ancora disponibile come /etc/nginx/sites-available/default .)

sudo rm /etc/nginx/sites-enabled/default

Quindi usa un editor di testo a riga di comando come Nano per creare un file di blocco del server nuovo di zecca in /etc/nginx/conf.d/ directory.

sudo nano /etc/nginx/conf.d/default.conf

Incolla il seguente testo nel file. Il seguente frammento di codice farà in modo che Nginx sia in ascolto sulla porta IPv4 80 e IPv6 sulla porta 80 con un nome di server catch-all.

server {
  listen 80;
  listen [::]:80;
  server_name _;
  root /usr/share/nginx/html/;
  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/php7.4-fpm.sock;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    include fastcgi_params;
    include snippets/fastcgi-php.conf;
  }

 # 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;
  }
}

Salva e chiudi il file. (Per salvare un file nell'editor di testo Nano, premi Ctrl+O , quindi premi Enter per confermare. Per uscire, premi Ctrl+X .)

Quindi testa le configurazioni di Nginx.

sudo nginx -t

Se il test ha esito positivo, ricarica Nginx.

sudo systemctl reload nginx

Passaggio 6:prova PHP

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

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

Incolla il seguente codice PHP nel file.

<?php phpinfo(); ?>

Salva e chiudi il file. Ora nella barra degli indirizzi del browser, inserisci server-ip-address/info.php . Sostituisci sever-ip-address con il tuo IP effettivo. Se segui questo tutorial sul tuo computer locale, digita 127.0.0.1/info.phplocalhost/info.php .

Dovresti vedere le informazioni PHP del tuo server. Ciò significa che gli script PHP possono essere eseguiti correttamente con il server web Nginx.

Congratulazioni! Hai installato con successo Nginx, MariaDB e PHP7.4 su Ubuntu 20.04. Per la sicurezza del tuo server, dovresti eliminare info.php file ora per impedire agli hacker di vederlo.

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

Suggerimento per la risoluzione dei problemi

Se riscontri errori, puoi controllare il registro degli errori di Nginx (/var/log/nginx/error.log ) per scoprire cosa c'è che non va.

Riavvio automatico di Nginx

Se per qualsiasi motivo il tuo processo Nginx viene interrotto, devi eseguire il comando seguente per riavviarlo.

sudo systemctl restart nginx

Invece di digitare manualmente questo comando, possiamo fare in modo che Nginx si riavvii automaticamente modificando nginx.service unità di servizio systemd. Per sovrascrivere la configurazione del servizio systemd predefinita, creiamo una directory separata.

sudo mkdir -p /etc/systemd/system/nginx.service.d/

Quindi crea un file in questa directory.

sudo nano /etc/systemd/system/nginx.service.d/restart.conf

Aggiungi le seguenti righe nel file, che farà riavviare automaticamente Nginx 5 secondi dopo che è stato rilevato un guasto. Il valore predefinito di RetartSec è 100 ms , che è troppo piccolo. Nginx potrebbe lamentarsi del fatto che "richiesta di avvio ripetuta troppo velocemente" se RestartSec non è abbastanza grande.

[Service]
Restart=always
RestartSec=5s

Salva e chiudi il file. Quindi ricarica systemd per rendere effettive le modifiche.

sudo systemctl daemon-reload

Per verificare se funzionerebbe, uccidi Nginx con:

sudo pkill nginx

Quindi controlla lo stato di Nginx. Troverai Nginx riavviato automaticamente.

systemctl status nginx

Passaggio successivo

Spero che questo tutorial ti abbia aiutato a installare lo stack LEMP su Ubuntu 20.04 LTS . Potresti voler installare phpMyAdmin, che è uno strumento di gestione di database basato sul Web gratuito e open source.

  • Come installare phpMyAdmin con Nginx (LEMP) su Ubuntu 20.04 LTS

Puoi anche installare WordPress in cima allo stack LEMP per creare il tuo sito Web o blog.

  • Installa WordPress su Ubuntu 20.04 con Nginx, MariaDB, PHP7.4 (LEMP)

Come sempre, se hai trovato utile questo post, iscriviti alla nostra newsletter gratuita per ricevere altri suggerimenti e trucchi. Abbi cura di 🙂


Ubuntu
  1. Come installare Nginx su Ubuntu 20.04

  2. Come installare Ubuntu Desktop da Ubuntu Server

  3. Come installare lo stack LEMP su Ubuntu 20.04

  4. Come installare lo stack LEMP su Debian 10 Buster Server/Desktop

  5. Come installare LEMP su Ubuntu 16.04

Come installare lo stack LAMP su Ubuntu 20.04 Server/Desktop

Come installare Nginx su Ubuntu

Come installare LEMP su Ubuntu 15.10

Come installare LEMP su Ubuntu 16.04

Come installare Nginx su Ubuntu 18.04 LTS

Come installare lo stack LEMP con PhpMyAdmin in Ubuntu 20.04