GNU/Linux >> Znalost Linux >  >> Debian

Jak nainstalovat Drupal s Nginx a zašifrovat SSL na Debian 11

Drupal je open-source systém pro správu obsahu, který vám umožňuje vytvářet, spravovat a udržovat obsah vašich webových stránek bez nutnosti znalosti kódování.

Existuje mnoho různých řešení pro správu obsahu, ze kterých si můžete vybrat, ale ne všechna jsou vhodná pro každý projekt. Pokud chcete vytvořit nebo přestavět svůj web pomocí něčeho flexibilního a výkonného, ​​nehledejte nic jiného než Drupal.

Pokud ještě nemáte webhosting pro vývoj webu Drupal, doporučujeme jej nainstalovat na místní počítač Debian nebo VPS.

Zde nainstalujeme Drupal s Nginx a Let’s Encrypt SSL na Debian 11.

Předpoklady

Instalovat LEMP Stack

Pomocí níže uvedených odkazů nainstalujte LEMP stack na váš systém Debian pro instalaci Drupalu.

Nainstalujte EMP (Nginx, MariaDB a PHP) na Debian 11

Nainstalujte rozšíření PHP pro Drupal

Použijte apt příkaz k instalaci rozšíření PHP pro instalaci Drupalu.

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

Nastavení virtuálního hostitele Nginx pro Drupal

Začneme vytvořením virtuálního hostitele pro instalaci Drupalu. Všechny konfigurační soubory virtuálního hostitele Nginx najdete pod /etc/nginx/conf.d adresář.

Soubor virtuálního hostitele obvykle obsahuje název domény, číslo portu, kořen dokumentu, umístění protokolu, rychlé CGI atd.

Předpokládám následující,

Název domény:itzgeek.net, www.itzgeek.net
Číslo portu:80
Kořenový adresář dokumentu:/usr/share/nginx/www.itzgeek.net/html
Protokoly:/usr/share/nginx/www.itzgeek.net/logs

Nejprve vytvořte konfigurační soubor virtuálního hostitele.

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

Poté vložte následující obsah do výše uvedeného konfiguračního souboru. Budete muset změnit server_name podle vašeho požadavku.

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

Vytvořte adresáře pro umístění souborů Drupal a protokolů Nginx.

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

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

Ověřte konfigurační soubor Nginx pomocí níže uvedeného příkazu.

sudo nginx -t

Pokud se zobrazí následující, znamená to, že konfigurace virtuálního hostitele je správná.

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

Restartujte služby Nginx a PHP-FPM.

sudo systemctl reload nginx php7.4-fpm

Nainstalujte Let's Encrypt SSL certifikát

Vytvořit záznam DNS

Přejděte ke svému registrátorovi domény a vytvořte pro svou doménu záznam A a CNAME (volitelné, pokud nechcete používat subdoménu www).

  1. Název domény bez www (např. itzgeek.net)>> A zaznamenat bod k IP serveru
  2. Název domény www (např. www.itzgeek.net)>> CNAME rekordní bod na itzgeek.net

Pro toto demo vytvořím dva záznamy, aby moje webová stránka Drupal byla přístupná na adrese www.itzgeek.net.

Nainstalujte klienta Certbot

Klient Certbot, který nám pomáhá generovat a instalovat certifikát Let’s Encrypt SSL v Nginx, je nyní k dispozici jako snap balíček pro Debian. Nejprve tedy nainstalujte démona snapd na váš systém.

sudo apt update

sudo apt install -y snapd

Poté aktualizujte snapd na nejnovější verzi.

sudo snap install core && sudo snap refresh core

Nakonec nainstalujte klienta Certbot pomocí níže uvedeného příkazu.

sudo snap install --classic certbot

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

Nainstalujte certifikát SSL

Pomocí níže uvedeného příkazu vygenerujte a nainstalujte certifikát Let’s Encrypt SSL na webový server Nginx.

sudo certbot --nginx
1. Zadejte e-mailovou adresu dostávat upozornění na naléhavé obnovení a bezpečnostní upozornění
2. Napište Y a stiskněte Enter zaregistrovat se na serveru ACME
3. Zadejte A nebo N k zasílání e-mailů o novinkách, kampaních a newsletterech EFF.
4. Certbot automaticky rozpozná doménu Drupal a požádá vás o aktivaci HTTPS pro váš web Drupal. Zadejte 1 nebo vhodná čísla oddělená čárkou v případě, že máte více webových stránek.
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

Počkejte na dokončení instalace SSL. Nyní budete mít přístup k webu pomocí HTTPS.

Poznámka: Pokud nyní vstoupíte na webovou stránku, dostanete zakázanou chybu 403, protože jste ještě neumístili soubory Drupal.

Přesměrujte požadavky HTTP bez www na www HTTPS pomocí Nginx

Budete muset nakonfigurovat server Nginx tak, aby přesměroval provoz z webu bez www HTTP na web WWW HTTPS, tj. http://itzgeek.net>> https://www.itzgeek.net.

Automaticky obnovit certifikát SSL

Klient Certbot nyní zahrnuje automatickou obnovu SSL certifikátů prostřednictvím systemd. Nebudete tedy muset obnovovat certifikáty ručně.

Nainstalujte Drupal s Nginx

Vytvořit databázi pro Drupal

Nejprve se přihlaste k databázovému serveru MariaDB/MySQL.

sudo mysql -u root -p

Poté vytvořte databázi pro instalaci Drupalu spolu s uživatelem databáze a heslem.

CREATE DATABASE drupaldb;

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

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

EXIT

Stáhněte si balíček Drupal

Stáhněte si nejnovější verzi instalačního programu Drupal pomocí následujícího příkazu.

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

Poté rozbalte stažený soubor.

tar -zxvf drupal-latest.tar.gz

A pak přesuňte soubory do kořenového adresáře dokumentů vašeho webu.

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

Aktualizujte vlastnictví a skupinu adresáře webu Drupal.

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

Nainstalujte Drupal CMS

Otevřete svůj prohlížeč a navštivte svou doménu Drupal a proveďte instalaci Drupalu.

https://your-drupal-web

1. Vyberte jazyk pro vaši instalaci a web Drupal a poté klikněte na Uložit a pokračovat

2. Vyberte instalační profil který je pro vás vhodný a poté klikněte naUložit a pokračovat

3. Zadejte podrobnosti o databázi Drupal v Konfigurace databáze a poté klikněte na Uložit a pokračovat

4. Počkejte na dokončení instalace Drupal

5. Budete muset Konfigurovat web zadáním Informací o webu, Účet údržby webu, Nastavení regionu a Oznámení o aktualizaci . Nakonec klikněte na Uložit a pokračovat

6. Po dokončení vás instalační program přesměruje na back-end Drupal, kde budete spravovat instalaci. Případně můžete přistupovat k back-endu Drupal tak, že přejdete na https://your-drupal-website/user/login

Přístup k webu Drupal

Nyní budete mít přístup k webu pomocí názvu vaší domény.

https://your-drupal-web

Snímek obrazovky back-endu Drupal CMS:

Po instalaci povolte Nastavení důvěryhodného hostitele, abyste ochránili svůj web Drupal před útoky HTTP HOST Header.

Závěr

To je vše. Doufám, že jste se naučili, jak nainstalovat Drupal s Nginx a Let’s Encrypt SSL na Debian 11.


Debian
  1. Jak nainstalovat Drupal 8 s Nginx, PHP-FPM a SSL na Ubuntu 15.10

  2. Nainstalujte Lets Encrypt and Secure Nginx pomocí SSL/TLS v Debianu 9

  3. Jak nainstalovat Let's Encrypt SSL na Ubuntu 18.04 s Nginx

  1. Jak nainstalovat Drupal s Nginx a nechat šifrovat SSL na Ubuntu 20.04 LTS

  2. Jak nainstalovat Drupal 9 s Nginx a nechat šifrovat SSL na Debian 10

  3. Jak nainstalovat Drupal s Apache a nechat šifrovat SSL na Debian 11

  1. Jak nainstalovat AbanteCart s Nginx a SSL na Debian 11

  2. Jak nainstalovat diskusní fórum s Nginx a zdarma umožňuje šifrovat SSL na Debian 11

  3. Jak nainstalovat Etherpad s Nginx a SSL na Debian 11