Krijimi i një template VPS me Drupal 9 në CentOS 8

Vazhdojmë të zgjeronim tregun tonë. Së fundmi, folëm se si krijuam imazhin e Gitlab, ndërsa këtë javë në tregun tonë shfaqet Drupal.

Po tregojmë se pse e zgjodhëm atë dhe si u krijua imazhi.

Krijimi i një template VPS me Drupal 9 në CentOS 8

Drupal — njĂ« platformĂ« e pĂ«rshtatshme dhe e fuqishme pĂ«r krijimin e çdo tipi faqeje: nga faqe tĂ« vogla dhe bllogje deri te projekte tĂ« mĂ«dha sociale, e cila gjithashtu pĂ«rdoret si bazĂ« pĂ«r aplikacione web, e shkruar nĂ« PHP dhe qĂ« pĂ«rdor si ruajtje baza tĂ« dhĂ«nash relationale.

Drupal 9 përfshin të gjitha veçoritë e realizuara në versionin 8.9. Dallimi kryesor midis versionit 9 dhe versionit 8 është se për platformën do të lëshohen përditësime dhe rregullime të sigurisë dhe pas nëntorit 2021. Gjithashtu, në versionin 9 është lehtësuar procesi i përditësimit, duke e bërë atë edhe më të thjeshtë nga versioni 8.

Kërkesat për serverin

Për përdorimin e Drupal rekomandohet të përdorni 2 GB RAM dhe 2 bërthamë CPU.

Skedarët kryesorë të Drupal zënë rreth 100 MB, përveç se do t'ju nevojitet hapësirë për ruajtjen e imazheve, bazës së të dhënave, temave, moduleve shtesë dhe kopjeve rezervë, që do të varen nga madhësia e faqes suaj.

Për Drupal 9 kërkohet PHP 7.4 ose më lart me një kufi minimal (memory_limit) për memorjen 64 MB, në rast se përdoren module shtesë këshillohet të vendosni 128 MB.

Si server web, Drupal mund të përdorë Apache ose Nginx, dhe si bazë të dhënash MySQL, PostgreSQL ose SQLite.

Ne do të instalojmë Drupal duke përdorur Nginx dhe MySQL.

Instalimi

Do të përditësojmë paketat e instaluara në versionin më të ri:

sudo dnf update -y

Do të shtojmë leje të përhershme për trafikun e ardhshëm në portat http/80 dhe https/443:

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

Do të zbatojmë rregullat e reja të firewall-it:

sudo systemctl reload firewalld

Do të instalojmë Nginx:

sudo dnf install nginx -y

Do ta nisim dhe aktivizojmë serverin Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Duke qenë se në këtë moment, në depozitën kryesore të Centos përdoret versioni PHP 7.2, do të shtojmë depozitën REMI me PHP 7.4 (versioni minimal për Drupal 9).
Për këtë, do të shtojmë depozitën EPEL (nevoitet nga depozita REMI):

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

Shtojmë depozitën REMI:

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

Do të aktivizojmë modul php:remi-7.4 për instalimin e php 7.4:

sudo dnf module enable php:remi-7.4 -y

Do të instalojmë php-fpm dhe php-cli:

sudo dnf install -y php-fpm php-cli

Do të instalojmë modulet PHP të nevojshme për funksionimin e Drupal:

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

Gjithashtu do të instalojmë modulet e rekomanduara PHP mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Do të instalojmë serverin MySQL:

sudo dnf install mysql-server -y

Do ta aktivizojmë dhe nisim serverin MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Duke qenë se po krijojmë një model për VDS, dhe ato mund të jenë të ngadalta, do të shtojmë një vonesë fillestare për mysqld prej 30 sekondash, ndryshe mund të ketë probleme me nisjen e serverit gjatë fillimit të sistemit:

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

Do të ndryshojmë grupin dhe përdoruesin nga i cili do të punojë nginx duke bërë ndryshime në /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

Do të ndryshojmë pronarin e katalogut të seancave PHP gjithashtu sipas nginx:

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

Do të heqim rreshtat me komentet nga skedari i konfigurimit /etc/nginx/nginx.conf (në mënyrë që të mos ketë dublime për sed):

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

Do të shtojmë në /etc/nginx/nginx.conf cilësimet e kompresimit 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

Do të shtojmë në /etc/nginx/nginx.conf cilësimet e skedarit indeks index.php:

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

Do të shtojmë cilësime për serverin e paracaktuar për trajtimin e php përmes soket php-fpm, do të çaktivizojmë logun për skedarët statikë, do të rrisim kohën e skadimit, do të çaktivizojmë logun për aksese dhe gabime për favicon.ico dhe robots.txt dhe do të ndalojmë aksesin në skedarët .ht për të gjithë:

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

Do të instalojmë wget që nevojitet për instalimin e certbot:

sudo dnf install wget -y

Ne dojmë skedarin ekzekutiv certbot nga faqja zyrtare:

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

Të zhvendosim certbot në /usr/local/bin/:

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

Dhe të caktojmë të drejtat dhe pronarin root:

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

Do të instalojmë varësitë e certbot dhe në këtë hap do ta ndërpresim punën (Përgjigjet: Y, c):

certbot-auto

Do të shkarkojmë nga faqja zyrtare arkivin me versionin e fundit të Drupal 9:

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

Do të instalojmë tar për të shkruar arkivin:

sudo dnf install tar -y

Do të fshijmë skedarët default në katalogun /usr/share/nginx/html/:

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

Do të nxjerrim skedarët në katalogun e serverit web:

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

Do të zhvendosim skedarët nga nënkatalogu në katalogun rrënjor të serverit web:

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

Do të fshijmë nënkatalogun:

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

Do të fshijmë arkivin me skedarët e instalimit:

rm -f ./tar.gz

Do të caktojmë pronarin e skedarëve në nginx:

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

Në këtë hap do të fikim serverin dhe do të bëjmë një snapshot:

shutdown -h now

Pas rinisjes së VDS nga snapshoti, do të kryejmë konfigurimin fillestar të serverit MySQL duke ekzekutuar skenarin:

mysql_secure_installation

Do të aktivizojmë validuesin e fjalëkalimeve:

Would you like to setup VALIDATE PASSWORD component? : y

Do të caktojmë fjalëkalimin për përdoruesin root MySQL:

New password:
Re-enter new password:

Do të fshijmë përdoruesit anonimë:

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

Do të ndalojmë lidhjen e root nga larg:

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

Do të fshijmë bazën e të dhënave testuese:

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

Do të rifillojmë tabelat e privilegjeve:

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

Pas kësaj, për të përfunduar instalimin, ne mund të shkojmë në adresën vps_ip_address
Në këtë adresë do të shohim faqen e instalimit të Drupal.

Do të zgjedhim gjuhën e përdorur. Për shembull: shqip. Klikoni "Ruaj dhe vazhdo"

Do të zgjedhim profilin e instalimit (demo përdoret ekskluzivisht për njohjen e sistemit). Në rastin tonë le të jetë "standard".

Në faqen tjetër do të caktojmë emrin e bazës së të dhënave, për shembull "drupal". Do të caktomë emrin e përdoruesit të DB root dhe fjalëkalimin e caktuar atij, gjatë ekzekutimit të mysql_secure_installation. Klikoni "Ruaj dhe vazhdo".

Do të presim përfundimin e instalimit dhe përditësimin e përkthimeve (procesi mund të zgjasë disa minuta).

Do të vendosim emrin e faqes, do të cakojmë emailin e faqes (nga i cili do të vijnë njoftimet e faqes), emrin e përdoruesit, fjalëkalimin dhe emailin e llogarisë së administratorit të Drupal. Po ashtu do të cakojmë vendin dhe zonën e kohës në cilësimet rajonale. Dhe do të përfundojmë instalimin duke klikuar "Ruaj dhe vazhdo".

Pas kësaj mund të kalojmë në panelin e kontrollit me emrin e përdoruesit dhe fjalëkalimin e krijuar për administratorin e Drupal.

Konfigurimi i HTTPS (opsionale)

Për konfigurimin e HTTPS, VDS duhet të ketë një emër DNS në fuqi, përcaktoni në

/etc/nginx/nginx.conf

në seksionin server emrin e serverit (për shembull):

server_name  domainname.ru;

Do të rinisim nginx:

service nginx restart

Do të ekzekutojmë certbot:

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

Do të futim emailin tonë, do të pranojmë kushtet e shërbimit (A), Abonimi në listën e dërgimit (opsionale) (N), do të zgjedhim emrat e domainëve për të cilët duhet të lëshohet certifikata (Enter për të gjitha).

Në rast se gjithçka shkoi pa gabime, ne do të shohim një mesazh për lëshimin e suksesshëm të certifikatave dhe konfigurimin e serverit:

Congratulations! You have successfully enabled ...

Pas kësaj, lidhjet në portin 80 do të redirektohen në 443 (https).

Do të shtojmë në /etc/crontab për përditësimin automatik të certifikatave:

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

Konfigurimi i Sigurisë së Hostit të Besuar (e rekomanduar)

Ky konfigurim është një zgjidhje për problemin e përcaktimit dinamik të base_url dhe është krijuar për të parandaluar sulmet HTTP HOST Header (kur faqja juaj mendon se është dikush tjetër).

Për këtë, duhet të përcaktoni emrat e besuar të domainëve të faqes në skedarin e konfigurimit.

NĂ« skedar

/usr/share/nginx/html/sites/default/settings.php do të heqim komentin ose do të shtojmë konfigurimin me modelet e emrave aktualë të faqes, për shembull:

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

Instalimi i PHP APCu (E REKOMANDUAR)

Drupal mbĂ«shtet APCu — Alternative PHP User Cache, versionet 8 dhe 9 e pĂ«rdorin mĂ« intensivisht APCu si memorie tĂ« pĂ«rkohshme lokale, sesa versionet e mĂ«parshme. MadhĂ«sia e caches nĂ« mĂ«nyrĂ« standarde (32 MB) do tĂ« pĂ«rshtatet pĂ«r shumicĂ«n e faqeve dhe nuk mund tĂ« kalojĂ« 512 MB.

Për aktivizimin do të instalojmë modulin PHP APCu:

dnf -y install php-pecl-apcu

Do të rinisim nginx dhe php-fpm:

service nginx restart
service php-fpm restart

Në rast se përdoret gjuha shqipe dhe APCu me madhësinë e rekomanduar të memories për cache, në panelin e kontrollit mund të shihni një paralajmërim se madhësia e memories për cache është e ndryshme nga ajo e rekomanduar, por në fakt gjithçka funksionon siç duhet, dhe paralajmërimi i pasaktë ndoshta do të rregullohet në përditësimet e ardhshme.

Ose nëse paralajmërimi është shqetësues, mund të përdorni patch-in përkatës nga faqja zyrtare.

Dëshirojmë t'ju kujtojmë se ju gjithashtu mund të krijoni një imazh për ne

Ka tre mundësi për të marrë pjesë.

Përgatitni imazhin vetë dhe merrni 3000 rubla në bilancin tuaj

NĂ«se jeni gati tĂ« hidhni dorĂ« e tĂ« krijoni vetĂ« imazhin qĂ« ju nevojitet, ne do t'ju akordojmĂ« 3000 rubla nĂ« bilancin tuaj tĂ« brendshĂ«m — mund t'i shpenzoni pĂ«r serverĂ«.

Si të krijoni imazhin tuaj:

  1. Krijoni një llogari te ne në të internetit
  2. Informoni mbështetjes se do të krijoni dhe testoni imazhe
  3. Ne do t'ju akordojmë 3000 rubla dhe do të aktivizojmë mundësinë për të krijuar snapshot-e
  4. Porositni një server virtual me një sistem operativ të pastër
  5. Instaloni softuerin në këtë VPS dhe konfiguroni atë
  6. Përgatitni një udhëzim ose skenar për shpërndarjen e softuerit
  7. Krijoni një snapshot për serverin e konfiguruar
  8. Porositni një server të ri virtual, duke zgjedhur në listën e rënie 'Shablloni i serverit' snapshot-in e krijuar më parë
  9. Në rastin e krijimit të suksesshëm të serverit, dërgoni materialet e marra në hapin 6 në mbështetje teknike
  10. Në rast të një gabimi, mund të sqaroni me mbështetje shkakun dhe të përsërisni konfigurimin

Për pronarët e bizneseve: ofroni softuerin tuaj

Nëse jeni një zhvillues softueri që vendosni dhe përdorni në VPS, ne mund të ju përfshijmë në tregun tonë. Kështu, ne mund të ndihmojmë në sjelljen e klientëve të rinj, trafikut dhe njohshmërisë. Na shkruani

Na tregoni në komente se çfarë imazhi ju mungon?

Dhe ne do ta përgatisim atë vetë

Krijimi i një template VPS me Drupal 9 në CentOS 8

Krijimi i një template VPS me Drupal 9 në CentOS 8

Burimi: habr.com

Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« đŸ”„ Bli njĂ« hosting tĂ« besueshĂ«m pĂ«r faqet me mbrojtje DDoS, VPS VDS serverĂ« | ProHoster