VPS šablono kūrimas naudojant „Drupal 9“ „Centos 8“.

Mes ir toliau plečiame savo rinką. Neseniai papasakojome, kaip padarė „Gitlab“ vaizdą, o šią savaitę Drupal pasirodė mūsų prekyvietėje.

Pasakojame, kodėl pasirinkome jį ir kaip buvo sukurtas įvaizdis.

VPS šablono kūrimas naudojant „Drupal 9“ „Centos 8“.

Drupal — patogi ir galinga platforma kuriant bet kokio tipo svetaines: nuo mikrosvetainių ir tinklaraščių iki didelių socialinių projektų, taip pat naudojama kaip žiniatinklio programų pagrindas, parašyta PHP ir naudojant reliacines duomenų bazes kaip duomenų saugyklą.

Drupal 9 apima visas funkcijas, pristatytas 8.9 versijoje. Pagrindinis skirtumas tarp 9 ir 8 versijų yra tas, kad platforma ir toliau gaus atnaujinimus ir saugos pataisymus po 2021 m. lapkričio mėn. 9 versija taip pat supaprastina atnaujinimo procesą, todėl naujovinimas iš 8 versijos dar paprastesnis.

Serverio reikalavimai

Norint naudoti Drupal, rekomenduojama naudoti 2 GB RAM ir 2 procesoriaus branduolius.

Pagrindiniai Drupal failai užima apie 100 MB, be to, jums reikės vietos vaizdams, duomenų bazei, temoms, papildomiems moduliams ir atsarginėms kopijoms saugoti, tai priklausys nuo jūsų svetainės dydžio.

Drupal 9 reikalauja PHP 7.4 ar naujesnės versijos su minimaliu apribojimu (memory_limit) 64 MB atminčiai, jei naudojami papildomi moduliai, rekomenduojama įdiegti 128 MB.

Drupal gali naudoti Apache arba Nginx kaip žiniatinklio serverį, o MySQL, PostgreSQL arba SQLite kaip duomenų bazę.

Mes įdiegsime Drupal naudodami Nginx ir MySQL.

Montavimas

Atnaujinkime įdiegtus paketus į naujausią versiją:

sudo dnf update -y

Pridėkime nuolatinį įeinančio srauto leidimą į http/80 ir https/443 prievadus:

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

Taikykime naujas ugniasienės taisykles:

sudo systemctl reload firewalld

Įdiegkime Nginx:

sudo dnf install nginx -y

Pradėkime ir įgalinkime Nginx serverį:

sudo systemctl start nginx
sudo systemctl enable nginx

Kadangi pagrindinė Centos saugykla šiuo metu naudoja PHP 7.2, pridėkime REMI saugyklą su PHP 7.4 (minimali Drupal 9 versija).
Norėdami tai padaryti, pridėkite EPEL saugyklą (reikalaujama REMI saugykloje):

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

Pridėkime REMI saugyklą:

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

Įgalinkime php:remi-7.4 modulį, kad įdiegtumėte php 7.4:

sudo dnf module enable php:remi-7.4 -y

Įdiekite php-fpm ir php-cli:

sudo dnf install -y php-fpm php-cli

Įdiegkime PHP modulius, reikalingus Drupal darbui:

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

Taip pat įdiegsime rekomenduojamus PHP mbstring opcache modulius:

sudo dnf install -y php-mbstring php-opcache

Įdiegkime MySQL serverį:

sudo dnf install mysql-server -y

Įjunkite ir paleiskite MySQL serverį:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Kadangi mes kuriame VDS šabloną, o jie gali būti lėti, pridėsime mysqld paleidimo delsą 30 sekundžių, kitaip gali kilti problemų su serverio paleidimu pradinio sistemos įkrovimo metu:

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

Pakeiskime grupę ir vartotoją, kuriame veiks nginx, atlikdami pakeitimus /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

Atitinkamai pakeiskime PHP seansų katalogo savininką į nginx:

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

Pašalinkime eilutes su komentarais iš konfigūracijos failo /etc/nginx/nginx.conf (kad nebūtų dvigubų sed trigerių):

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

Pridėkite gzip glaudinimo nustatymus į /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

Pridėkite indekso failo index.php parametrus į /etc/nginx/nginx.conf:

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

Pridėkime numatytojo serverio nustatymus: PHP apdorojimas per php-fpm lizdą, išjunkite statinių failų žurnalą, padidinkite galiojimo laiką, išjunkite favicon.ico ir robots.txt prieigos ir klaidų žurnalą ir uždrauskite prieigą prie .ht failai visiems:

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

Įdiekite wget, reikalingą įdiegti certbot:

sudo dnf install wget -y

Atsisiųskite certbot vykdomąjį failą iš išorinės svetainės:

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

Perkelkite certbot į /usr/local/bin/:

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

Ir priskirkime root savininko teises:

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

Įdiegkime certbot priklausomybes ir šiame etape nutraukkime jo darbą (Atsakymai: Y, c):

certbot-auto

Atsisiųskite archyvą su naujausia Drupal 9 versija iš išorės:

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

Įdiekite tar, kad išpakuotumėte archyvą:

sudo dnf install tar -y

Ištrinkime numatytuosius failus iš /usr/share/nginx/html/ katalogo:

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

Išpakuosime failus į žiniatinklio serverio katalogą:

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

Perkelkime failus iš pakatalogio į pagrindinį žiniatinklio serverio katalogą:

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

Ištrinkime pakatalogį:

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

Ištrinkite archyvą su diegimo failais:

rm -f ./tar.gz

Priskirkime nginx failų savininką:

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

Šiame etape išjungsime serverį ir padarysime momentinę nuotrauką:

shutdown -h now

Paleidę VDS iš momentinės nuotraukos, atliksime pradinę MySQL serverio sąranką paleisdami scenarijų:

mysql_secure_installation

Įgalinkime slaptažodžio tikrintuvą:

Would you like to setup VALIDATE PASSWORD component? : y

Nustatykime MySQL root vartotojo slaptažodį:

New password:
Re-enter new password:

Pašalinkime anoniminius vartotojus:

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

Neleiskime root prisijungti nuotoliniu būdu:

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

Ištrinkime bandymų duomenų bazę:

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

Iš naujo įkelkime privilegijų lenteles:

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

Po to, norėdami užbaigti diegimą, galime eiti į vps_ip_adresas
Šiuo adresu pamatysime Drupal diegimo puslapį.

Pasirinkime kalbą, kurią naudosime. Pavyzdžiui: rusų kalba. Spustelėkite „Išsaugoti ir tęsti“

Pasirinkime diegimo profilį (demonstracinė versija naudojama tik norint susipažinti su sistema). Mūsų atveju tebūnie „standartinis“.

Kitame puslapyje duosime duomenų bazės pavadinimą, pavyzdžiui, „drupal“. Nurodykime duomenų bazės vartotojo vardą root ir jam suteiktą slaptažodį vykdant mysql_secure_installation. Spustelėkite „Išsaugoti ir tęsti“.

Palaukite, kol bus baigtas vertimų diegimas ir atnaujinimas (procesas gali užtrukti kelias minutes).

Nurodysime svetainės pavadinimą, nustatysime svetainės el. paštą (kurios vardu bus siunčiami pranešimai), prisijungimo vardą, slaptažodį ir Drupal administratoriaus paskyros el. Taip pat regioniniuose nustatymuose nustatysime šalį ir laiko juostą. Ir užbaikite diegimą spustelėdami „Išsaugoti ir tęsti“.

Po to galite pereiti į valdymo skydelį su sukurtu Drupal administratoriaus prisijungimu ir slaptažodžiu.

HTTPS nustatymas (pasirenkama)

Norint konfigūruoti HTTPS, VDS turi turėti galiojantį DNS pavadinimą, nurodykite

/etc/nginx/nginx.conf

serverio skiltyje serverio pavadinimas (pavyzdžiui):

server_name  domainname.ru;

Paleiskite nginx iš naujo:

service nginx restart

Paleiskite certbot:

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

Įveskite savo el.paštą, sutikite su paslaugų teikimo sąlygomis (A), Prenumeruokite naujienlaiškį (nebūtina) (N), pasirinkite domenų vardus, kuriems norite išduoti sertifikatą (Įveskite visiems).

Jei viskas vyko be klaidų, pamatysime pranešimą apie sėkmingą sertifikatų išdavimą ir serverio konfigūraciją:

Congratulations! You have successfully enabled ...

Po to ryšiai su 80 prievadu bus nukreipti į 443 (https).

Pridėkite prie /etc/crontab, kad automatiškai atnaujintumėte sertifikatus:

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

Patikimo pagrindinio kompiuterio saugos nustatymas (rekomenduojama)

Šis nustatymas skirtas išspręsti problemą, susijusią su dinaminiu bazinio_url nustatymu, ir skirtas užkirsti kelią HTTP HOST antraštės atakoms (kai jūsų svetainė mano, kad tai kažkas kitas).

Norėdami tai padaryti, nustatymų faile turite nurodyti patikimus svetainės domenų pavadinimus.

Byloje

/usr/share/nginx/html/sites/default/settings.php Panaikinkime komentarus arba pridėkime nustatymą su faktinių svetainių pavadinimų šablonais, pavyzdžiui:

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

PHP APCu diegimas (REKOMENDUOJAMA)

Drupal palaiko APCu – alternatyvią PHP vartotojo talpyklą, 8 ir 9 versijose APCu naudojama kaip trumpalaikė vietinė talpykla labiau nei ankstesnėse versijose. Numatytasis talpyklos dydis (32 MB) tinka daugumai svetainių ir negali viršyti 512 MB.

Norėdami suaktyvinti, įdiekite PHP APCu modulį:

dnf -y install php-pecl-apcu

Iš naujo paleiskite nginx ir php-fpm:

service nginx restart
service php-fpm restart

Jei naudojate rusų kalbą ir APCu su rekomenduojamu talpyklos atminties dydžiu, valdymo skydelyje galite pamatyti įspėjimą, kad talpyklai skirtos atminties dydis skiriasi nuo rekomenduojamo, tačiau iš tikrųjų viskas veikia tinkamai, ir neteisingas įspėjimas greičiausiai bus ištaisytas kituose atnaujinimuose.

Arba, jei įspėjimas skauda akis, galite naudoti atitinkamą pataisą iš išorės.

Norime priminti, kad įvaizdį galite padaryti ir mums

Yra trys galimybės dalyvauti.

Paruoškite vaizdą patys ir gaukite 3000 rublių į savo balansą

Jei būsite pasiruošę nedelsiant pulti į mūšį ir sukurti įvaizdį, kurio jums trūksta, į jūsų vidinį balansą įskaitysime 3000 rublių, kuriuos galėsite išleisti serveriuose.

Kaip susikurti savo įvaizdį:

  1. Susikurkite paskyrą pas mus Dabar naršo
  2. Praneškite palaikymo komandai, kad ketinate kurti ir išbandyti vaizdus
  3. Mes įskaitysime jums 3000 rublių ir suteiksime galimybę kurti momentines nuotraukas
  4. Užsisakykite virtualų serverį su švaria operacine sistema
  5. Įdiekite programinę įrangą į šį VPS ir sukonfigūruokite
  6. Parašykite programinės įrangos diegimo instrukcijas arba scenarijų
  7. Sukurkite sukonfigūruoto serverio momentinį vaizdą
  8. Užsisakykite naują virtualų serverį išskleidžiamajame sąraše „Serverio šablonas“ pasirinkę anksčiau sukurtą momentinį vaizdą
  9. Jei serveris sėkmingai sukurtas, 6 etape gautą medžiagą perduokite techninei pagalbai
  10. Jei įvyko klaida, galite sužinoti priežastį su palaikymo tarnyba ir pakartoti sąranką

Verslo savininkams: pasiūlykite savo programinę įrangą

Jei esate programinės įrangos kūrėjas, kuris yra įdiegtas ir naudojamas VPS, galime įtraukti jus į rinką. Taip galime padėti pritraukti naujų klientų, pritraukti srautą ir padidinti žinomumą. Parašykite mums

Komentaruose papasakokite, kokio vaizdo jums trūksta?

Ir paruošime patys

VPS šablono kūrimas naudojant „Drupal 9“ „Centos 8“.

VPS šablono kūrimas naudojant „Drupal 9“ „Centos 8“.

Šaltinis: www.habr.com