Vytvorenie šablóny VPS pomocou Drupal 9 na Centos 8

Pokračujeme v rozširovaní nášho trhu. Nedávno sme vám povedali, ako na to vytvoril obrázok Gitlabu, a tento týždeň sa na našom trhovisku objavil Drupal.

Povieme vám, prečo sme si ho vybrali a ako obraz vznikol.

Vytvorenie šablóny VPS pomocou Drupal 9 na Centos 8

Drupal — pohodlná a výkonná platforma na vytváranie akéhokoľvek typu webovej stránky: od mikrostránok a blogov až po veľké sociálne projekty, používaná aj ako základ pre webové aplikácie, napísaná v PHP a využívajúca relačné databázy ako úložisko dát.

Drupal 9 obsahuje všetky funkcie predstavené vo verzii 8.9. Kľúčový rozdiel medzi verziou 9 a verziou 8 je v tom, že platforma bude aj po novembri 2021 naďalej dostávať aktualizácie a opravy zabezpečenia. Verzia 9 tiež zjednodušuje proces aktualizácie, čím je proces inovácie z verzie 8 ešte jednoduchší.

Požiadavky na server

Na používanie Drupalu sa odporúča použiť 2 GB RAM a 2 jadrá CPU.

Hlavné súbory Drupalu zaberajú približne 100 MB, okrem toho budete potrebovať priestor na ukladanie obrázkov, databázy, tém, doplnkových modulov a záloh, čo bude závisieť od veľkosti vašej stránky.

Drupal 9 vyžaduje PHP 7.4 alebo vyšší s minimálnym obmedzením (memory_limit) pre pamäť 64 MB, ak sa použijú ďalšie moduly, odporúča sa nainštalovať 128 MB.

Drupal môže používať Apache alebo Nginx ako webový server a MySQL, PostgreSQL alebo SQLite ako databázu.

Budeme inštalovať Drupal pomocou Nginx a MySQL.

Inštalácia

Aktualizujme nainštalované balíčky na najnovšiu verziu:

sudo dnf update -y

Pridajme trvalé povolenie pre prichádzajúci prenos na porty http/80 a https/443:

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

Aplikujme nové pravidlá brány firewall:

sudo systemctl reload firewalld

Nainštalujeme Nginx:

sudo dnf install nginx -y

Začnime a povoľme server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Keďže hlavné úložisko Centos momentálne používa PHP 7.2, pridajme repozitár REMI s PHP 7.4 (minimálna verzia pre Drupal 9).
Ak to chcete urobiť, pridajte úložisko EPEL (požadované úložiskom REMI):

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

Pridajme úložisko REMI:

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

Umožnime modulu php:remi-7.4 nainštalovať php 7.4:

sudo dnf module enable php:remi-7.4 -y

Nainštalujte php-fpm a php-cli:

sudo dnf install -y php-fpm php-cli

Nainštalujte PHP moduly potrebné na fungovanie 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

Nainštalujeme tiež odporúčané moduly opcache PHP mbstring:

sudo dnf install -y php-mbstring php-opcache

Nainštalujeme server MySQL:

sudo dnf install mysql-server -y

Poďme zapnúť a spustiť server MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Keďže vytvárame šablónu pre VDS a môžu byť pomalé, pridáme oneskorenie spustenia mysqld o 30 sekúnd, inak môžu nastať problémy so spustením servera počas počiatočného zavádzania systému:

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

Zmeňme skupinu a používateľa, pod ktorým bude nginx bežať, vykonaním zmien 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

Zmeňme podľa toho vlastníka adresára PHP sessions na nginx:

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

Odstránime riadky s komentármi z konfiguračného súboru /etc/nginx/nginx.conf (aby neexistovali žiadne dvojité spúšťače pre sed):

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

Pridajte nastavenia kompresie 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

Pridajme nastavenia indexového súboru 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

Pridajme nastavenia pre predvolený server: Spracovanie PHP cez php-fpm socket, zakážeme protokol pre statické súbory, predĺžime exspiračný čas, zakážeme prístup a protokol chýb pre favicon.ico a robots.txt a zakážeme prístup k .ht súbory pre 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

Inštalácia wget potrebná na inštaláciu certbota:

sudo dnf install wget -y

Stiahnite si spustiteľný súbor certbot z offsite:

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

Presuňte certbot do /usr/local/bin/:

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

A priraďme práva ako vlastník rootovi:

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

Nainštalujeme závislosti certbota a v tejto fáze prerušme jeho prácu (Odpovede: Y, c):

certbot-auto

Poďme si stiahnuť archív s najnovšou verziou Drupal 9 z offsite:

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

Nainštalujte tar na rozbalenie archívu:

sudo dnf install tar -y

Vymažte predvolené súbory v adresári /usr/share/nginx/html/:

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

Rozbaľme súbory do adresára webového servera:

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

Presuňme súbory z podadresára do koreňového adresára webového servera:

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

Vymažeme podadresár:

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

Vymažeme archív s inštalačnými súbormi:

rm -f ./tar.gz

Priraďme vlastníka súborov nginx:

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

V tejto fáze vypneme server a urobíme snímku:

shutdown -h now

Po spustení VDS zo snímky vykonáme počiatočné nastavenie servera MySQL spustením skriptu:

mysql_secure_installation

Povoľme overovač hesla:

Would you like to setup VALIDATE PASSWORD component? : y

Nastavíme heslo pre používateľa root MySQL:

New password:
Re-enter new password:

Poďme odstrániť anonymných používateľov:

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

Zabránime rootovi v pripojení na diaľku:

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

Vymažeme testovaciu databázu:

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

Znovu načítajme tabuľky privilégií:

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

Po dokončení inštalácie môžeme prejsť na vps_ip_address
Na tejto adrese sa nám zobrazí inštalačná stránka Drupalu.

Vyberme jazyk, ktorý sa má použiť. Napríklad: ruský. Kliknite na „Uložiť a pokračovať“

Vyberieme inštalačný profil (ukážka slúži výhradne na oboznámenie sa so systémom). V našom prípade nech je to „štandardné“.

Na ďalšej stránke pomenujeme databázu, napríklad „drupal“. Označme užívateľské meno databázy root a heslo, ktoré mu bolo pridelené pri spustení mysql_secure_installation. Kliknite na „Uložiť a pokračovať“.

Počkajme na dokončenie inštalácie a aktualizácie prekladov (proces môže trvať niekoľko minút).

Uvedieme názov stránky, nastavíme e-mail stránky (v mene ktorej sa budú odosielať upozornenia stránky), prihlasovacie meno, heslo a email administrátorského účtu Drupal. V regionálnom nastavení nastavíme aj krajinu a časové pásmo. A dokončite inštaláciu kliknutím na „Uložiť a pokračovať“.

Potom môžete prejsť na ovládací panel s vytvoreným prihlasovacím menom a heslom správcu Drupal.

Nastavenie HTTPS (voliteľné)

Ak chcete nakonfigurovať HTTPS, VDS musí mať platný názov DNS, uveďte v

/etc/nginx/nginx.conf

v sekcii server názov servera (napríklad):

server_name  domainname.ru;

Reštartujeme nginx:

service nginx restart

Spustíme certbot:

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

Zadajte svoj e-mail, súhlaste s podmienkami služby (A), Prihláste sa na odber noviniek (voliteľné) (N), vyberte názvy domén, pre ktoré chcete vystaviť certifikát (Zadajte pre všetkých).

Ak všetko prebehlo bez chýb, zobrazí sa nám správa o úspešnom vydaní certifikátov a konfigurácii servera:

Congratulations! You have successfully enabled ...

Potom budú pripojenia k portu 80 presmerované na 443 (https).

Ak chcete automaticky aktualizovať certifikáty, pridajte do /etc/crontab:

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

Nastavenie zabezpečenia dôveryhodného hostiteľa (odporúča sa)

Toto nastavenie je určené ako riešenie problému spojeného s dynamickým určovaním base_url a je určené na zabránenie útokom hlavičky HTTP HOST (keď si vaša stránka myslí, že ide o niekoho iného).

Ak to chcete urobiť, musíte zadať názvy dôveryhodných domén pre lokalitu v súbore nastavení.

V súbore

/usr/share/nginx/html/sites/default/settings.php Zrušme komentár alebo pridáme nastavenie so vzormi skutočných názvov stránok, napríklad:

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

Inštalácia PHP APCu (ODPORÚČANÉ)

Drupal podporuje APCu – alternatívnu používateľskú vyrovnávaciu pamäť PHP, verzie 8 a 9 využívajú APCu ako krátkodobú lokálnu vyrovnávaciu pamäť viac ako predchádzajúce verzie. Predvolená veľkosť vyrovnávacej pamäte (32 MB) je vhodná pre väčšinu stránok a nemôže prekročiť 512 MB.

Ak chcete aktivovať, nainštalujte modul PHP APCu:

dnf -y install php-pecl-apcu

Reštartujte nginx a php-fpm:

service nginx restart
service php-fpm restart

Ak používate ruský jazyk a APCu s odporúčanou veľkosťou pamäte pre vyrovnávaciu pamäť, na ovládacom paneli sa môže zobraziť upozornenie, že veľkosť pridelenej pamäte pre vyrovnávaciu pamäť je iná ako odporúčaná, ale v skutočnosti všetko funguje správne, a nesprávne varovanie bude s najväčšou pravdepodobnosťou opravené v ďalších aktualizáciách.

Alebo ak vás varovanie bolí oči, môžete použiť zodpovedajúca záplata z offsite.

Pripomíname, že obrázok si môžete urobiť aj pre nás

Existujú tri možnosti, ako sa zúčastniť.

Pripravte si obrázok sami a získajte 3000 XNUMX rubľov na zostatok

Ak ste pripravení okamžite sa vrhnúť do boja a vytvoriť obraz, ktorý vám chýba, pripíšeme vám 3000 XNUMX rubľov k vášmu internému zostatku, ktoré môžete minúť na serveroch.

Ako vytvoriť svoj vlastný obrázok:

  1. Vytvorte si u nás účet na Online
  2. Dajte podpore vedieť, že sa chystáte vytvárať a testovať obrázky
  3. Pripíšeme vám 3000 XNUMX rubľov a umožníme vám vytvárať snímky
  4. Objednajte si virtuálny server s čistým operačným systémom
  5. Nainštalujte softvér na tento VPS a nakonfigurujte ho
  6. Napíšte pokyny alebo skript na nasadenie softvéru
  7. Vytvorte snímku pre nakonfigurovaný server
  8. Objednajte si nový virtuálny server výberom predtým vytvorenej snímky v rozbaľovacom zozname „Šablóna servera“.
  9. Ak je server úspešne vytvorený, preneste materiály prijaté v kroku 6 na technickú podporu
  10. Ak sa vyskytne chyba, môžete skontrolovať s podporou dôvod a zopakovať nastavenie

Pre majiteľov firiem: ponúknite svoj softvér

Ak ste vývojár softvéru, ktorý je nasadený a používaný na VPS, môžeme vás zahrnúť do trhu. Takto vám môžeme pomôcť priviesť nových zákazníkov, návštevnosť a povedomie. Napíšte nám

Napíšte nám do komentára, aký obrázok vám chýba?

A pripravíme si ho sami

Vytvorenie šablóny VPS pomocou Drupal 9 na Centos 8

Vytvorenie šablóny VPS pomocou Drupal 9 na Centos 8

Zdroj: hab.com