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).
- Název domény bez www (např. itzgeek.net)>> A zaznamenat bod k IP serveru
- 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 --nginx1. 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-web1. 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.