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.
- Nome di dominio non www (Es. itzgeek.net)>> A punto di registrazione all'IP del tuo server
- 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 --nginx1. 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-drupal1. 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.