Vytvoření šablony VPS pomocí Drupal 9 na Centos 8

Pokračujeme v rozšiřování našeho trhu. Nedávno jsme vám řekli, jak na to vytvořil obrázek Gitlabu, a tento týden se na našem tržišti objevil Drupal.

Řekneme vám, proč jsme si ho vybrali a jak obrázek vznikl.

Vytvoření šablony VPS pomocí Drupal 9 na Centos 8

Drupal — pohodlná a výkonná platforma pro tvorbu jakéhokoli typu webových stránek: od microsites a blogů až po velké sociální projekty, používaná také jako základ pro webové aplikace, napsaná v PHP a využívající relační databáze jako úložiště dat.

Drupal 9 obsahuje všechny funkce představené ve verzi 8.9. Klíčový rozdíl mezi verzí 9 a verzí 8 je v tom, že platforma bude i po listopadu 2021 nadále dostávat aktualizace a opravy zabezpečení. Verze 9 také zjednodušuje proces aktualizace, čímž je proces upgradu z verze 8 ještě jednodušší.

Požadavky na server

Pro použití Drupalu se doporučuje použít 2 GB RAM a 2 jádra CPU.

Hlavní soubory Drupalu zabírají asi 100 MB, navíc budete potřebovat prostor pro ukládání obrázků, databáze, motivů, doplňkových modulů a záloh, což bude záviset na velikosti vašeho webu.

Drupal 9 vyžaduje PHP 7.4 nebo vyšší s minimálním omezením (memory_limit) pro 64 MB paměti, v případě použití přídavných modulů se doporučuje nainstalovat 128 MB.

Drupal může používat Apache nebo Nginx jako webový server a MySQL, PostgreSQL nebo SQLite jako databázi.

Budeme instalovat Drupal pomocí Nginx a MySQL.

Instalace

Pojďme aktualizovat nainstalované balíčky na nejnovější verzi:

sudo dnf update -y

Přidejme trvalé oprávnění pro příchozí provoz na porty http/80 a https/443:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https

Aplikujme nová pravidla brány firewall:

sudo systemctl reload firewalld

Pojďme nainstalovat Nginx:

sudo dnf install nginx -y

Spusťte a povolte server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Protože hlavní úložiště Centos aktuálně používá PHP 7.2, přidejte úložiště REMI s PHP 7.4 (minimální verze pro Drupal 9).
Chcete-li to provést, přidejte úložiště EPEL (vyžadované úložištěm REMI):

rpm -Uvh https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Přidáme úložiště REMI:

sudo dnf install -y https://rpms.remirepo.net/enterprise/remi-release-8.rpm

Povolme modulu php:remi-7.4 instalaci php 7.4:

sudo dnf module enable php:remi-7.4 -y

Nainstalujte php-fpm a php-cli:

sudo dnf install -y php-fpm php-cli

Pojďme nainstalovat PHP moduly potřebné pro fungování Drupalu:

sudo dnf install -y php-mysqlnd php-date php-dom php-filter php-gd php-hash php-json php-pcre php-pdo php-session php-simplexml php-spl php-tokenizer php-xml

Nainstalujeme také doporučené moduly opcache PHP mbstring:

sudo dnf install -y php-mbstring php-opcache

Nainstalujme server MySQL:

sudo dnf install mysql-server -y

Zapneme a spustíme MySQL server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Protože vytváříme šablonu pro VDS a mohou být pomalé, přidáme zpoždění startu mysqld o 30 sekund, jinak mohou nastat problémy se spuštěním serveru během počátečního spouštění systému:

sudo sed -i '/Group=mysql/a 
ExecStartPre=/bin/sleep 30
' /usr/lib/systemd/system/mysqld.service

Pojďme změnit skupinu a uživatele, pod kterými bude nginx běžet, provedením změn v /etc/php-fpm.d/www.conf:

sudo sed -i --follow-symlinks 's/user = apache/user = nginx/g' /etc/php-fpm.d/www.conf
sudo sed -i --follow-symlinks 's/group = apache/group = nginx/g' /etc/php-fpm.d/www.conf

Změňme podle toho vlastníka adresáře PHP sessions na nginx:

sudo chown -R nginx. /var/lib/php/session

Odeberme řádky s komentáři z konfiguračního souboru /etc/nginx/nginx.conf (aby neexistovaly žádné dvojité spouštěče pro sed):

sudo sed -i -e '/^[ t]*#/d'  /etc/nginx/nginx.conf

Přidejte nastavení komprese gzip do /etc/nginx/nginx.conf

sudo sed -i '/types_hash_max_size 2048;/a 

    gzip on;
    gzip_static on;
    gzip_types text/plain text/css application/json application/x-javascript text/xml application/xml application/xml+rss text/javascript application/javascript image/x-icon image/svg+xml application/x-font-ttf;
    gzip_comp_level 9;
    gzip_proxied any;
    gzip_min_length 1000;
    gzip_disable "msie6";
    gzip_vary on; 
' /etc/nginx/nginx.conf

Přidáme nastavení indexového souboru index.php do /etc/nginx/nginx.conf:

sudo sed -i '/        root         /usr/share/nginx/html;/a 
        index index.php index.html index.htm;
' /etc/nginx/nginx.conf

Přidejme nastavení pro výchozí server: zpracování PHP přes php-fpm socket, deaktivujeme protokol pro statické soubory, prodloužíme dobu expirace, zakážeme přístup a protokol chyb pro favicon.ico a robots.txt a odepřeme přístup k .ht soubory pro každého:

sudo sed -i '/        location / {/a 
		try_files $uri $uri/ /index.php?q=$uri&$args;
        }
    
        location ~* ^.+.(js|css|png|jpg|jpeg|gif|ico|woff)$ {
        access_log off;
        expires max;
        }
    
        location ~ .php$ {
        try_files  $uri =404;
        fastcgi_pass   unix:/run/php-fpm/www.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_intercept_errors on;
        fastcgi_ignore_client_abort off;
        fastcgi_connect_timeout 60;
        fastcgi_send_timeout 180;
        fastcgi_read_timeout 180;
        fastcgi_buffer_size 128k;
        fastcgi_buffers 4 256k;
        fastcgi_busy_buffers_size 256k;
        fastcgi_temp_file_write_size 256k;
        }
    
        location = /favicon.ico {
        log_not_found off;
        access_log off;
        }
    
        location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
        }
    
        location ~ /.ht {
        deny all;' /etc/nginx/nginx.conf

Instalace wget nutná pro instalaci certbota:

sudo dnf install wget -y

Stáhněte si spustitelný soubor certbot z offsite:

cd ~
wget https://dl.eff.org/certbot-auto

Přesuňte certbot do /usr/local/bin/:

mv certbot-auto /usr/local/bin/certbot-auto

A přidělme práva jako vlastník rootovi:

chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Nainstalujme závislosti certbota a v této fázi přerušme jeho práci (Odpovědi: Y, c):

certbot-auto

Pojďme si stáhnout archiv s nejnovější verzí Drupalu 9 z offsite:

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

Nainstalujte tar pro rozbalení archivu:

sudo dnf install tar -y

Smažeme výchozí soubory v adresáři /usr/share/nginx/html/:

rm -rf /usr/share/nginx/html/*

Rozbalíme soubory do adresáře webového serveru:

tar xf tar.gz -C /usr/share/nginx/html/

Přesuňte soubory z podadresáře do kořenového adresáře webového serveru:

mv /usr/share/nginx/html/drupal-9.0.7/* /usr/share/nginx/html/

Smažeme podadresář:

rm -rf /usr/share/nginx/html/drupal-9.0.7

Smažeme archiv s instalačními soubory:

rm -f ./tar.gz

Pojďme přiřadit vlastníka souborů nginx:

chown -R nginx. /usr/share/nginx/html

V této fázi vypneme server a uděláme snímek:

shutdown -h now

Po spuštění VDS ze snímku provedeme počáteční nastavení serveru MySQL spuštěním skriptu:

mysql_secure_installation

Povolíme validátor hesel:

Would you like to setup VALIDATE PASSWORD component? : y

Nastavíme heslo pro uživatele root MySQL:

New password:
Re-enter new password:

Pojďme odstranit anonymní uživatele:

Remove anonymous users? (Press y|Y for Yes, any other key for No) : y

Zabraňme root ve vzdáleném připojení:

Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y

Smažeme testovací databázi:

Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y

Znovu načteme tabulky oprávnění:

Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

Poté, abychom dokončili instalaci, můžeme přejít na vps_ip_address
Na této adrese uvidíme instalační stránku Drupalu.

Vyberme jazyk, který se má použít. Například: ruština. Klikněte na „Uložit a pokračovat“

Vybereme instalační profil (demo slouží pouze k seznámení se systémem). V našem případě nechť je to „standardní“.

Na další stránce pojmenujeme databázi, například „drupal“. Uveďme uživatelské jméno databáze root a heslo, které mu bylo přiděleno při spuštění mysql_secure_installation. Klikněte na „Uložit a pokračovat“.

Počkejte na dokončení instalace a aktualizace překladů (proces může trvat několik minut).

Uvedeme název webu, nastavíme e-mail webu (jménem kterého se budou zasílat upozornění webu), přihlašovací jméno, heslo a e-mail administrátorského účtu Drupal. V regionálním nastavení také nastavíme zemi a časové pásmo. A dokončete instalaci kliknutím na „Uložit a pokračovat“.

Poté můžete přejít na ovládací panel s vytvořeným přihlašovacím jménem a heslem správce Drupal.

Nastavení HTTPS (volitelné)

Chcete-li nakonfigurovat HTTPS, musí mít VDS platný název DNS, zadejte v

/etc/nginx/nginx.conf

v sekci server název serveru (například):

server_name  domainname.ru;

Restartujeme nginx:

service nginx restart

Spustíme certbot:

sudo /usr/local/bin/certbot-auto --nginx

Zadejte svůj e-mail, odsouhlaste podmínky služby (A), Přihlaste se k odběru novinek (nepovinné) (N), vyberte názvy domén, pro které chcete certifikát vystavit (Zadejte pro každého).

Pokud vše proběhlo bez chyb, zobrazí se nám zpráva o úspěšném vydání certifikátů a konfiguraci serveru:

Congratulations! You have successfully enabled ...

Poté budou připojení k portu 80 přesměrována na 443 (https).

Chcete-li automaticky aktualizovat certifikáty, přidejte do /etc/crontab:

# Cert Renewal
30 2 * * * root /usr/local/bin/certbot-auto renew --post-hook "nginx -s reload"

Nastavení zabezpečení důvěryhodného hostitele (doporučeno)

Toto nastavení je zamýšleno jako řešení problému spojeného s dynamickým určováním base_url a je navrženo tak, aby zabránilo útokům záhlaví HTTP HOST (když si váš web myslí, že jde o někoho jiného).

Chcete-li to provést, musíte v souboru nastavení zadat názvy důvěryhodných domén pro web.

V souboru

/usr/share/nginx/html/sites/default/settings.php Pojďme odkomentovat nebo přidat nastavení se vzory skutečných názvů webů, například:

$settings['trusted_host_patterns'] = [
  '^www.mydomain.ru$',
];

Instalace PHP APCu (DOPORUČENO)

Drupal podporuje APCu - Alternative PHP User Cache, verze 8 a 9 více využívají APCu jako krátkodobou lokální cache než předchozí verze. Výchozí velikost mezipaměti (32 MB) je vhodná pro většinu webů a nesmí překročit 512 MB.

Pro aktivaci nainstalujte modul PHP APCu:

dnf -y install php-pecl-apcu

Restartujte nginx a php-fpm:

service nginx restart
service php-fpm restart

Pokud používáte ruský jazyk a APCu s doporučenou velikostí paměti pro cache, může se vám na ovládacím panelu zobrazit varování, že velikost přidělené paměti pro cache je jiná než doporučená, ale ve skutečnosti vše funguje správně, a nesprávné varování bude s největší pravděpodobností opraveno v příštích aktualizacích.

Nebo pokud vás varování bolí oči, můžete použít odpovídající patch z offsite.

Připomínáme, že si pro nás můžete udělat i obrázek

Existují tři možnosti, jak se zúčastnit.

Připravte si obrázek sami a získejte 3000 XNUMX rublů na svůj zůstatek

Pokud jste připraveni okamžitě se vrhnout do bitvy a vytvořit image, která vám chybí, připíšeme vám 3000 XNUMX rublů k vašemu vnitřnímu zůstatku, které můžete utratit na serverech.

Jak vytvořit vlastní obrázek:

  1. Vytvořte si u nás účet na webové stránky
  2. Dejte podpoře vědět, že se chystáte vytvářet a testovat obrázky
  3. Připíšeme vám 3000 XNUMX rublů a umožníme možnost vytvářet snímky
  4. Objednejte si virtuální server s čistým operačním systémem
  5. Nainstalujte software na tento VPS a nakonfigurujte jej
  6. Napište pokyny nebo skript pro nasazení softwaru
  7. Vytvořte snímek pro nakonfigurovaný server
  8. Objednejte si nový virtuální server výběrem dříve vytvořeného snímku v rozevíracím seznamu „Šablona serveru“.
  9. Pokud je server úspěšně vytvořen, přeneste materiály obdržené ve fázi 6 technické podpoře
  10. Pokud dojde k chybě, můžete si u podpory zjistit důvod a opakovat nastavení

Pro majitele firem: nabídněte svůj software

Pokud jste vývojář softwaru, který je nasazen a používán na VPS, můžeme vás zahrnout do trhu. Takto vám můžeme pomoci přivést nové zákazníky, návštěvnost a povědomí. Napište nám

Napište nám do komentářů, jaký obrázek vám chybí?

A připravíme si ho sami

Vytvoření šablony VPS pomocí Drupal 9 na Centos 8

Vytvoření šablony VPS pomocí Drupal 9 na Centos 8

Zdroj: www.habr.com