Drupal je bezplatný a otevřený systém pro správu obsahu, který vám pomáhá vytvářet a dodávat digitální obsah pro web a mobilní telefony. Je napsán v PHP a používá jej mnoho organizací po celém světě. S Drupalem můžete vytvářet různé typy webových stránek, od malých blogů až po velké firemní webové stránky. Nabízí snadno použitelné rozhraní a výkonné editační nástroje pro správu obsahu.
V tomto tutoriálu vám ukážeme, jak nainstalovat Drupal s Nginx a zabezpečit jej pomocí Let's Encrypt SSL na Ubuntu 20.04.
Předpoklady
- Server se systémem Ubuntu 20.04.
- Platný název domény odkazovaný na váš server.
- Na vašem serveru je nakonfigurováno heslo uživatele root.
Instalovat LEMP Server
Nejprve budete muset na svůj server nainstalovat webový server Nginx, databázi MariaDB, PHP a další požadovaná rozšíření. Všechny je můžete nainstalovat pomocí následujícího příkazu:
apt-get install nginx mariadb-server php7.4 php7.4-fpm php7.4-common php7.4-mysql php7.4-gmp php7.4-curl php7.4-intl php7.4-mbstring php7.4-xmlrpc php7.4-gd php7.4-xml php7.4-cli php7.4-zip -y
Jakmile jsou všechny balíčky nainstalovány, upravte soubor php.ini a upravte některá nastavení:
nano /etc/php/7.4/fpm/php.ini
Změňte následující řádky:
short_open_tag = On cgi.fix_pathinfo=0 memory_limit = 256M upload_max_filesize = 100M max_execution_time = 300 date.timezone = America/Chicago
Po dokončení uložte a zavřete soubor.
Konfigurace databáze MariaDB
Nejprve zabezpečte instalaci MariaDB a nastavte heslo roota MariaDB pomocí následujícího příkazu:
mysql_secure_installation
Odpovězte na všechny otázky, jak je uvedeno níže:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Jakmile je MariaDB zabezpečená, přihlaste se do prostředí MariaDB pomocí následujícího příkazu:
mysql -u root -p
Zadejte své root heslo MariaDB a poté vytvořte databázi a uživatele pro Drupal:
MariaDB [(none)]> CREATE DATABASE drupaldb;
MariaDB [(none)]> CREATE USER 'drupal'@'localhost' IDENTIFIED BY 'password';
Dále udělte všechna oprávnění databázi Drupal pomocí následujícího příkazu:
MariaDB [(none)]> GRANT ALL ON drupaldb.* TO 'drupal'@'localhost' WITH GRANT OPTION;
Dále vyprázdněte oprávnění a ukončete prostředí MariaDB pomocí následujícího příkazu:
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Stáhnout Drupal
V době psaní tohoto návodu je nejnovější verze Drupalu 8.8.5. Můžete si jej stáhnout do kořenového adresáře webu Nginx pomocí následujícího příkazu:
cd /var/www/html/
wget https://ftp.drupal.org/files/projects/drupal-8.8.5.tar.gz
Po dokončení stahování rozbalte stažený soubor pomocí následujícího příkazu:
tar -xvzf drupal-8.8.5.tar.gz
Dále přejmenujte extrahovaný adresář na drupal a udělte správná oprávnění pomocí následujícího příkazu:
mv drupal-8.8.5 drupal
chown -R www-data:www-data drupal
chmod -R 755 drupal
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Konfigurace Nginx pro Drupal
Dále vytvořte konfigurační soubor virtuálního hostitele Nginx pro drupal pomocí následujícího příkazu:
nano /etc/nginx/sites-available/drupal
Přidejte následující řádky:
server { listen 80; listen [::]:80; root /var/www/html/drupal; index index.php index.html index.htm; server_name drupal.linuxbuz.com; client_max_body_size 100M; autoindex off; location ~ \..*/.*\.php$ { return 403; } location ~ ^/sites/.*/private/ { return 403; } # Block access to scripts in site files directory location ~ ^/sites/[^/]+/files/.*\.php$ { deny all; } location ~ (^|/)\. { return 403; } location / { try_files $uri /index.php?$query_string; } location @rewrite { rewrite ^/(.*)$ /index.php?q=$1; } # Don't allow direct access to PHP files in the vendor directory. location ~ /vendor/.*\.php$ { deny all; return 404; } location ~ '\.php$|^/update.php' { include snippets/fastcgi-php.conf; fastcgi_pass unix:/run/php/php7.4-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7 try_files $uri @rewrite; } location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7 try_files $uri /index.php?$query_string; } }
Uložte a zavřete soubor a poté vytvořte symbolický odkaz na adresář s povolenými weby:
ln -s /etc/nginx/sites-available/drupal /etc/nginx/sites-enabled/
Dále nastavte hash_bucket_size ve výchozím konfiguračním souboru Nginx:
nano /etc/nginx/nginx.conf
Přidejte následující řádek pod „http { "
."server_names_hash_bucket_size 64;
Uložte a zavřete soubor a poté zkontrolujte, zda Nginx neobsahuje nějakou chybu syntaxe:
nginx -t
Měli byste získat následující výstup:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Poté restartujte službu Nginx, aby se změny aplikovaly:
systemctl restart nginx
Jakmile budete hotovi, můžete přejít k dalšímu kroku.
Zabezpečte Drupal pomocí Let's Encrypt SSL
Doporučuje se zabezpečit Drupal pomocí Let's Encrypt SSL. Nejprve přidejte úložiště Certbot pomocí následujícího příkazu:
add-apt-repository ppa:ahasenack/certbot-tlssni01-1875471
Dále aktualizujte úložiště a nainstalujte klienta Certbot pomocí následujícího příkazu:
apt-get update -y
apt-get install certbot python3-certbot-nginx -y
Po instalaci klienta Certbot spusťte následující příkaz ke stažení a instalaci Let's Encrypt SSL pro váš web:
certbot --nginx -d drupal.linuxbuz.com
Budete vyzváni k zadání platného e-mailu a přijetí podmínek služby, jak je uvedeno níže:
Saving debug log to /var/log/letsencrypt/letsencrypt.log Plugins selected: Authenticator nginx, Installer nginx Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): [email protected] - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (A)gree/(C)ancel: A - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about our work encrypting the web, EFF news, campaigns, and ways to support digital freedom. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (Y)es/(N)o: Y Obtaining a new certificate Performing the following challenges: http-01 challenge for drupal.linuxbuz.com Waiting for verification... Cleaning up challenges Deploying Certificate to VirtualHost /etc/nginx/sites-enabled/drupal
Dále zvolte, zda chcete přesměrovat provoz HTTP na HTTPS:
Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: No redirect - Make no further changes to the webserver configuration. 2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for new sites, or if you're confident your site works on HTTPS. You can undo this change by editing your web server's configuration. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Zadejte 2 a stiskněte Enter pro dokončení instalace:
Redirecting all traffic on port 80 to ssl in /etc/nginx/sites-enabled/drupal - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Congratulations! You have successfully enabled https://drupal.linuxbuz.com You should test your configuration at: https://www.ssllabs.com/ssltest/analyze.html?d=drupal.linuxbuz.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - IMPORTANT NOTES: - Congratulations! Your certificate and chain have been saved at: /etc/letsencrypt/live/drupal.linuxbuz.com/fullchain.pem Your key file has been saved at: /etc/letsencrypt/live/drupal.linuxbuz.com/privkey.pem Your cert will expire on 2020-08-12. To obtain a new or tweaked version of this certificate in the future, simply run certbot again with the "certonly" option. To non-interactively renew *all* of your certificates, run "certbot renew" - If you like Certbot, please consider supporting our work by: Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate Donating to EFF: https://eff.org/donate-le
V tuto chvíli je váš web Drupal zabezpečený pomocí Let's Encrypt SSL.
Přístup k průvodci webovou instalací Drupal
Nyní otevřete webový prohlížeč a zadejte adresu URL https://drupal.linuxbuz.com. Budete přesměrováni na stránku výběru jazyka Drupal:
Vyberte požadovaný jazyk a klikněte na tlačítko Uložit a pokračovat knoflík. Měli byste vidět stránku Instalační profil:
Vyberte požadovaný instalační profil a klikněte na tlačítko Uložit a pokračovat knoflík. Měli byste vidět konfigurační stránku databáze:
Klikněte na tlačítko Uložit a pokračovat knoflík. Měli byste vidět stránku Konfigurace webu:
Zadejte název webu, uživatelské jméno správce, heslo a klikněte na tlačítko Uložit a pokračovat knoflík. Budete přesměrováni na výchozí řídicí panel Drupal na následující stránce:
Závěr
Gratulujeme! úspěšně jste nainstalovali a zabezpečili Drupal pomocí Let's Encrypt SSL na Ubuntu 20.04. Nyní můžete začít přizpůsobovat svůj web Drupal. Pro více informací navštivte oficiální dokumentaci Drupalu.