Kreiranje VPS predloška s Drupal 9 na CentOS 8

Nastavljamo s proširenjem našeg tržišta. Nedavno smo govorili o tome kako smo napravili sliku Gitlab, a ovog tjedna na našem tržištu pojavio se Drupal.

Objašnjavamo zašto smo odabrali upravo njega i kako je slika stvorena.

Kreiranje VPS predloška s Drupal 9 na CentOS 8

Drupal — praktična i snažna platforma za izradu svih vrsta web stranica: od mikrosajtova i blogova do velikih društvenih projekata, koja se također koristi kao osnova za web aplikacije, napisana na PHP jeziku i koristeći relacijske baze podataka kao skladište podataka.

Drupal 9 uključuje sve značajke provedene u verziji 8.9. Ključna razlika između verzije 9 i verzije 8 je u tome što će se ažuriranja i sigurnosne ispravke izdavati za platformu i nakon studenog 2021. godine. Također, u verziji 9 pojednostavljen je proces ažuriranja, što čini proces ažuriranja s verzije 8 još lakšim.

Zahtjevi za server

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

Glavni datoteke Drupala zauzimaju oko 100 MB, a dodatno će vam biti potrebno prostora za pohranu slika, baza podataka, tema, dodatnih modula i sigurnosnih kopija, što će ovisiti o veličini vaše web stranice.

Za Drupal 9 potreban je PHP 7.4 ili viša s minimalnim ograničenjem (memory_limit) na memoriju od 64 MB; u slučaju korištenja dodatnih modula preporučuje se postavljanje na 128 MB.

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

Instalirat ćemo Drupal koristeći Nginx i MySQL.

Instalacija

Ažuriramo instalirane pakete na najnoviju verziju:

sudo dnf update -y

Dodajemo trajno dopuštenje za dolazni promet na http/80 i https/443 portove:

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

Primijenite nova pravila vatrozida:

sudo systemctl reload firewalld

Instaliramo Nginx:

sudo dnf install nginx -y

Pokrećemo i uključujemo server Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Budući da se trenutno u glavnom repozitoriju Centos koristi verzija PHP 7.2, dodajemo REMI repozitorij s PHP 7.4 (minimalna verzija za Drupal 9).
Za to dodajemo EPEL repozitorij (potrebno za REMI repozitorij):

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

Dodajemo REMI repozitorij:

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

Omogućujemo modul php:remi-7.4 za instalaciju php 7.4:

sudo dnf module enable php:remi-7.4 -y

Instaliramo php-fpm i php-cli:

sudo dnf install -y php-fpm php-cli

Instaliramo PHP module potrebne za rad Drupala:

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đer ćemo instalirati preporučene PHP module mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Instalirat ćemo MySQL server:

sudo dnf install mysql-server -y

Uključit ćemo i pokrenuti MySQL server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Budući da pravimo predložak za VDS, koji može biti spor, dodajemo odgodu pokretanja mysqld od 30 sekundi, inače može doći do problema s pokretanjem servera prilikom inicijalnog pokretanja sustava:

sudo sed -i 's/Group=mysql/&\nExecStartPre=/bin/sleep 30
/' /usr/lib/systemd/system/mysqld.service

Promijenit ćemo grupu i korisnika pod kojim će raditi nginx tako da unesemo promjene 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

Promijenit ćemo vlasnika PHP direktorija sesije također na nginx:

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

Uklonit ćemo redove s komentarima iz konfiguracijske datoteke /etc/nginx/nginx.conf (kako ne bi bilo dvostrukih aktivacija za sed):

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

Dodajmo u /etc/nginx/nginx.conf postavke za gzip kompresiju

sudo sed -i '/types_hash_max_size 2048;/a \n    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 u /etc/nginx/nginx.conf postavke za indeksnu datoteku index.php:

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

Dodajmo postavke za default server obradu php putem php-fpm socketa, isključimo logiranje za statičke datoteke, povećajmo vrijeme isteka, isključimo logiranje pristupa i pogrešaka za favicon.ico i robots.txt te zabranimo pristup .ht datotekama 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

Instalirat ćemo wget potreban za instalaciju certbota:

sudo dnf install wget -y

Preuzimamo izvršnu datoteku certbot s službene stranice:

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

Premještamo certbot u /usr/local/bin/:

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

I dodajemo dopuštenja te postavljamo vlasnika na root:

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

Instaliramo ovisnosti certbota i u ovom koraku prekinemo njegov rad (Odgovori: Y, c):

certbot-auto

Preuzimamo arhivu s posljednjom verzijom Drupal 9 s službene stranice:

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

Instaliramo tar za raspakiranje arhive:

sudo dnf install tar -y

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

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

Raspakiramo datoteke u direktorij web poslužitelja:

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

Premještamo datoteke iz poddirektorija u korijenski direktorij web poslužitelja:

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

Brišemo poddirektorij:

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

Brišemo arhivu s instalacijskim datotekama:

rm -f ./tar.gz

Postavljamo vlasnika datoteka na nginx:

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

U ovom trenutku isključujemo poslužitelj i radimo snimku:

shutdown -h now

Nakon pokretanja VDS iz snimke izvršit ćemo inicijalnu konfiguraciju MySQL poslužitelja pokretanjem skripte:

mysql_secure_installation

Aktiviramo validator lozinki:

Would you like to setup VALIDATE PASSWORD component? : y

Postavljamo lozinku za korisnika root MySQL:

New password:
Re-enter new password:

Brišemo anonimne korisnike:

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

Spriječavamo daljinsko prijavljivanje root-a:

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

Brišemo testnu bazu podataka:

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

Ponovno učitavamo tablice privilegija:

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

Nakon toga, za završetak instalacije, možemo otići na adresu vps_ip_address
Na ovoj adresi vidjet ćemo stranicu s instalacijom Drupala.

Odabiremo jezik koji ćemo koristiti. Na primjer: hrvatski. Kliknemo «Spremi i nastavi»

Biramo instalacijski profil (demo se koristi isključivo za upoznavanje s sustavom). U našem slučaju to će biti «standardni».

Na sljedećoj stranici postavljamo ime baze podataka, na primjer «drupal». Unosimo korisničko ime baze podataka root i lozinku koju smo postavili prilikom pokretanja mysql_secure_installation. Kliknemo «Spremi i nastavi».

Čekamo da se instalacija završi i da se ažuriraju prijevodi (proces može potrajati nekoliko minuta).

Unesite naziv web stranice, definirajte email web stranice (s kojeg će dolaziti obavijesti), korisničko ime, lozinku i email administratorskog računa Drupl. Također, odaberite državu i vremensku zonu u regionalnim postavkama. Završite instalaciju klikom na "Spremi i nastavi".

Nakon toga možete se prijaviti u upravljačku ploču sa stvorenim korisničkim imenom i lozinkom za administratora Drupl.

Postavljanje HTTPS (opcionalno)

Za postavljanje HTTPS na VDS-u, potrebno je imati važeće DNS ime, navedite u

/etc/nginx/nginx.conf

odjeljku server ime servera (npr.):

server_name  domainname.hr;

Ponovo pokrenimo nginx:

service nginx restart

Pokrenimo certbot:

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

Unesite svoj email, slažete se s uvjetima usluge (A), pretplatom na biltene (opcionalno) (N), odaberite domenska imena za koja želite dobiti certifikat (Enter za sve).

Ako sve prođe bez grešaka, vidjet ćemo poruku o uspješnom izdavanju certifikata i konfiguraciji poslužitelja:

Čestitamo! Uspješno ste omogućili ...

Nakon ovog povezivanja portovi 80 će se preusmjeriti na 443 (https).

Dodajte u /etc/crontab za automatsko ažuriranje certifikata:

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

Postavljanje Trusted Host Security (preporučuje se)

Ova postavka je namijenjena kao rješenje problema s dinamičkim određivanjem base_url, a služi za sprečavanje napada HTTP HOST Header (kada vaš web misli da je netko drugi).

Za to je potrebno navesti pouzdana domena imena web stranice u datoteci postavki.

U datoteci

/usr/share/nginx/html/sites/default/settings.php otkomentirajte ili dodajte postavku s obrascima aktualnih imena web stranice, na primjer:

$settings['trusted_host_patterns'] = [
  '^www.mojadomena.hr$',
];

Instalacija PHP APCu (PREPORUČUJE SE)

Drupal podržava APCu — Alternative PHP User Cache, verzije 8 i 9 intenzivnije koriste APCu kao kratkoročni lokalni cache nego prethodne verzije. Veličina cache-a po defaultu (32 MB) odgovara većini web stranica i ne može prelaziti 512 MB.

Za aktivaciju instalirajte PHP APCu modul:

dnf -y install php-pecl-apcu

Ponovo pokrenite nginx i php-fpm:

service nginx restart
service php-fpm restart

U slučaju korištenja ruskog jezika i APCu s preporučenom veličinom memorije za cache, u upravljačkoj ploči možete vidjeti upozorenje da veličina dodijeljene memorije za cache odstupa od preporučene, ali zapravo sve pravilno funkcionira, a netočno upozorenje vjerojatno će ispraviti u najnovijim ažuriranjima.

Ili, ako vam upozorenje smeta, možete koristiti odgovarajući patch s externog linka.

Želimo vas podsjetiti da i vi možete kreirati sliku za nas

Postoje tri načina kako možete sudjelovati.

Pripremite sliku sami i dobijte 3000 kuna na saldo

Ako ste spremni odmah se upustiti u borbu i sami stvoriti sliku koja vam nedostaje, uplatit ćemo vam 3000 kuna na unutarnji saldo — moći ćete ih potrošiti na servere.

Kako stvoriti svoju sliku:

  1. Kreirajte računa kod nas na web stranici
  2. Obavijestite podršku da namjeravate kreirati i testirati slike
  3. Uplatit ćemo vam 3000 kuna i omogućiti stvaranje snimaka stanja
  4. Naručite virtualni server s čistim operativnim sustavom
  5. Instalirajte softver na ovu VPS i postavite ga
  6. Sastavite upute ili skriptu za implementaciju softvera
  7. Kreirajte snimak stanja za postavljeni server
  8. Naručite novi virtualni server, birajući prethodno kreirani snimak stanja u padajućem izborniku 'Predložak servera'
  9. U slučaju uspješnog kreiranja servera, proslijedite materijale dobivene u koraku 6 tehničkoj podršci
  10. U slučaju pogreške možete se obratiti podršci za uzrok i ponoviti postavku

Za vlasnike tvrtki: ponudite svoj softver

Ako ste programer softvera koji se instalira i koristi na VPS-u, možemo vas uključiti u tržište. Tako možemo pomoći da dovedete nove klijente, promet i prepoznatljivost. Pišite nam

Recite nam u komentarima koje slike vam nedostaju?

I mi ćemo je pripremiti sami

Kreiranje VPS predloška s Drupal 9 na CentOS 8

Kreiranje VPS predloška s Drupal 9 na CentOS 8

Izvor: habr.com

Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere 🔥 Kupite pouzdan hosting za web stranice s DDoS zaštitom, VPS VDS servere | ProHoster