Krijimi i një modeli VPS me Drupal 9 në Centos 8

Ne vazhdojmë të zgjerojmë tregun tonë. Së fundmi ju thamë se si bëri një imazh të Gitlab, dhe këtë javë Drupal u shfaq në tregun tonë.

Ne ju tregojmë pse e zgjodhëm atë dhe si u krijua imazhi.

Krijimi i një modeli VPS me Drupal 9 në Centos 8

Drupal — një platformë e përshtatshme dhe e fuqishme për krijimin e çdo lloj uebsajti: nga mikrosajtet dhe bloget deri te projektet e mëdha sociale, e përdorur gjithashtu si bazë për aplikacionet në ueb, të shkruara në PHP dhe duke përdorur bazat e të dhënave relacionale si ruajtje të të dhënave.

Drupal 9 përfshin të gjitha veçoritë e prezantuara në versionin 8.9. Dallimi kryesor midis versionit 9 dhe versionit 8 është se platforma do të vazhdojë të marrë përditësime dhe rregullime sigurie pas nëntorit 2021. Versioni 9 gjithashtu thjeshton procesin e përditësimit, duke e bërë edhe më të lehtë procesin e përmirësimit nga versioni 8.

Kërkesat e serverit

Për të përdorur Drupal, rekomandohet të përdorni 2 GB RAM dhe 2 bërthama CPU.

Skedarët kryesorë të Drupal zënë rreth 100 MB, përveç kësaj do t'ju duhet hapësirë ​​për të ruajtur imazhet, bazën e të dhënave, temat, modulet shtesë dhe kopjet rezervë, të cilat do të varen nga madhësia e faqes tuaj.

Drupal 9 kërkon PHP 7.4 ose më të lartë me një kufizim minimal (memory_limit) për memorie 64 MB; nëse përdoren module shtesë, rekomandohet të instaloni 128 MB.

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

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

Instalim

Le të përditësojmë paketat e instaluara në versionin më të fundit:

sudo dnf update -y

Le të shtojmë leje të përhershme për trafikun në hyrje në portet http/80 dhe https/443:

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

Le të zbatojmë rregullat e reja të murit të zjarrit:

sudo systemctl reload firewalld

Le të instalojmë Nginx:

sudo dnf install nginx -y

Le të fillojmë dhe aktivizojmë serverin Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Meqenëse depoja kryesore e Centos aktualisht përdor PHP 7.2, le të shtojmë një depo REMI me PHP 7.4 (versioni minimal për Drupal 9).
Për ta bërë këtë, shtoni depo EPEL (kërkohet nga depoja REMI):

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

Le të shtojmë depon REMI:

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

Le të aktivizojmë modulin php:remi-7.4 për të instaluar php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instaloni php-fpm dhe php-cli:

sudo dnf install -y php-fpm php-cli

Le të instalojmë modulet PHP të kërkuara që Drupal të funksionojë:

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

Ne gjithashtu do të instalojmë modulet opcache të rekomanduara të PHP mbstring:

sudo dnf install -y php-mbstring php-opcache

Le të instalojmë serverin MySQL:

sudo dnf install mysql-server -y

Le të aktivizojmë dhe nisim serverin MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Meqenëse po bëjmë një shabllon për VDS dhe ato mund të jenë të ngadalta, do të shtojmë një vonesë të fillimit të mysqld prej 30 sekondash, përndryshe mund të ketë probleme me fillimin e serverit gjatë nisjes fillestare të sistemit:

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

Le të ndryshojmë grupin dhe përdoruesin nën të cilin do të funksionojë 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

Le të ndryshojmë pronarin e drejtorisë së sesioneve PHP në nginx në përputhje me rrethanat:

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

Le të heqim rreshtat me komente nga skedari i konfigurimit /etc/nginx/nginx.conf (në mënyrë që të mos ketë nxitës të dyfishtë për sed):

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

Shtoni cilësimet e kompresimit të gzip në /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

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

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

Le të shtojmë cilësimet për serverin e paracaktuar: përpunimi PHP përmes folesë php-fpm, çaktivizoni regjistrin për skedarët statikë, rrisni kohën e skadimit, çaktivizoni regjistrin e aksesit dhe gabimeve për favicon.ico dhe robots.txt dhe refuzoni aksesin në .ht skedarë 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

Instaloni wget që kërkohet për instalimin e certbot:

sudo dnf install wget -y

Shkarkoni skedarin e ekzekutueshëm të certbot nga jashtë sajti:

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

Zhvendos certbot në /usr/local/bin/:

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

Dhe le të caktojmë të drejtat si pronar për root:

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

Le të instalojmë varësitë e certbot dhe në këtë fazë të ndërpresim punën e tij (Përgjigjet: Y, c):

certbot-auto

Le të shkarkojmë arkivin me versionin më të fundit të Drupal 9 nga jashtë sajti:

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

Instaloni tar për të shpaketuar arkivin:

sudo dnf install tar -y

Le të fshijmë skedarët e paracaktuar në drejtorinë /usr/share/nginx/html/:

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

Le t'i shpaketojmë skedarët në drejtorinë e serverit në internet:

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

Le t'i zhvendosim skedarët nga nëndirektoria në direktorinë rrënjë të serverit në internet:

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

Le të fshijmë nëndirektorinë:

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

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

rm -f ./tar.gz

Le të caktojmë pronarin e skedarëve nginx:

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

Në këtë fazë do të fikim serverin dhe do të bëjmë një fotografi:

shutdown -h now

Pas nisjes së VDS nga fotografia, ne do të kryejmë konfigurimin fillestar të serverit MySQL duke ekzekutuar skriptin:

mysql_secure_installation

Le të aktivizojmë verifikuesin e fjalëkalimit:

Would you like to setup VALIDATE PASSWORD component? : y

Le të vendosim fjalëkalimin për përdoruesin rrënjësor të MySQL:

New password:
Re-enter new password:

Le të heqim përdoruesit anonimë:

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

Le të parandalojmë lidhjen e rrënjës nga distanca:

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

Le të fshijmë bazën e të dhënave të testit:

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

Le të ringarkojmë 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ë vps_ip_adresa
Në këtë adresë do të shohim faqen e instalimit të Drupal.

Le të zgjedhim gjuhën që do të përdorim. Për shembull: rusisht. Kliko "Ruaj dhe Vazhdo"

Le të zgjedhim një profil instalimi (demo përdoret vetëm për t'u njohur me sistemin). Në rastin tonë, le të jetë "standarde".

Në faqen tjetër do t'i japim një emër bazës së të dhënave, për shembull "drupal". Le të tregojmë rrënjën e emrit të përdoruesit të bazës së të dhënave dhe fjalëkalimin që i është dhënë kur ekzekuton mysql_secure_installation. Klikoni "Ruaj dhe Vazhdo".

Le të presim që të përfundojë instalimi dhe përditësimi i përkthimeve (procesi mund të zgjasë disa minuta).

Ne do të tregojmë emrin e faqes, do të vendosim emailin e faqes (në emër të cilit do të dërgohen njoftimet e faqes), hyrjen, fjalëkalimin dhe emailin e llogarisë së administratorit Drupal. Ne gjithashtu do të vendosim vendin dhe zonën kohore në cilësimet rajonale. Dhe përfundoni instalimin duke klikuar "Ruaj dhe Vazhdo".

Pas kësaj, mund të shkoni në panelin e kontrollit me hyrjen dhe fjalëkalimin e krijuar të administratorit Drupal.

Konfigurimi i HTTPS (opsionale)

Për të konfiguruar HTTPS, VDS duhet të ketë një emër të vlefshëm DNS, specifikoni në

/etc/nginx/nginx.conf

në seksionin e serverit, emri i serverit (për shembull):

server_name  domainname.ru;

Le të rifillojmë nginx:

service nginx restart

Le të hapim certbot:

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

Futni emailin tuaj, pranoni kushtet e shërbimit (A), Abonohu ​​në buletinin (opsionale) (N), zgjidhni emrat e domenit për të cilët dëshironi të lëshoni një certifikatë (Enter për të gjithë).

Nëse gjithçka shkoi pa gabime, do të shohim një mesazh në lidhje me lëshimin e suksesshëm të certifikatave dhe konfigurimin e serverit:

Congratulations! You have successfully enabled ...

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

Shto në /etc/crontab për të përditësuar automatikisht certifikatat:

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

Konfigurimi i sigurisë së hostit të besuar (rekomandohet)

Ky cilësim synohet si një zgjidhje për problemin që lidhet me përcaktimin dinamik të bazës_url dhe është krijuar për të parandaluar sulmet e HTTP HOST Header (kur faqja juaj mendon se është dikush tjetër).

Për ta bërë këtë, duhet të specifikoni emrat e besuar të domenit për sitin në skedarin e cilësimeve.

Në dosje

/usr/share/nginx/html/sites/default/settings.php Le të çkomentojmë ose shtojmë një cilësim me modele të emrave aktualë të faqeve, për shembull:

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

Instalimi i PHP APCu (REKOMANDOHET)

Drupal mbështet APCu - Cache e përdoruesit alternativ PHP, versionet 8 dhe 9 e përdorin më shumë APCu si një memorie lokale afatshkurtër sesa versionet e mëparshme. Madhësia e paracaktuar e cache-së (32 MB) është e përshtatshme për shumicën e sajteve dhe nuk mund të kalojë 512 MB.

Për ta aktivizuar, instaloni modulin PHP APCu:

dnf -y install php-pecl-apcu

Rinisni nginx dhe php-fpm:

service nginx restart
service php-fpm restart

Nëse përdorni gjuhën ruse dhe APCu me madhësinë e rekomanduar të kujtesës për cache, mund të shihni një paralajmërim në panelin e kontrollit që madhësia e memories së caktuar për cache është e ndryshme nga ajo e rekomanduar, por në fakt gjithçka funksionon si duhet. dhe paralajmërimi i pasaktë ka shumë të ngjarë të korrigjohet në përditësimet e ardhshme.

Ose nëse paralajmërimi ju lëndon sytë, mund ta përdorni arnimi përkatës nga jashtë sajti.

Ne dëshirojmë t'ju kujtojmë se ju gjithashtu mund të bëni një imazh për ne

Ekzistojnë tre opsione se si të merrni pjesë.

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

Nëse jeni gati të nxitoni menjëherë në betejë dhe të krijoni imazhin që ju mungon, ne do t'ju kreditojmë me 3000 rubla në bilancin tuaj të brendshëm, të cilat mund t'i shpenzoni në serverë.

Si të krijoni imazhin tuaj:

  1. Krijo një llogari me ne në Online
  2. Njoftoni mbështetjen që do të krijoni dhe testoni imazhe
  3. Ne do t'ju kreditojmë 3000 rubla dhe do të mundësojmë mundësinë për të krijuar fotografi
  4. Porositni një server virtual me një sistem operativ të pastër
  5. Instaloni softuerin në këtë VPS dhe konfiguroni atë
  6. Shkruani udhëzime ose skript për vendosjen e softuerit
  7. Krijo një fotografi për serverin e konfiguruar
  8. Porositni një server të ri virtual duke zgjedhur fotografinë e krijuar më parë në listën rënëse "Shemboni i serverit"
  9. Nëse serveri është krijuar me sukses, transferoni materialet e marra në fazën 6 në mbështetje teknike
  10. Nëse ka një gabim, mund të kontrolloni me mbështetje për arsyen dhe të përsërisni konfigurimin

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

Nëse jeni një zhvillues softuerësh që është vendosur dhe përdoret në VPS, atëherë ne mund t'ju përfshijmë në treg. Kjo është mënyra se si ne mund t'ju ndihmojmë të sillni klientë të rinj, trafik dhe ndërgjegjësim. Na shkruani

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

Dhe ne do ta përgatisim vetë

Krijimi i një modeli VPS me Drupal 9 në Centos 8

Krijimi i një modeli VPS me Drupal 9 në Centos 8

Burimi: www.habr.com