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

Po vazhdojmë të zgjedhjem tregun tonë. Së fundmi, folëm për si krijuam imazhin e Gitlab, ndërsa këtë javë u shfaq Drupal në tregun tonë.

Po tregojmë pse e zgjodhëm pikërisht 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 lloji faqeje: nga faqet e vogla dhe bloget deri te projektet e mĂ«dha sociale, gjithashtu pĂ«rdoret si baza pĂ«r aplikacione web, shkruar nĂ« gjuhĂ«n PHP dhe pĂ«rdor si ruajtje tĂ« dhĂ«nash bazat e tĂ« dhĂ«nave relacionale.

Drupal 9 përfshin të gjitha tiparet që janë realizuar në versionin 8.9. Dallimi kryesor i versionit 9 nga versioni 8 është se për platformën do të lëshohen përditësime dhe korrigjime të sigurisë edhe pas nëntorit 2021. Gjithashtu, në versionin 9 procesi i përditësimit është lehtësuar, duke e bërë procesin e përditësimit nga versioni 8 edhe më të thjeshtë.

Kërkesat për serverin

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

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

Për Drupal 9 kërkohet PHP 7.4 ose më lart me limitin minimal të memories (memory_limit) prej 64 MB, nëse përdoren module shtesë, rekomandohet të vendoset në 128 MB.

Si server web, Drupal mund të përdorë Apache ose Nginx, ndërsa 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ë fundit:

sudo dnf update -y

Do të shtojmë një leje të përhershme për trafikun e hyrës në portet http/80 dhe https/443:

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

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

sudo systemctl reload firewalld

Do të instalojmë Nginx:

sudo dnf install nginx -y

Do të nisnim dhe aktivizojmë serverin Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Pasi në këtë moment në depozitën kryesore të Centos po 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 (e nevojshme për depozitën REMI):

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

Do të shtojmë depozitën REMI:

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

Do të aktivizojmë modulin 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 që nevojiten për punën 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

Po kështu do të instalojmë modulat rekomanduar të 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ë shabllon për VDS, dhe ato mund të jenë të ngadalta, do të shtojmë një vonesë nisje mysqld prej 30 sekondash, nd otherwise mund të ketë probleme me nisjen e serverit në ngarkimin fillestar të sistemit:

sudo sed -i '\/Group=mysql\/a \nExecStartPre=\/bin\/sleep 30\n' \/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 ta ndryshojmë pronarin e katalogut të sesioneve PHP gjithashtu përkatësisht në nginx:

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

Do të hiqnim rreshtat me komente nga skedari i konfigurimit \/etc\/nginx\/nginx.conf (që të mos ketë dyfishime në ekzekutimin për sed):

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

Do të shtojmë në \/etc\/nginx\/nginx.conf konfigurimet për kompresimin gzip

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

Do të shtojmë në \/etc\/nginx\/nginx.conf konfigurimet për skedarin indeks index.php:

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

Do të shtojmë konfigurime për serverin e paracaktuar të trajtimit të php përmes soketit php-fpm, do të çaktivizojmë log-un për skedarët statikë, do të rrisim kohën e skadimit, do të çaktivizojmë log-un e qasjes dhe gabimeve për favicon.ico dhe robots.txt dhe do të ndalojmë qasjen për skedarët .ht për të gjithë:

sudo sed -i '\/        location \/ {/a \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

Do të instalojmë wget e nevojshme për instalimin e certbot:

sudo dnf install wget -y

Do të shkarkojmë skedarin ekzekutiv certbot nga uebi:

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

Do ta zhvendosim certbot në /usr/local/bin/:

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

Dhe do t'i 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ë për certbot dhe në këtë fazë do ta ndalojmë atë (Përgjigjet: Y, c):

certbot-auto

Do të shkarkojmë nga uebi arkivin me versionin më të fundit të Drupal 9:

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

Do të instalojmë tar për të shpërndarë arkivin:

sudo dnf install tar -y

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

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

Do të shpërndajmë skedarët në katalogun e serverit të uebit:

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

Do t'i transferojmë skedarët nga nënkatalogu në katalogun rrënjësor të serverit të uebit:

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'i caktojmë pronarin skedarëve nginx:

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

Në këtë fazë ne do të ndalim serverin dhe do të krijojmë një snapshot:

shutdown -h now

Pas nisjes së VDS nga snapshoti, do të realizojmë konfigurimin e parë të serverit MySQL duke nisur skriptin:

mysql_secure_installation

Do të aktivizojmë validatorin e fjalëkalimeve:

Would you like to setup VALIDATE PASSWORD component? : y

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

New password:
Re-enter new password:

Do të flakim përdoruesit anonimë:

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

Do të ndalojmë lidhjen e root nga distanca:

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

Do të flakim 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ë rihapim 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, mund të kalojmë 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. Do të klikojmë "Ruaj dhe vazhdo".

Do të zgjedhim profilin e instalimit (demo përdoret vetëm për njohje me sistemin). Në rastin tonë le të jetë "standard".

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

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

Të japim emrin e faqes, të caktuam 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. Gjithashtu, do të caktuam vendin dhe zonën kohore në cilësimet rajonale. Dhe do ta përfundojmë instalimin duke klikuar "Ruaj dhe vazhdo".

Pas kësaj, mund të kaloni në panelin e kontrollit me emrin e përdoruesit dhe fjalëkalimin e krijuar të administratorit të Drupal.

Konfigurimi i HTTPS (opsional)

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.sh.):

server_name  domainname.ru;

Rivendosim nginx:

service nginx restart

Startojmë certbot:

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

Vendosim emailin tonë, pajtohemi me kushtet e shërbimit (A), abonimin në newsletter (opsional) (N), zgjedhim emrat e domain-eve për të cilat duhet të lëshojmë certifikatin (Enter për të gjitha).

Nëse gjithçka kalon pa gabime, ne do të shohim një njoftim 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).

Shtojmë në /etc/crontab për azhurnimin automatike 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 që lidhet me përcaktimin dinamik të base_url, dhe ka për qëllim të parandalojë sulmet HTTP HOST Header (kur faqja juaj mendon se është ndonjë tjetër).

Për këtë, duhet të tregoni emrat e besuar të domain-eve të faqes në skedarin e konfigurimit.

NĂ« skedar

/usr/share/nginx/html/sites/default/settings.php do të shkruajmë 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 — Cache Alternative PHP User, versionet 8 dhe 9 pĂ«rdorin mĂ« shumĂ« APCu si cache tĂ« pĂ«rkohshĂ«m lokal se versionet e mĂ«parshme. MadhĂ«sia e caches nĂ« parazgjedhje (32 MB) Ă«shtĂ« e pĂ«rshtatshme pĂ«r shumicĂ«n e faqeve, dhe nuk mund tĂ« kalojĂ« 512 MB.

Për ta aktivizuar, instaloni modulin PHP APCu:

dnf -y install php-pecl-apcu

Rivendosim nginx dhe php-fpm:

service nginx restart
service php-fpm restart

Në rast se përdoret gjuha ruse 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 memorjes së dedikuar për cache është e ndryshme nga ajo e rekomanduar, por në fakt gjithçka funksionon siç duhet, dhe paralajmërimi i paqartë ndoshta do të rregullohet në azhurnimet e ardhshme.

Ose nëse paralajmërimi është shqetësues, mund të përdorim patchi përkatës nga faqja zyrtare.

Dëshirojmë të kujtojmë se ju gjithashtu mund të bëni një imazh për ne

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

Përgatitni vetë imazhin dhe merrni 3000 lekë në balancën tuaj

NĂ«se jeni tĂ« gatshĂ«m tĂ« hidhen direkt nĂ« luftĂ« dhe tĂ« krijoni vetĂ« imazhin qĂ« ju nevojitet, ne do t'ju depozitojmĂ« 3000 lekĂ« nĂ« balancĂ«n tuaj tĂ« brendshme — mund t’i shpenzoni pĂ«r serverĂ«t.

Si të krijoni imazhin tuaj:

  1. Krijoni një llogari te ne në website
  2. Njoftoni mbështetje që po planifikoni të krijoni dhe testoni imazhe
  3. Ne do t'ju depozitojmë 3000 lekë dhe do të aktivizojmë mundësinë për të krijuar snapshot-e
  4. Porositni një server virtual me sistemin operativ të pastër
  5. Instaloni programin e Softuerit në këtë VPS dhe konfiguroni atë
  6. Përgatitni një udhëzues ose skript për shpërndarjen e Softuerit
  7. Krijoni një snapshot për serverin e konfiguruar
  8. Porositni një server virtual të ri, duke zgjedhur në listën e rënies 'Modeli i serverit' snapshot-in e krijuar më parë
  9. Në rast të krijimit të suksesshëm të serverit, dërgoni materialet e marra në fazën 6 mbështetjes teknike
  10. Në rast të një gabimi, mund të pyesni mbështetje për shkakun dhe të përsërisni konfigurimin

Për pronarët e bizneseve: ofroni programin tuaj të Softuerit

Nëse jeni një zhvillues i softuerit që zbatohet dhe përdoret në VPS, ne mund t'ju përfshijmë në tregun tonë. Kështu mund të ndihmojmë në tërheqjen e klientëve të rinj, trafikut dhe njohjes. Na shkruani

Na tregoni në komentet, çfarë imazhi ju mungon?

Dhe do ta përgatitim vetë

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

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

Burimi: habr.com

Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS đŸ”„ Blini hosting tĂ« besueshĂ«m pĂ«r faqe interneti me mbrojtje nga DDoS, serverĂ« VPS VDS | ProHoster