GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare Drupal con Nginx e Let's Encrypt SSL su Debian 11

Drupal è un sistema di gestione dei contenuti open source che ti consente di creare, gestire e mantenere i contenuti del tuo sito Web senza alcuna conoscenza di codifica necessaria.

Ci sono molte diverse soluzioni di gestione dei contenuti tra cui scegliere, ma non tutte sono adatte a ogni progetto. Se vuoi costruire o ricostruire il tuo sito web con qualcosa di flessibile e potente, non cercare oltre Drupal.

Se non hai ancora alcun web hosting per sviluppare un sito web Drupal, ti consigliamo di installarlo sulla tua macchina Debian o VPS locale.

Qui installeremo Drupal con Nginx e Let's Encrypt SSL su Debian 11.

Prerequisiti

Installa lo stack LEMP

Segui i link sottostanti per installare lo stack LEMP sul tuo sistema Debian per l'installazione di Drupal.

Installa EMP (Nginx, MariaDB e PHP) su Debian 11

Installa estensioni PHP per Drupal

Usa apt comando per installare le estensioni PHP per l'installazione di Drupal.

sudo apt update

sudo apt install -y php-mysql php-gd php-dom php-curl php-imagick php-zip php-xml php-mbstring php-json php-pdo php-cli php-apcu

sudo apt install --no-install-recommends -y php-uploadprogress

Configura l'host virtuale Nginx per Drupal

Inizieremo con la creazione di un host virtuale per un'installazione Drupal. Puoi trovare tutti i file di configurazione dell'host virtuale di Nginx in /etc/nginx/conf.d directory.

In genere, un file host virtuale contiene un nome di dominio, numero di porta, radice del documento, posizione del registro, CGI veloce, ecc.

Presumo quanto segue,

Nome di dominio:itzgeek.net, www.itzgeek.net
Porta n.:80
Radice del documento:/usr/share/nginx/www.itzgeek.net/html
Registri:/usr/share/nginx/www.itzgeek.net/logs

Innanzitutto, crea un file di configurazione dell'host virtuale.

sudo nano /etc/nginx/conf.d/www.itzgeek.net.conf

Quindi, inserisci il seguente contenuto nel file di configurazione sopra. Dovrai cambiare server_name secondo il vostro requisito.

server {
	server_name itzgeek.net www.itzgeek.net;
	root /usr/share/nginx/www.itzgeek.net/html;
	
	index index.php index.html;
	
	access_log /usr/share/nginx/www.itzgeek.net/logs/access.log;
	error_log /usr/share/nginx/www.itzgeek.net/logs/error.log;
	

	
	location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~* \.(txt|log)$ {
        deny all;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }

    # Allow "Well-Known URIs" as per RFC 5785
    location ~* ^/.well-known/ {
        allow all;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string; # For Drupal >= 7
    }

    location @rewrite {
        rewrite ^ /index.php; # For Drupal >= 7
    }

    # Don't allow direct access to PHP files in the vendor directory.
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }

    # Protect files and directories from prying eyes.
    location ~* \.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$ {
        deny all;
        return 404;
    }

    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        try_files $fastcgi_script_name =404;
        include fastcgi_params;
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }

    # Fighting with Styles? This little gem is amazing.
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    # Enforce clean URLs
    # Removes index.php from urls like www.example.com/index.php/my-page --> www.example.com/my-page
    # Could be done with 301 for permanent or other redirect codes.
    if ($request_uri ~* "^(.*/)index\.php/(.*)") {
        return 307 $1$2;
    }
}

Crea directory per posizionare file Drupal e registri Nginx.

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/html/

sudo mkdir -p /usr/share/nginx/www.itzgeek.net/logs/

Verifica il file di configurazione di Nginx con il comando seguente.

sudo nginx -t

Se ottieni quanto segue, significa che la configurazione dell'host virtuale è corretta.

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

Riavvia i servizi Nginx e PHP-FPM.

sudo systemctl reload nginx php7.4-fpm

Installa il certificato SSL Let's Encrypt

Crea record DNS

Vai al tuo registrar di domini e crea un record A e CNAME (facoltativo se non desideri utilizzare il sottodominio www) per il tuo dominio.

  1. Nome di dominio non www (Es. itzgeek.net)>> A punto di registrazione all'IP del tuo server
  2. www Nome di dominio (Es. www.itzgeek.net)>> CNAME record punta a itzgeek.net

Per questa demo, creerò due record in modo che il mio sito Web Drupal sia accessibile all'indirizzo www.itzgeek.net.

Installa il client Certbot

Il client Certbot, che ci aiuta a generare e installare il certificato SSL Let's Encrypt in Nginx, è ora disponibile come pacchetto snap per Debian. Quindi, per prima cosa, installa il demone snapd sul tuo sistema.

sudo apt update

sudo apt install -y snapd

Quindi, aggiorna lo snap all'ultima versione.

sudo snap install core && sudo snap refresh core

Infine, installa il client Certbot utilizzando il comando seguente.

sudo snap install --classic certbot

sudo ln -s /snap/bin/certbot /usr/bin/certbot

Installa certificato SSL

Utilizzare il comando seguente per generare e installare il certificato SSL Let's Encrypt nel server Web Nginx.

sudo certbot --nginx
1. Inserisci l'indirizzo email ricevere la notifica su rinnovi urgenti e avvisi di sicurezza
2. Digita Y e premi Invio per registrarsi al server ACME
3. Digita Y o N per ricevere e-mail su notizie, campagne, newsletter EFF.
4. Certbot rileverà automaticamente il dominio Drupal e ti chiederà di attivare HTTPS per il tuo sito web Drupal. Digita 1 o numeri appropriati separati da una virgola nel caso tu abbia più siti web.
Which names would you like to activate HTTPS for?
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: itzgeek.net
2: www.itzgeek.net
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate numbers separated by commas and/or spaces, or leave input
blank to select all options shown (Enter 'c' to cancel): 1,2

Attendi il completamento dell'installazione SSL. Ora sarai in grado di accedere al sito Web con HTTPS.

Nota: Se accedi al sito Web ora, riceverai un errore 403 vietato perché devi ancora posizionare i file Drupal.

Reindirizza le richieste HTTP non www a www HTTPS con Nginx

Sarà necessario configurare il server Nginx per reindirizzare il traffico dal sito HTTP non www al sito HTTPS WWW, ovvero http://itzgeek.net>> https://www.itzgeek.net.

Rinnovo automatico del certificato SSL

Il client Certbot ora include il rinnovo automatico dei certificati SSL tramite systemd. Quindi, non dovrai rinnovare i certificati manualmente.

Installa Drupal con Nginx

Crea database per Drupal

Innanzitutto, accedi al server del database MariaDB/MySQL.

sudo mysql -u root -p

Quindi, crea il database per l'installazione di Drupal insieme all'utente e alla password del database.

CREATE DATABASE drupaldb;

CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON drupaldb.* TO 'drupaluser'@'localhost';

EXIT

Scarica il pacchetto Drupal

Scarica l'ultima versione del programma di installazione di Drupal utilizzando il comando seguente.

wget https://www.drupal.org/download-latest/tar.gz -O drupal-latest.tar.gz

Quindi, estrai il file scaricato.

tar -zxvf drupal-latest.tar.gz

E poi, sposta i file nella directory principale del documento del tuo sito web.

sudo mv drupal-*/* /usr/share/nginx/www.itzgeek.net/html/

Aggiorna la proprietà e un gruppo della directory del sito Web Drupal.

sudo chown -R www-data:www-data /usr/share/nginx/www.itzgeek.net/

Installa Drupal CMS

Apri il tuo browser e visita il tuo dominio Drupal per eseguire l'installazione di Drupal.

https://il-tuo-sito-drupal

1. Scegli la lingua per l'installazione e il sito Web di Drupal, quindi fare clic su Salva e continua

2. Seleziona un profilo di installazione che è adatto a te, quindi fai clic su Salva e continua

3. Inserisci i dettagli del database Drupal nella Configurazione database pagina e quindi fai clic su Salva e continua

4. Attendi il completamento dell'installazione di Drupal

5. Dovrai Configurare il sito inserendo Informazioni sul sito, Account di manutenzione del sito, Impostazioni della regione e Notifiche di aggiornamento . Infine, fai clic su Salva e continua

6. Al termine, il programma di installazione ti reindirizzerà al back-end Drupal per gestire l'installazione. In alternativa, puoi accedere al back-end di Drupal andando su https://your-drupal-website/user/login

Accedi al sito web di Drupal

Ora potrai accedere al sito con il tuo nome di dominio.

https://il-tuo-sito-drupal

Schermata del back-end di Drupal CMS:

Dopo l'installazione, abilita le Impostazioni host attendibili per proteggere il tuo sito Web Drupal dagli attacchi HTTP HOST Header.

Conclusione

È tutto. Spero che tu abbia imparato a installare Drupal con Nginx e Let's Encrypt SSL su Debian 11.


Debian
  1. Come installare Drupal 8 con Nginx, PHP-FPM e SSL su Ubuntu 15.10

  2. Installa Lets Encrypt e Secure Nginx con SSL/TLS in Debian 9

  3. Come installare Drupal con Nginx e Lets Encrypt SSL su Ubuntu 20.04 LTS

  4. Come installare Drupal 9 con Nginx e Lets Encrypt SSL su Debian 10

  5. Come installare Let's Encrypt SSL su Ubuntu 18.04 con Nginx

Come installare Drupal con Nginx e Let's Encrypt SSL su Debian 11

Come installare Joomla con Nginx e Let's Encrypt SSL su Debian 11

Come installare Let's Encrypt SSL in Nginx su Debian 11

Come installare WordPress con Nginx e Let's Encrypt SSL su Debian 11

Come installare Nginx con Let's Encrypt TLS/SSL su Ubuntu 20.04

Come installare Nginx con Let's Encrypt SSL su Fedora 35