Stvaranje VPS predloška s Drupalom 9 na Centosu 8

Nastavljamo širiti svoje tržište. Nedavno smo vam rekli kako napravio Gitlab sliku, a ovog tjedna Drupal se pojavio i na našem tržištu.

Javljamo vam zašto smo ga odabrali i kako je nastala slika.

Stvaranje VPS predloška s Drupalom 9 na Centosu 8

Drupal — praktična i snažna platforma za izradu bilo koje vrste web stranice: od mikrostranica i blogova do velikih društvenih projekata, koja se također koristi kao osnova za web aplikacije, napisane u PHP-u i koriste relacijske baze podataka kao pohranu podataka.

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

Zahtjevi poslužitelja

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

Glavne Drupal datoteke zauzimaju oko 100 MB, osim toga trebat će vam prostor za pohranu slika, baze podataka, tema, dodatnih modula i sigurnosnih kopija, što će ovisiti o veličini vaše stranice.

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

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

Drupal ćemo instalirati koristeći Nginx i MySQL.

Instalacija

Ažurirajmo instalirane pakete na najnoviju verziju:

sudo dnf update -y

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

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

Primijenimo nova pravila vatrozida:

sudo systemctl reload firewalld

Instaliramo Nginx:

sudo dnf install nginx -y

Pokrenimo i omogućimo Nginx poslužitelj:

sudo systemctl start nginx
sudo systemctl enable nginx

Budući da glavni Centos repozitorij trenutno koristi PHP 7.2, dodajmo REMI repozitorij s PHP 7.4 (minimalna verzija za Drupal 9).
Da biste to učinili, dodajte EPEL repozitorij (zahtijeva ga REMI repozitorij):

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

Dodajmo REMI repozitorij:

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

Omogućimo php:remi-7.4 modul za instalaciju 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

Instalirajmo 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 mbstring opcache module:

sudo dnf install -y php-mbstring php-opcache

Instalirajmo MySQL poslužitelj:

sudo dnf install mysql-server -y

Uključimo i pokrenimo MySQL poslužitelj:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Budući da izrađujemo predložak za VDS, a oni mogu biti spori, dodat ćemo odgodu pokretanja mysqlda od 30 sekundi, inače može doći do problema s pokretanjem poslužitelja tijekom početnog pokretanja sustava:

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

Promijenimo grupu i korisnika pod kojim će se nginx izvoditi unošenjem promjena 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

U skladu s tim promijenimo vlasnika direktorija PHP sesija u nginx:

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

Uklonimo retke 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

Dodajmo postavke za zadani poslužitelj: PHP obrada putem php-fpm utičnice, onemogućite zapisnik za statičke datoteke, povećajte vrijeme isteka, onemogućite pristup i zapisnik grešaka za favicon.ico i robots.txt i zabranite pristup .ht datoteke 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 certbota s druge stranice:

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

Premjesti certbot u /usr/local/bin/:

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

I dodijelimo prava kao vlasnik za root:

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

Instalirajmo ovisnosti certbota i u ovoj fazi prekinimo njegov rad (Odgovori: Y, c):

certbot-auto

Preuzmite arhivu s najnovijom verzijom Drupala 9 s vanjske stranice:

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

Instalirajte tar da raspakirate arhivu:

sudo dnf install tar -y

Idemo izbrisati zadane datoteke u direktoriju /usr/share/nginx/html/:

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

Raspakirajmo datoteke u direktorij web poslužitelja:

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

Premjestimo datoteke iz poddirektorija u korijenski direktorij web poslužitelja:

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

Idemo izbrisati poddirektorij:

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

Idemo izbrisati arhivu s instalacijskim datotekama:

rm -f ./tar.gz

Dodijelimo vlasnika nginx datotekama:

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

U ovoj fazi isključit ćemo poslužitelj i napraviti snimku:

shutdown -h now

Nakon pokretanja VDS-a iz snimke, izvršit ćemo početno postavljanje MySQL poslužitelja pokretanjem skripte:

mysql_secure_installation

Omogućimo validator zaporke:

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 root da se poveže na daljinu:

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

Idemo izbrisati test bazu podataka:

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

Ponovno učitajmo tablice privilegija:

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

Nakon toga, da bismo dovršili instalaciju, možemo ići na vps_ip_adresa
Na ovoj adresi vidjet ćemo stranicu za instalaciju Drupala.

Odaberimo jezik koji ćemo koristiti. Na primjer: ruski. Kliknite "Spremi i nastavi"

Odaberimo instalacijski profil (demo služi isključivo za upoznavanje sa sustavom). U našem slučaju, neka bude "standard".

Na sljedećoj stranici dat ćemo ime bazi podataka, na primjer "drupal". Naznačimo korisničko ime baze podataka root i lozinku koja mu je dana prilikom pokretanja mysql_secure_installation. Kliknite "Spremi i nastavi".

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

Navest ćemo naziv stranice, postaviti e-poštu stranice (u ime koje će se slati obavijesti stranice), prijavu, lozinku i e-poštu Drupal administratorskog računa. Također ćemo postaviti državu i vremensku zonu u regionalnim postavkama. I dovršite instalaciju klikom na “Spremi i nastavi”.

Nakon toga možete otići na upravljačku ploču s kreiranom prijavom i lozinkom za administratora Drupala.

Postavljanje HTTPS-a (nije obavezno)

Za konfiguraciju HTTPS-a, VDS mora imati valjani DNS naziv, navedite u

/etc/nginx/nginx.conf

u odjeljku poslužitelja ime poslužitelja (na primjer):

server_name  domainname.ru;

Ponovno pokrenimo nginx:

service nginx restart

Pokrenimo certbot:

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

Unesite svoju e-mail adresu, složite se s uvjetima korištenja (A), pretplatite se na newsletter (opciono) (N), odaberite nazive domena za koje želite izdati certifikat (unesi za sve).

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

Congratulations! You have successfully enabled ...

Nakon toga, veze na port 80 bit će preusmjerene 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 sigurnosti pouzdanog domaćina (preporučeno)

Ova je postavka namijenjena kao rješenje problema povezanog s dinamičkim određivanjem base_url-a i osmišljena je za sprječavanje napada HTTP HOST Header (kada vaša stranica misli da je netko drugi).

Da biste to učinili, trebate navesti nazive pouzdanih domena za web mjesto u datoteci postavki.

U spisu

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

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

Instaliranje PHP APCu (PREPORUČENO)

Drupal podržava APCu - alternativnu PHP korisničku predmemoriju, verzije 8 i 9 više koriste APCu kao kratkoročnu lokalnu predmemoriju nego prethodne verzije. Zadana veličina predmemorije (32 MB) prikladna je za većinu web-mjesta i ne smije premašiti 512 MB.

Za aktivaciju instalirajte PHP APCu modul:

dnf -y install php-pecl-apcu

Ponovno pokrenite nginx i php-fpm:

service nginx restart
service php-fpm restart

Ako koristite ruski jezik i APCu s preporučenom veličinom memorije za predmemoriju, možda ćete vidjeti upozorenje na upravljačkoj ploči da se veličina dodijeljene memorije za predmemoriju razlikuje od preporučene, ali zapravo sve radi ispravno, a netočno upozorenje najvjerojatnije će biti ispravljeno u sljedećim ažuriranjima.

Ili ako vam upozorenje šteti očima, možete koristiti odgovarajuća zakrpa s druge stranice.

Napominjemo da nam možete izraditi i sliku

Postoje tri opcije kako sudjelovati.

Pripremite sliku sami i uzmite 3000 rubalja na svoj saldo

Ako ste spremni odmah požuriti u bitku i stvoriti sliku koja vam nedostaje, dodijelit ćemo vam 3000 rubalja na vaš interni saldo, koje možete potrošiti na poslužiteljima.

Kako stvoriti vlastitu sliku:

  1. Kreirajte račun kod nas na Online
  2. Obavijestite podršku da ćete izraditi i testirati slike
  3. Dodijelit ćemo vam 3000 rubalja i omogućiti vam mogućnost izrade snimaka
  4. Naručite virtualni poslužitelj s čistim operativnim sustavom
  5. Instalirajte softver na ovaj VPS i konfigurirajte ga
  6. Napišite upute ili skriptu za implementaciju softvera
  7. Stvorite snimku za konfigurirani poslužitelj
  8. Naručite novi virtualni poslužitelj odabirom prethodno stvorene snimke na padajućem popisu "Predložak poslužitelja".
  9. Ako je poslužitelj uspješno kreiran, prenesite materijale primljene u fazi 6 tehničkoj podršci
  10. Ako postoji pogreška, možete provjeriti s podrškom za razlog i ponoviti postavljanje

Za vlasnike tvrtki: ponudite svoj softver

Ako ste programer softvera koji je implementiran i korišten na VPS-u, možemo vas uključiti u tržište. Ovo je način na koji 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

Stvaranje VPS predloška s Drupalom 9 na Centosu 8

Stvaranje VPS predloška s Drupalom 9 na Centosu 8

Izvor: www.habr.com