Come installare LEMP Stack Nginx, MySQL, PHP su Debian 11. In questa guida imparerai come installare Nginx, MySQL 8.0 e PHP 8.1.
Installerai anche alcune estensioni PHP comuni e regolerai le configurazioni PHP. Infine proteggerai la tua configurazione con Let's Encrypt SSL e configurerai il reindirizzamento HTTPS.
Questa configurazione è stata testata sul cloud di Google, quindi funzionerà su tutti i servizi di hosting cloud come AWS, Azure o qualsiasi VPS o qualsiasi server dedicato che esegue Debian 11.
Prerequisiti
- Accesso root al tuo server o a un utente sudo.
- Dominio ha puntato all'IP del tuo server per installare Let'sEncrypt SSL
Fase 1:inizializzazione della configurazione
Inizia aggiornando i pacchetti all'ultima versione disponibile utilizzando il comando seguente.
sudo apt update sudo apt upgrade
Installa il pacchetto wget.
sudo apt install wget
Dopo aver aggiornato la configurazione, puoi iniziare la configurazione.
Fase 2:installa Nignx
Installa Nginx usando il seguente comando.
sudo apt install nginx
Questo installerà nginx
e tutte le dipendenze richieste.
Fase 3:imposta il firewall
Ora puoi configurare Uncomplicated Firewall (UFW) con Nginx per consentire l'accesso pubblico alle porte Web predefinite per HTTP
e HTTPS
sudo ufw app list
Vedrai tutte le applicazioni elencate.
Output Available applications: Nginx Full Nignx HTTP Nginx HTTPS OpenSSH
- Nginx HTTP :Questo profilo apre la porta
systemctl
(traffico web normale, non crittografato) - Nginx completo :Questo profilo apre entrambe le porte
systemctl
(traffico web normale, non crittografato) e porta443
(traffico crittografato TLS/SSL) - Nginx HTTPS :Questo profilo apre solo la porta
443
(traffico crittografato TLS/SSL) - OpenSSH :Questo profilo apre la porta
22
per l'accesso SSH.
Se non intendi utilizzare SSL devi abilitare solo il profilo HTTP Nginx.
Ora abiliteremo Nginx Full.
sudo uff allow OpenSSH sudo ufw allow 'Nginx Full'
Con questo comando puoi visualizzare lo stato di UFW.
sudo ufw status
Vedrai l'output come segue.
Output Status: active To Action From -- ------ ---- Nginx Full ALLOW Anywhere OpenSSH ALLOW Anywhere Nginx Full (v6) ALLOW Anywhere (v6) OpenSSH (v6) ALLOW Anywhere (v6)
Passaggio:4 Verifica installazione Nginx
Una volta installato Nginx, viene avviato automaticamente ed è già attivo e funzionante.
Ogni processo in Nginx è gestito con systemctl
comando. Controlla lo stato di Nginx con il seguente comando.
sudo systemctl status nginx
● 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 Thu 2022-02-03 03:13:00 UTC; 6h ago Docs: man:nginx(8) Process: 11261 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_process on; (code> Process: 11262 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (code=exited, > Main PID: 11263 (nginx) Tasks: 3 (limit: 8622)
Ora abbiamo Nignx installato e configurato Firewall.
Passaggio 5:installa MySQL
Per aggiungere il repository MySQL APT al tuo sistema, vai alla pagina di download del repository e scarica l'ultimo pacchetto di rilascio usando il comando seguente.
wget https://dev.mysql.com/get/mysql-apt-config_0.8.22-1_all.deb
Installa il pacchetto di rilascio.
sudo apt install ./mysql-apt-config_0.8.22-1_all.deb
Installeremo MySQL versione 8.0. Seleziona OK premendo Tab e premi Invio (come mostrato nell'immagine sopra).
Ora puoi installare MySQL.
sudo apt update sudo apt install mysql-server
Una volta completata l'installazione, il servizio MySQL si avvierà automaticamente. Per verificare che il server MySQL sia in esecuzione, digita:
sudo service mysql status
L'output dovrebbe mostrare che il servizio è abilitato e in esecuzione:
mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2022-02-02 06:12:30 UTC; 17s ago Docs: man:mysqld(8) http://dev.mysql.com/doc/refman/en/using-systemd.html Main PID: 101929 (mysqld) Status: "Server is operational" Tasks: 38 (limit: 1148) Memory: 369.3M CPU: 805ms CGroup: /system.slice/mysql.service └─101929 /usr/sbin/mysqld Feb 02 06:12:29 demo systemd[1]: Starting MySQL Community Server... Feb 02 06:12:30 demo systemd[1]: Started MySQL Community Server.
Passaggio 6:proteggi MySQL
L'installazione di MySQL include uno script chiamato mysql_secure_installation
che ti consente di migliorare facilmente la sicurezza del server MySQL.
sudo mysql_secure_installation
Ti verrà chiesto di configurare il VALIDATE PASSWORD PLUGIN
che viene utilizzato per testare la forza delle password degli utenti MySQL e migliorare la sicurezza.
Premi y
se desideri impostare il plug-in di convalida della password o qualsiasi altra chiave per passare al passaggio successivo.
Esistono tre livelli di criteri di convalida delle password, basso, medio e forte.
Immettere 2 per la convalida della password complessa.
Al prompt successivo, ti verrà chiesto di impostare una password per l'utente root di MySQL.
Se imposti il plug-in di convalida della password, lo script ti mostrerà la forza della tua nuova password. Digita y
per confermare la password.
Successivamente, ti verrà chiesto di rimuovere l'utente anonimo, limitare l'accesso dell'utente root al computer locale, rimuovere il database di test e ricaricare le tabelle dei privilegi. Dovresti rispondere a y
a tutte le domande.
Passaggio 7:installa PHP
Aggiungi il SURY PPA per PHP 8.1
sudo apt -y install lsb-release apt-transport-https ca-certificates sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg
Ora puoi aggiungere il PPA ai pacchetti del server.
echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list
Aggiorna i pacchetti e installa PHP 8.1
sudo apt update sudo apt install php php8.1-fpm php8.1-mysql php8.1-common php8.1-mysql php8.1-xml php8.1-xmlrpc php8.1-curl php8.1-gd php8.1-imagick php8.1-cli php8.1-dev php8.1-imap php8.1-mbstring php8.1-opcache php8.1-soap php8.1-zip php8.1-intl -y
Una volta installato PHP, puoi verificare la versione utilizzando il seguente comando.
php -v
Fase 8:configura PHP
Ora configuriamo PHP per le applicazioni Web modificando alcuni valori in php.ini
file.
Per PHP 8.1 con Nginx il php.ini
la posizione sarà nella directory seguente.
sudo nano /etc/php/8.1/fpm/php.ini
Premi F6
per cercare all'interno dell'editor e aggiornare i seguenti valori per prestazioni migliori.
upload_max_filesize = 32M
post_max_size = 48M
memory_limit = 256M
max_execution_time = 600
max_input_vars = 3000
max_input_time = 1000
Dopo aver modificato le impostazioni PHP, è necessario riavviare il PHP-FPM affinché le modifiche abbiano effetto.
sudo service php8.1-fpm restart
Fase 9:configura Nginx
Disabilita la configurazione Nginx predefinita.
sudo rm -rf /etc/nginx/sites-enabled/default sudo rm -rf /etc/nginx/sites-available/default
Crea directory di siti Web.
sudo mkdir -p /var/www/html/domainname/public
Imposta le autorizzazioni corrette.
sudo chmod -R 755 /var/www/html/domainname sudo chown -R www-data:www-data /var/www/html/domainname
Crea una nuova configurazione del blocco server.
sudo nano /etc/nginx/sites-available/domainname.conf
Incolla le seguenti configurazioni nel nuovo file.
server { listen 80; listen [::]:80; server_name yourdomainname.com www.yourdomainname.com; root /var/www/html/domainname/public; index index.html index.php; location / { try_files $uri $uri/ /index.php?$args; } location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/run/php/php8.1-fpm.sock; fastcgi_index index.php; include fastcgi_params; } }
Abilita la nuova configurazione.
sudo ln -s /etc/nginx/sites-available/domainname.conf /etc/nginx/sites-enabled/domainname.conf
Passaggio 10:installa Let's Encrypt SSL
HTTPS è un protocollo per la comunicazione sicura tra un server (istanza) e un client (browser web). Grazie all'introduzione di Let's Encrypt, che fornisce certificati SSL gratuiti, HTTPS è adottato da tutti e fornisce anche fiducia al tuo pubblico.
Qui installeremo Certbot per installare Let'sEncrypt SSL usando Snap.
sudo apt update sudo apt install snapd -y sudo snap install core sudo snap refresh core
Installa lo strumento Certbot.
sudo snap install --classic certbot
Configura Certbot in modo che sia eseguibile come comando.
sudo ln -s /snap/bin/certbot /usr/bin/certbot
Ora abbiamo installato Certbot per installare Let's Encrypt per Debian 11.
Esegui il comando seguente per installare i certificati.
sudo certbot --nginx --agree-tos --redirect -m [email protected] -d domainname.com -d www.domainname.com
Seleziona l'opzione appropriata e premi Enter
Questo comando installerà Free SSL, configurerà il reindirizzamento a HTTPS e riavvierà il server Nginx.
Fase 11:rinnovo del certificato SSL
I certificati forniti da Let's Encrypt sono validi solo per 90 giorni, quindi è necessario rinnovarli spesso. Quindi, testiamo la funzionalità di rinnovo utilizzando il seguente comando.
sudo certbot renew --dry-run
Questo comando verificherà la scadenza del certificato e configura la funzione di rinnovo automatico.
Fase:12:verifica la configurazione
Dopo aver eseguito i passaggi abili, puoi creare un nuovo file PHP di prova nella tua directory web.
sudo nano /var/www/html/domainname/public/info.php
Incolla il codice seguente all'interno del file.
<?php phpinfo();
Salva il file.
Ora vai avanti e controlla il tuo nome di dominio con il info.php
nell'URL (domainname.com/info.php
).
Vedrai che il tuo dominio è stato reindirizzato a HTTPS e vedrai i dettagli delle informazioni PHP.
Potenzia la tua carriera di amministrazione Linux con un corso di formazione completato e ottieni il lavoro dei tuoi sogni.
Conclusione
Ora hai imparato come installare lo stack LEMP su Debian 11 con Let'sEncrypt SSL.
Grazie per il tuo tempo. In caso di problemi o feedback, lasciare un commento qui sotto.