Vytvoření šablony VPS s Drupal 9 na CentOS 8

Pokračujeme v rozšiřování našeho tržiště. Nedávno jsme mluvili o tom, jak jsme vytvořili obraz Gitlabu, a tento týden se v našem tržišti objevil Drupal.

Přinášíme vám důvody, proč jsme si vybrali právě jeho a jak obraz vznikal.

Vytvoření šablony VPS s Drupal 9 na CentOS 8

Drupal — pohodlná a výkonná platforma pro vytváření jakýchkoli typů webových stránek: od mikrostránek a blogů po velké sociální projekty, používající se také jako základ pro webové aplikace, psaná v PHP a využívající relační databáze jako úložiště.

Drupal 9 zahrnuje všechny funkce zavedené ve verzi 8.9. Hlavní rozdíl mezi verzí 9 a verzí 8 spočívá v tom, že pro platformu budou vydávány aktualizace a opravy zabezpečení i po listopadu 2021. Ve verzi 9 byl také zjednodušen proces aktualizace, což zjednodušuje přechod z verze 8.

Požadavky na server

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

Základní soubory Drupalu zabírají přibližně 100 MB, navíc budete potřebovat místo na ukládání obrázků, databáze, motivů, dalších modulů a záloh, což bude záviset na velikosti vašeho webu.

Pro Drupal 9 je potřeba PHP 7.4 nebo vyšší s minimálním limitem paměti (memory_limit) 64 MB, při použití dalších modulů se doporučuje nastavit 128 MB.

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

Budeme instalovat Drupal pomocí Nginx a MySQL.

Instalace

Aktualizujeme nainstalované balíčky na nejnovější verzi:

sudo dnf update -y

Přidáme trvalé povolení 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

Použijeme nová pravidla firewallu:

sudo systemctl reload firewalld

Nainstalujeme Nginx:

sudo dnf install nginx -y

Spustíme a aktivujeme server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Protože v současném repozitáři Centos je používána verze PHP 7.2, přidáme repozitář REMI s PHP 7.4 (minimální verze pro Drupal 9).
Proto přidáme repozitář EPEL (vyžaduje ho repozitář REMI):

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

Přidáme repozitář REMI:

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

Aktivujeme modul php:remi-7.4 pro instalaci php 7.4:

sudo dnf module enable php:remi-7.4 -y

Nainstalujeme php-fpm a php-cli:

sudo dnf install -y php-fpm php-cli

Nainstalujeme požadované PHP moduly 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

Také nainstalujeme doporučené moduly PHP mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Nainstalujeme server MySQL:

sudo dnf install mysql-server -y

Aktivujeme a spustíme server MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Protože vytváříme šablonu pro VDS, které mohou být pomalé, přidáme zpoždění spuštění mysqld 30 sekund, jinak může být problém se spuštěním serveru při prvním zavedení systému:

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

Změníme skupinu a uživatele, pod kterými bude nginx pracovat, tím, že provedeme změny 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ěníme vlastníka adresáře sezení PHP rovněž na nginx:

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

Odstraníme řádky s komentáři z konfiguračního souboru /etc/nginx/nginx.conf (aby nedošlo k dvojímu spuštění pro sed):

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

Přidáme do /etc/nginx/nginx.conf nastavení komprese gzip

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 do /etc/nginx/nginx.conf nastavení indexového souboru index.php:

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

Přidáme nastavení pro výchozí server pro zpracování php přes socket php-fpm, vypneme log pro statické soubory, zvýšíme dobu expirace, vypneme log přístupu a chyb pro favicon.ico a robots.txt a zakážeme přístup k souborům .ht pro všechny:

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

Nainstalujeme wget, který je vyžadován pro instalaci certbot:

sudo dnf install wget -y

Stáhneme spustitelný soubor certbot z oficiálního webu:

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

Přesuneme certbot do /usr/local/bin/:

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

A nastavíme práva a vlastníka root:

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

Nainstalujeme závislosti certbotu a v této fázi přerušíme jeho provoz (Odpovědi: Y, c):

certbot-auto

Stáhneme z oficiálního webu archiv s poslední verzí Drupal 9:

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

Nainstalujeme tar pro rozbalení archivu:

sudo dnf install tar -y

Odstraníme 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řesuneme 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/

Odstraníme podadresář:

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

Odstraníme archiv s instalačními soubory:

rm -f ./tar.gz

Nastavíme vlastníka souborů na nginx:

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

V této fázi vypneme server a vytvoříme snapshot:

shutdown -h now

Po spuštění VDS ze snapshotu provedeme prvotní nastavení MySQL serveru 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:

Odstraníme anonymní uživatele:

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

Zakážeme vzdálené přihlašování root:

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

Odstraníme testovací databázi:

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

Restartujeme privilegované tabulky:

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

Poté, pro dokončení instalace, můžeme přejít na adresu vps_ip_address
Na této adrese uvidíme instalační stránku Drupal.

Vybereme používaný jazyk. Například: čeština. Klikneme na „Uložit a pokračovat“

Vybereme instalační profil (demo se používá výhradně pro seznámení se systémem). V našem případě to bude „standardní“.

Na další stránce zadáme název databáze, například „drupal“. Uvedeme jméno uživatele DB root a heslo, které jsme mu nastavili při spuštění mysql_secure_installation. Klikneme na „Uložit a pokračovat“.

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

Zadejte název webu, nastavte e-mail webu (ze kterého budou přicházet upozornění), uživatelské jméno, heslo a e-mail administrátorského účtu Drupal. Také nastavte zemi a časové pásmo v regionálních nastaveních. A dokončete instalaci kliknutím na „Uložit a pokračovat“.

Poté se můžete přihlásit do administračního panelu pomocí vytvořeného uživatelského jména a hesla pro Drupal.

Nastavení HTTPS (volitelné)

Pro nastavení HTTPS musí mít VDS platné DNS jméno, zadejte ho do

/etc/nginx/nginx.conf

v sekci serveru jméno serveru (například):

server_name  domainname.cz;

Restartujeme nginx:

service nginx restart

Spustíme certbot:

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

Zadejte svůj e-mail, souhlasíte s podmínkami služby (A), Přihlášení k odběru novinek (volitelné) (N), vyberte doménová jména, pro která je třeba vydat certifikát (Enter pro všechna).

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

Gratulujeme! Úspěšně jste povolili ...

Po tomto připojení bude port 80 přesměrován na 443 (https).

Přidáme do /etc/crontab pro automatickou aktualizaci certifikátů:

# 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í slouží k řešení problému s dynamickým určováním base_url a je určeno k prevenci útoků HTTP HOST Header (kdy si váš web myslí, že je někdo jiný).

K tomu je třeba uvést důvěryhodná doménová jména webu v konfiguračním souboru.

V souboru

/usr/share/nginx/html/sites/default/settings.php odkomentujte nebo přidejte nastavení s vzory aktuálních názvů webů, například:

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

Instalace PHP APCu (DOPORUČUJE SE)

Drupal podporuje APCu — Alternative PHP User Cache; verze 8 a 9 intenzivněji využívají APCu jako krátkodobou místní mezipaměť než předchozí verze. Velikost mezipaměti ve výchozím nastavení (32 MB) vyhovuje většině webů a nemůže překročit 512 MB.

K aktivaci nainstalujte modul PHP APCu:

dnf -y install php-pecl-apcu

Restartujeme 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 mezipaměť, v administračním panelu můžete vidět varování, že přidělená velikost paměti pro mezipaměť se liší od doporučené, ale ve skutečnosti všechno funguje správně, a nesprávné varování bude pravděpodobně opraveno v nejbližších aktualizacích.

Nebo pokud varování je nepříjemné, můžete použít odpovídající patch z oficiálního webu.

Rádi bychom Vám připomněli, že také můžete pro nás vytvořit obraz

Existují tři možnosti, jak se zapojit.

Připravte si obraz sami a získejte 3000 Kč na zůstatek

Pokud jste připraveni se ihned vrhnout do práce a vytvořit obraz, který vám chybí, přidáme vám 3000 Kč na vnitřní zůstatek — můžete je utratit za servery.

Jak vytvořit svůj obraz:

  1. Vytvořte si u nás účet na webu
  2. Dejte vědět podpoře, že plánujete vytvářet a testovat obrazy
  3. Přidáme vám 3000 Kč a aktivujeme možnost vytvářet snapshoty
  4. Objednejte si virtuální server s čistým operačním systémem
  5. Nainstalujte na tuto VPS software a nastavte jej
  6. Sestavte návod nebo skript pro nasazení softwaru
  7. Vytvořte snapshot pro nastavený server
  8. Objednejte nový virtuální server, výběrem dříve vytvořeného snapshotu v rozbalovacím seznamu „Serverový šablon“
  9. V případě úspěšného vytvoření serveru předáte materiály získané v kroku 6 technické podpoře
  10. V případě chyby se můžete informovat u podpory o důvodu a opakovat nastavení

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

Pokud jste vývojář softwaru, který je nasazován a používán na VPS, můžeme vás zahrnout do tržiště. Tak vám můžeme pomoci získat nové klienty, provoz a povědomí. Napište nám

Řekněte v komentářích, jakého obrazu vám chybí?

A my ho připravíme za vás

Vytvoření šablony VPS s Drupal 9 na CentOS 8

Vytvoření šablony VPS s Drupal 9 na CentOS 8

Zdroj: habr.com

Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Koupit spolehlivý hosting pro webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster