Kreiranje VPS šablona sa Drupalom 9 na Centos 8

Nastavljamo da širimo naše tržište. Nedavno smo vam rekli kako napravio Gitlab sliku, a ove sedmice Drupal se pojavio na našem tržištu.

Reći ćemo vam zašto smo ga odabrali i kako je nastao imidž.

Kreiranje VPS šablona sa Drupalom 9 na Centos 8

Drupal — zgodna i moćna platforma za kreiranje bilo koje vrste web stranice: od mikro sajtova i blogova do velikih društvenih projekata, koja se takođe koristi kao osnova za web aplikacije, napisana u PHP-u i koja koristi relacione baze podataka kao skladište podataka.

Drupal 9 uključuje sve funkcije predstavljene u verziji 8.9. Ključna razlika između verzije 9 i verzije 8 je u tome što će platforma nastaviti primati ažuriranja i sigurnosne ispravke nakon novembra 2021. Verzija 9 također pojednostavljuje proces ažuriranja, čineći proces nadogradnje sa verzije 8 još lakšim.

Zahtevi servera

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

Glavni Drupal fajlovi zauzimaju oko 100 MB, osim toga će vam trebati prostor za skladištenje slika, baze podataka, tema, dodatnih modula i rezervnih kopija, što će zavisiti od veličine vašeg sajta.

Drupal 9 zahtijeva PHP 7.4 ili noviji sa minimalnim ograničenjem (memory_limit) za 64 MB memorije; ako se koriste dodatni moduli, preporučuje se instaliranje 128 MB.

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

Drupal ćemo instalirati koristeći Nginx i MySQL.

postavljanje

Ažurirajmo instalirane pakete na najnoviju verziju:

sudo dnf update -y

Dodajmo trajnu dozvolu za dolazni saobraćaj na http/80 i https/443 portove:

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

Primijenimo nova pravila zaštitnog zida:

sudo systemctl reload firewalld

Instalirajmo Nginx:

sudo dnf install nginx -y

Pokrenimo i omogućimo Nginx server:

sudo systemctl start nginx
sudo systemctl enable nginx

Pošto glavno Centos spremište trenutno koristi PHP 7.2, dodajmo REMI spremište sa PHP 7.4 (minimalna verzija za Drupal 9).
Da biste to učinili, dodajte EPEL spremište (zahtijevano od REMI spremišta):

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

Dodajmo REMI spremište:

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

Omogućimo modul php:remi-7.4 da instalira php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instalirajte php-fpm i php-cli:

sudo dnf install -y php-fpm php-cli

Hajde da instaliramo PHP module potrebne da Drupal radi:

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

Takođe ćemo instalirati preporučene PHP mbstring opcache module:

sudo dnf install -y php-mbstring php-opcache

Hajde da instaliramo MySQL server:

sudo dnf install mysql-server -y

Uključimo i pokrenemo MySQL server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Pošto pravimo šablon za VDS, a oni mogu biti spori, dodaćemo odgodu startovanja mysqld od 30 sekundi, inače može doći do problema sa pokretanjem servera tokom početnog pokretanja sistema:

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

Hajde da promenimo grupu i korisnika pod kojim će nginx raditi tako što ćemo napraviti izmene u /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

Promenimo vlasnika direktorija PHP sesije u nginx:

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

Uklonimo redove s komentarima iz konfiguracijske datoteke /etc/nginx/nginx.conf (tako da nema dvostrukih okidača za sed):

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

Dodajte postavke gzip kompresije u /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

Dodajmo postavke indeksne datoteke index.php u /etc/nginx/nginx.conf:

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

Hajde da dodamo podešavanja za podrazumevani server: PHP obrada preko php-fpm socketa, onemogući evidenciju za statičke fajlove, poveća vreme isteka, onemogući pristup i evidenciju grešaka za favicon.ico i robots.txt i zabrani pristup .ht fajlovi za sve:

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

Instalirajte wget potreban za instaliranje certbota:

sudo dnf install wget -y

Preuzmite izvršnu datoteku certbot sa vanjske lokacije:

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

Premjestite certbota u /usr/local/bin/:

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

I dodijelimo prava kao vlasnik rootu:

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

Hajde da instaliramo certbot zavisnosti i u ovoj fazi prekinemo njegov rad (Odgovori: Y, c):

certbot-auto

Preuzmimo arhivu sa najnovijom verzijom Drupala 9 sa vanjske strane:

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

Instalirajte tar da raspakujete arhivu:

sudo dnf install tar -y

Izbrišemo zadane datoteke u direktoriju /usr/share/nginx/html/:

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

Otpakirajmo datoteke u direktorij web servera:

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

Premjestimo datoteke iz poddirektorija u korijenski direktorij web servera:

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

Izbrišemo poddirektorij:

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

Izbrišemo arhivu sa instalacionim fajlovima:

rm -f ./tar.gz

Dodijelimo vlasnika nginx fajlova:

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

U ovoj fazi ćemo isključiti server i napraviti snimak:

shutdown -h now

Nakon što pokrenemo VDS sa snimka, izvršićemo početno podešavanje MySQL servera pokretanjem skripte:

mysql_secure_installation

Omogućimo validator lozinke:

Would you like to setup VALIDATE PASSWORD component? : y

Postavimo lozinku za MySQL root korisnika:

New password:
Re-enter new password:

Uklonimo anonimne korisnike:

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

Spriječimo rootu da se poveže na daljinu:

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

Izbrišemo testnu bazu podataka:

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

Hajde da ponovo učitamo tabele privilegija:

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

Nakon toga, da završimo instalaciju, možemo ići na vps_ip_address
Na ovoj adresi ćemo vidjeti stranicu za instalaciju Drupala.

Odaberimo jezik koji ćemo koristiti. Na primjer: ruski. Kliknite "Sačuvaj i nastavi"

Odaberimo instalacijski profil (demo se koristi isključivo za upoznavanje sa sistemom). U našem slučaju neka bude “standardno”.

Na sljedećoj stranici ćemo dati ime bazi podataka, na primjer “drupal”. Naznačimo korisničko ime baze podataka root i lozinku koja mu je data prilikom pokretanja mysql_secure_installation. Kliknite na "Sačuvaj i nastavi".

Pričekajmo da se završi instalacija i ažuriranje prijevoda (proces može potrajati nekoliko minuta).

Naznačit ćemo naziv stranice, postaviti adresu e-pošte stranice (u ime koje će biti poslana obavještenja sa stranice), login, lozinku i e-mail Drupal administratorskog naloga. Također ćemo postaviti zemlju i vremensku zonu u regionalnim postavkama. I dovršite instalaciju klikom na "Sačuvaj i nastavi".

Nakon toga možete ići na kontrolnu tablu sa kreiranom prijavom i lozinkom administratora Drupal.

Postavljanje HTTPS-a (opcionalno)

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

/etc/nginx/nginx.conf

u sekciji servera ime servera (na primjer):

server_name  domainname.ru;

Ponovo pokrenimo nginx:

service nginx restart

Pokrenimo certbot:

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

Unesite svoju e-poštu, prihvatite uslove korišćenja usluge (A), Pretplatite se na bilten (opciono) (N), izaberite imena domena za koje želite da izdate sertifikat (Unesite za svakoga).

Ako je sve prošlo bez grešaka, vidjet ćemo poruku o uspješnom izdavanju certifikata i konfiguraciji servera:

Congratulations! You have successfully enabled ...

Nakon toga, veze na port 80 će biti preusmjerene na 443 (https).

Dodajte u /etc/crontab da automatski ažurirate certifikate:

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

Postavljanje sigurnosti pouzdanog hosta (preporučeno)

Ova postavka je zamišljena kao rješenje problema povezanog s dinamičkim određivanjem base_url-a i dizajnirana je da spriječi napade HTTP HOST zaglavlja (kada vaša stranica misli da je to netko drugi).

Da biste to učinili, morate navesti pouzdana imena domena za web lokaciju u datoteci postavki.

U fajlu

/usr/share/nginx/html/sites/default/settings.php Dekomentirajmo ili dodajmo postavku s uzorcima stvarnih naziva web lokacija, na primjer:

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

Instalacija PHP APCu (PREPORUČUJE SE)

Drupal podržava APCu - Alternativni PHP korisnički keš, verzije 8 i 9 više koriste APCu kao kratkoročni lokalni keš od prethodnih verzija. Zadana veličina keš memorije (32 MB) je pogodna za većinu lokacija i ne može premašiti 512 MB.

Da biste aktivirali, instalirajte PHP APCu modul:

dnf -y install php-pecl-apcu

Ponovo pokrenite nginx i php-fpm:

service nginx restart
service php-fpm restart

Ako koristite ruski jezik i APCu sa preporučenom veličinom memorije za keš, možda ćete na kontrolnoj tabli vidjeti upozorenje da je veličina dodijeljene memorije za keš drugačija od preporučene, ali zapravo sve radi kako treba, a netačno upozorenje će najvjerovatnije biti ispravljeno u sljedećim ažuriranjima.

Ili ako vam upozorenje boli oči, možete ga koristiti odgovarajuća zakrpa sa strane.

Podsjećamo da možete napraviti i sliku za nas

Postoje tri opcije za učešće.

Pripremite sliku sami i dobijte 3000 rubalja na svoj račun

Ako ste spremni da odmah uletite u bitku i stvorite sliku koja vam nedostaje, uplatit ćemo vam 3000 rubalja na vaš interni balans, koje možete potrošiti na servere.

Kako kreirati vlastitu sliku:

  1. Kreirajte nalog kod nas na site
  2. Obavijestite podršku da ćete kreirati i testirati slike
  3. Dat ćemo vam kredit od 3000 rubalja i omogućiti mogućnost kreiranja snimaka
  4. Naručite virtuelni server sa čistim operativnim sistemom
  5. Instalirajte softver na ovaj VPS i konfigurirajte ga
  6. Napišite upute ili skriptu za implementaciju softvera
  7. Napravite snimak za konfigurisani server
  8. Naručite novi virtuelni server odabirom prethodno kreiranog snimka na padajućoj listi “Server template”.
  9. Ako je server uspješno kreiran, prenesite materijale primljene u fazi 6 tehničkoj podršci
  10. Ako postoji greška, možete kod podrške provjeriti razlog i ponoviti postavljanje

Za vlasnike preduzeća: ponudite svoj softver

Ako ste programer softvera koji se postavlja i koristi na VPS-u, onda vas možemo uključiti na tržište. Na ovaj način vam možemo pomoći da dovedete nove kupce, promet i svijest. Pišite nam

Recite nam u komentarima koja vam slika nedostaje?

I sami ćemo ga pripremiti

Kreiranje VPS šablona sa Drupalom 9 na Centos 8

Kreiranje VPS šablona sa Drupalom 9 na Centos 8

izvor: www.habr.com