Ustvarjanje predloge VPS z Drupal 9 na Centos 8.

Nadal širimo naš tržnici. Nedavno smo govorili o tome kako smo napravili sliku Gitlaba, a ovog tjedna našoj tržnici se pridružio Drupal.

Objašnjavamo zašto smo ga odabrali i kako je slika stvorena.

Ustvarjanje predloge VPS z Drupal 9 na Centos 8.

Drupal — praktična i moćna platforma za izradu svih vrsta web stranica: od mikrositeova i blogova do velikih društvenih projekata, koja se također koristi kao osnova za web aplikacije, napisana na PHP-u i koristi relacijske baze podataka kao skladište podataka.

Drupal 9 uključuje sve značajke implementirane u verziji 8.9. Ključna razlika između verzije 9 i verzije 8 je ta da će platforma i dalje primati ažuriranja i sigurnosne ispravke nakon studenog 2021. godine. Također, u verziji 9 olakšan je proces ažuriranja, čime je proces nadogradnje s verzije 8 još jednostavniji.

Zahtjevi za poslužitelj

Za korištenje Drupala preporučuje se koristiti 2 GB RAM-a i 2 CPU jezgre.

Osnovni datoteke Drupala zauzimaju oko 100 MB, a dodatno će vam biti potrebno mjesto za pohranu slika, baza podataka, tema, dodatnih modula i sigurnosnih kopija, koje će ovisiti o veličini vaše web stranice.

Za Drupal 9 potrebno je PHP 7.4 ili novija verzija s minimalnim ograničenjem (memory_limit) memorije od 64 MB, a u slučaju korištenja dodatnih modula preporučuje se postaviti 128 MB.

Kao web server Drupal može koristiti Apache ili Nginx, a kao bazu podataka MySQL, PostgreSQL ili SQLite.

Instalirat ćemo Drupal koristeći Nginx i MySQL.

Namestitev

Ažurirati ćemo instalirane pakete na najnoviju verziju:

sudo dnf update -y

Dodajmo stalno dopuštenje za ulazni promet na http/80 i https/443 portove:

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

Primijenit ćemo nova pravila vatrozida:

sudo systemctl reload firewalld

Instaliramo Nginx:

sudo dnf install nginx -y

Pokrećemo i omogućujemo Nginx server:

sudo systemctl start nginx
sudo systemctl enable nginx

Budući da se trenutno u glavnom repozitoriju Centos koristi verzija PHP 7.2, dodajemo REMI repozitorij s PHP 7.4 (minimalna verzija za Drupal 9).
Za to dodajmo EPEL repozitorij (potreban za REMI repozitorij):

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

Dodajmo REMI repozitorij:

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

Uključimo php:remi-7.4 modul za instalaciju PHP 7.4:

sudo dnf module enable php:remi-7.4 -y

Instalirati ćemo php-fpm i php-cli:

sudo dnf install -y php-fpm php-cli

Instaliramo PHP module potrebne za rad Drupala:

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

Tudi namestimo priporočene PHP module mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Namestimo strežnik MySQL:

sudo dnf install mysql-server -y

Vključimo in zaženemo strežnik MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Ker pripravljamo predlogo za VDS, ki so lahko počasni, dodamo zakasnitev za zagon mysqld 30 sekund, sicer lahko pride do težav z zagonom strežnika ob prvotnem zagonu sistema:

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

Spremenimo skupino in uporabnika, pod katerim bo nginx deloval, tako da spremenimo \/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

Spremenimo lastnika mape s sejo PHP tudi na nginx:

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

Odstranimo vrstice s komentarji iz konfiguracijske datoteke \/etc\/nginx\/nginx.conf (da ne bo dvojnega delovanja za sed):

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

Dodamo v \/etc\/nginx\/nginx.conf nastavitve za gzip kompresijo

sudo sed -i '\/types_hash_max_size 2048;\/a \n\n    gzip on;\n    gzip_static on;\n    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;\n    gzip_comp_level 9;\n    gzip_proxied any;\n    gzip_min_length 1000;\n    gzip_disable "msie6";\n    gzip_vary on; \n' \/etc\/nginx\/nginx.conf

Dodamo v \/etc\/nginx\/nginx.conf nastavitve za indeksno datoteko index.php:

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

Dodamo nastavitve za privzeti strežnik obdelavo php preko soketa php-fpm, onemogočimo log za statične datoteke, povečamo čas poteka, onemogočimo dostopne in napake za favicon.ico in robots.txt ter prepovemo dostop do datotek .ht za vse:

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

Namestimo wget, ki je potreben za namestitev certbota:

sudo dnf install wget -y

Začnemo s prenosom izvajalne datoteke certbot z uradne strani:

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

Premaknemo certbot v /usr/local/bin/:

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

In dodelimo pravice ter lastnika root:

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

Namestimo odvisnosti certbot in v tem koraku prekiniti njegovo delovanje (Odgovori: Y, c):

certbot-auto

Prenesemo arhiv z najnovejšo različico Drupal 9 z uradne strani:

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

Namestimo tar za razpakiranje arhiva:

sudo dnf install tar -y

Odstranimo privzete datoteke v imeniku /usr/share/nginx/html/:

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

Razpakiramo datoteke v imenik spletnega strežnika:

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

Premaknemo datoteke iz podimenika v korenski imenik spletnega strežnika:

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

Odstranimo podimenik:

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

Odstranimo arhiv z namestitvenimi datotekami:

rm -f ./tar.gz

Dodelimo lastništvo datotek nginx:

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

V tem koraku bomo izklopili strežnik in naredili posnetek:

shutdown -h now

Po zagonu VDS iz posnetka bomo izvedli začetno nastavitev MySQL strežnika z zagonom skripte:

mysql_secure_installation

Vključimo validator gesel:

Would you like to setup VALIDATE PASSWORD component? : y

Določimo geslo za uporabnika root MySQL:

New password:
Re-enter new password:

Odstranimo anonimne uporabnike:

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

Onemogočimo dostop root na daljavo:

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

Odstranimo testno bazo podatkov:

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

Osvežimo tabele privilegije:

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

Po tem, da končamo namestitev, lahko obiščemo naslov vps_ip_address
Na tem naslovu bomo videli stran z namestitvijo Drupala.

Izberemo uporabljeni jezik. Na primer: slovenščina. Pritisnemo 'Shrani in nadaljuj'

Izberemo namestitveni profil (demo se uporablja izključno za seznanjanje s sistemom). V našem primeru naj bo to 'standard'.

Na naslednji strani določimo ime baze podatkov, na primer 'drupal'. Določimo ime uporabnika baze podatkov root in geslo, ki smo mu ga dodelili pri zagonu mysql_secure_installation. Pritisnemo 'Shrani in nadaljuj'.

Počakamo na zaključek namestitve in posodobitev prevodov (postopek lahko traja nekaj minut).

Navedite naziv sajta, zadate email sa kojeg će dolaziti obaveštenja, korisničko ime, lozinku i email računa administratora Drupal-a. Takođe, postavite zemlju i vremensku zonu u regionalnim podešavanjima. Instalaciju završavamo klikom na 'Sačuvaj i nastavi'.

Nakon toga možete preći na kontrolnu tablu koristeći kreirano korisničko ime i lozinku administratora Drupal-a.

Podešavanje HTTPS (opcionalno)

Za podešavanje HTTPS-a, VDS mora imati važeće DNS ime, navedite u

/etc/nginx/nginx.conf

odeljku server naziv servera (na primer):

server_name  domainname.ru;

Ponovo pokrenimo nginx:

service nginx restart

Pokrenimo certbot:

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

Unesite svoj email, saglasite se sa uslovima servisa (A), pretplata na newsletter (opcionalno) (N), izaberite domenska imena za koja treba izraditi sertifikat (Enter za sve).

U slučaju da sve prođe bez grešaka, videćemo poruku o uspešnom izdavanju sertifikata i podešavanju servera:

Čestitamo! Uspešno ste omogućili ...

Nakon toga, konekcije na portu 80 biće preusmerene na 443 (https).

Dodajte u /etc/crontab za automatsko ažuriranje sertifikata:

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

Podešavanje Trusted Host Security (preporučuje se)

Ova postavka je rešenje problema povezanog sa dinamičkim određivanjem base_url i osmišljena je da spreči napade HTTP HOST Header (kada vaš sajt misli da je nešto drugo).

Za to je potrebno navesti pouzdana imena domena sajta u podešavanju.

V datoteki

/usr/share/nginx/html/sites/default/settings.php otkomentarišite ili dodajte postavku sa obrascima aktuelnih imena sajta, na primer:

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

Instalacija PHP APCu (PREPORUČUJE SE)

Drupal podržava APCu — Alternative PHP User Cache, verzije 8 i 9 intenzivnije koriste APCu kao kratkoročni lokalni keš nego prethodne verzije. Podrazumevana veličina keša (32 MB) odgovara većini sajtova i ne može preći 512 MB.

Za aktivaciju instalirajte PHP APCu modul:

dnf -y install php-pecl-apcu

Ponovo pokrenite nginx i php-fpm:

service nginx restart
service php-fpm restart

U slučaju korišćenja srpskog jezika i APCu sa preporučenom veličinom memorije za keš, u kontrolnoj tabli možete videti upozorenje da se veličina dodeljene memorije za keš razlikuje od preporučene, ali zapravo sve funkcioniše ispravno, a netačno upozorenje će verovatno ispraviti u narednim ažuriranjima.

Ili ako vam upozorenje ne prija, možete koristiti ustrezni popravek z uradne strani.

Želimo vam spomniti, da lahko tudi vi ustvarite sliko za nas

Obstajajo tri možnosti, kako sodelovati.

Pripravite sliko sami in prejmite 3000 rubljev na svoj račun

Če ste pripravljeni takoj skočiti v akcijo in ustvariti sliko, ki je ne morete najti, vam bomo nakažemo 3000 rubljev na notranji račun — kar lahko porabite za strežnike.

Kako ustvariti svojo sliko:

  1. Ustvarite račun pri nas na website
  2. Obvestite podporo, da nameravate ustvarjati in testirati slike
  3. Nakažemo vam 3000 rubljev in omogočili bomo možnost ustvarjanja posnetkov
  4. Naročite virtualni strežnik s čisto operacijsko sistem
  5. Namestite programsko opremo na ta VPS in jo konfigurirajte
  6. Pripravite navodila ali skripte za namestitev programske opreme
  7. Ustvarite posnetek za konfiguriran strežnik
  8. Naročite nov virtualni strežnik, tako da v spustnem seznamu izberete 'Predloga strežnika', prej ustvarjen posnetek
  9. V primeru uspešne ustvaritve strežnika predajte materiale, pridobljene v koraku 6, tehnični podpori
  10. V primeru napake lahko pri podpori preverite vzrok in ponovite konfiguracijo

Za podjetnike: ponudite svojo programsko opremo

Če ste razvijalec programske opreme, ki se namešča in uporablja na VPS, vas lahko vključimo v tržnico. Na ta način vam lahko pomagamo pridobiti nove stranke, promet in prepoznavnost. Pišite nam

Sporočite v komentarjih, katere slike vam primanjkuje?

In pripravili jo bomo sami

Ustvarjanje predloge VPS z Drupal 9 na Centos 8.

Ustvarjanje predloge VPS z Drupal 9 na Centos 8.

Izvor: habr.com

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster