Opprette en VPS-mal med Drupal 9 på Centos 8

Vi fortsetter å utvide markedsplassen vår. Vi har nylig fortalt deg hvordan laget et Gitlab-bilde, og denne uken dukket Drupal opp på markedsplassen vår.

Vi forteller deg hvorfor vi valgte ham og hvordan bildet ble skapt.

Opprette en VPS-mal med Drupal 9 på Centos 8

Drupal — en praktisk og kraftig plattform for å lage alle typer nettsider: fra mikrosider og blogger til store sosiale prosjekter, også brukt som grunnlag for nettapplikasjoner, skrevet i PHP og ved å bruke relasjonsdatabaser som datalagring.

Drupal 9 inkluderer alle funksjonene introdusert i versjon 8.9. Den viktigste forskjellen mellom versjon 9 og versjon 8 er at plattformen vil fortsette å motta oppdateringer og sikkerhetsreparasjoner etter november 2021. Versjon 9 forenkler også oppdateringsprosessen, noe som gjør prosessen med å oppgradere fra versjon 8 enda enklere.

Serverkrav

For å bruke Drupal anbefales det å bruke 2 GB RAM og 2 CPU-kjerner.

De viktigste Drupal-filene tar opp omtrent 100 MB, i tillegg trenger du plass til å lagre bilder, database, temaer, tilleggsmoduler og sikkerhetskopier, som vil avhenge av størrelsen på nettstedet ditt.

Drupal 9 krever PHP 7.4 eller høyere med en minimumsbegrensning (memory_limit) for 64 MB minne; hvis tilleggsmoduler brukes, anbefales det å installere 128 MB.

Drupal kan bruke Apache eller Nginx som webserver, og MySQL, PostgreSQL eller SQLite som database.

Vi skal installere Drupal ved hjelp av Nginx og MySQL.

Installasjon

La oss oppdatere de installerte pakkene til den nyeste versjonen:

sudo dnf update -y

La oss legge til permanent tillatelse for innkommende trafikk til http/80- og https/443-portene:

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

La oss bruke de nye brannmurreglene:

sudo systemctl reload firewalld

La oss installere Nginx:

sudo dnf install nginx -y

La oss starte og aktivere Nginx-serveren:

sudo systemctl start nginx
sudo systemctl enable nginx

Siden hoveddepotet til Centos for tiden bruker PHP 7.2, la oss legge til et REMI-depot med PHP 7.4 (minimumsversjon for Drupal 9).
For å gjøre dette, legg til EPEL-depotet (påkrevd av REMI-depotet):

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

La oss legge til REMI-depotet:

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

La oss aktivere php:remi-7.4-modulen for å installere php 7.4:

sudo dnf module enable php:remi-7.4 -y

Installer php-fpm og php-cli:

sudo dnf install -y php-fpm php-cli

La oss installere PHP-modulene som kreves for at Drupal skal fungere:

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

Vi vil også installere de anbefalte PHP mbstring opcache-modulene:

sudo dnf install -y php-mbstring php-opcache

La oss installere MySQL-serveren:

sudo dnf install mysql-server -y

La oss slå på og starte MySQL-serveren:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Siden vi lager en mal for VDS, og de kan være trege, vil vi legge til en mysqld-startforsinkelse på 30 sekunder, ellers kan det være problemer med at serveren starter under den første systemoppstarten:

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

La oss endre gruppen og brukeren som nginx skal kjøre under ved å gjøre endringer i /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

La oss endre eieren av PHP-sesjonskatalogen til nginx tilsvarende:

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

La oss fjerne linjene med kommentarer fra konfigurasjonsfilen /etc/nginx/nginx.conf (slik at det ikke er noen doble triggere for sed):

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

Legg til gzip-komprimeringsinnstillinger til /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

La oss legge til innstillingene for indeksfilen index.php til /etc/nginx/nginx.conf:

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

La oss legge til innstillinger for standardserveren: PHP-behandling via php-fpm-kontakten, deaktiver loggen for statiske filer, øke utløpstiden, deaktivere tilgangs- og feilloggen for favicon.ico og robots.txt, og nekte tilgang til .ht filer for alle:

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

Installer wget nødvendig for å installere certbot:

sudo dnf install wget -y

Last ned den kjørbare certbot-filen fra offsite:

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

Flytt certbot til /usr/local/bin/:

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

Og la oss tildele rettighetene som eier til root:

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

La oss installere certbot-avhengighetene og på dette stadiet avbryte arbeidet (Svar: Y, c):

certbot-auto

La oss laste ned arkivet med den nyeste versjonen av Drupal 9 fra offsite:

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

Installer tar for å pakke ut arkivet:

sudo dnf install tar -y

La oss slette standardfilene i katalogen /usr/share/nginx/html/:

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

La oss pakke ut filene i webserverkatalogen:

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

La oss flytte filene fra underkatalogen til rotkatalogen til webserveren:

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

La oss slette underkatalogen:

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

La oss slette arkivet med installasjonsfiler:

rm -f ./tar.gz

La oss tildele eieren av nginx-filene:

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

På dette stadiet slår vi av serveren og tar et øyeblikksbilde:

shutdown -h now

Etter å ha startet VDS fra øyeblikksbildet, vil vi utføre det første oppsettet av MySQL-serveren ved å kjøre skriptet:

mysql_secure_installation

La oss aktivere passordvalidatoren:

Would you like to setup VALIDATE PASSWORD component? : y

La oss angi passordet for MySQL root-brukeren:

New password:
Re-enter new password:

La oss fjerne anonyme brukere:

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

La oss forhindre at root kobles til eksternt:

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

La oss slette testdatabasen:

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

La oss laste inn privilegietabellene på nytt:

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

Etter dette, for å fullføre installasjonen, kan vi gå til vps_ip_adresse
På denne adressen vil vi se Drupal-installasjonssiden.

La oss velge språket som skal brukes. For eksempel: russisk. Klikk "Lagre og fortsett"

La oss velge en installasjonsprofil (demoen brukes utelukkende for å gjøre deg kjent med systemet). I vårt tilfelle, la det være "standard".

På neste side vil vi gi et navn til databasen, for eksempel "drupal". La oss angi databasebrukernavnet roten og passordet gitt til ham når du kjører mysql_secure_installation. Klikk "Lagre og fortsett."

La oss vente til installasjonen og oppdateringen av oversettelser er fullført (prosessen kan ta flere minutter).

Vi vil indikere navnet på nettstedet, angi nettstedets e-postadresse (på vegne av hvilken sidevarsler vil bli sendt), pålogging, passord og e-post for Drupal-administratorkontoen. Vi vil også angi land og tidssone i de regionale innstillingene. Og fullfør installasjonen ved å klikke "Lagre og fortsett".

Etter dette kan du gå til kontrollpanelet med den opprettede Drupal-administratorinnloggingen og passordet.

Sette opp HTTPS (valgfritt)

For å konfigurere HTTPS må VDS-en ha et gyldig DNS-navn, spesifiser i

/etc/nginx/nginx.conf

i serverdelen servernavnet (for eksempel):

server_name  domainname.ru;

La oss starte nginx på nytt:

service nginx restart

La oss lansere certbot:

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

Skriv inn e-posten din, godta vilkårene for bruk (A), Abonner på nyhetsbrevet (valgfritt) (N), velg domenenavnene du vil utstede et sertifikat for (Skriv inn for alle).

Hvis alt gikk uten feil, vil vi se en melding om vellykket utstedelse av sertifikater og serverkonfigurasjon:

Congratulations! You have successfully enabled ...

Etter dette vil tilkoblinger til port 80 bli omdirigert til 443 (https).

Legg til i /etc/crontab for å automatisk oppdatere sertifikater:

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

Sette opp Trusted Host Security (anbefalt)

Denne innstillingen er ment som en løsning på problemet knyttet til dynamisk base_url-bestemmelse, og er utformet for å forhindre HTTP HOST Header-angrep (når nettstedet ditt tror at det er noen andre).

For å gjøre dette må du spesifisere pålitelige domenenavn for nettstedet i innstillingsfilen.

I fil

/usr/share/nginx/html/sites/default/settings.php La oss fjerne kommentarer eller legge til en innstilling med mønstre av faktiske nettstedsnavn, for eksempel:

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

Installere PHP APCu (ANBEFALT)

Drupal støtter APCu - Alternativ PHP User Cache, versjon 8 og 9 gjør større bruk av APCu som en kortsiktig lokal cache enn tidligere versjoner. Standard cache-størrelse (32 MB) passer for de fleste nettsteder, og kan ikke overstige 512 MB.

For å aktivere, installer PHP APCu-modulen:

dnf -y install php-pecl-apcu

Start nginx og php-fpm på nytt:

service nginx restart
service php-fpm restart

Hvis du bruker russisk språk og APCu med anbefalt minnestørrelse for cachen, kan det hende du ser en advarsel i kontrollpanelet om at størrelsen på det tildelte minnet for cachen er forskjellig fra den anbefalte, men faktisk fungerer alt som det skal, og feil advarsel vil mest sannsynlig bli rettet i de neste oppdateringene.

Eller hvis advarselen gjør vondt i øynene, kan du bruke tilsvarende oppdatering fra offsite.

Vi vil minne deg på at du også kan lage et bilde for oss

Det er tre alternativer for hvordan du deltar.

Forbered bildet selv og få 3000 rubler til saldoen din

Hvis du er klar til å umiddelbart skynde deg inn i kamp og lage bildet du mangler, vil vi kreditere deg med 3000 rubler til din interne saldo, som du kan bruke på servere.

Slik lager du ditt eget bilde:

  1. Opprett en konto hos oss på nettsted
  2. Gi støtten beskjed om at du skal lage og teste bilder
  3. Vi vil kreditere deg 3000 rubler og aktivere muligheten til å lage øyeblikksbilder
  4. Bestill en virtuell server med et rent operativsystem
  5. Installer programvaren på denne VPS-en og konfigurer den
  6. Skriv instruksjoner eller skript for programvaredistribusjon
  7. Lag et øyeblikksbilde for den konfigurerte serveren
  8. Bestill en ny virtuell server ved å velge det tidligere opprettede øyeblikksbildet i rullegardinlisten "Servermal".
  9. Hvis serveren er opprettet, overfører du materialet mottatt på trinn 6 til teknisk støtte
  10. Hvis det er en feil, kan du sjekke med support for årsaken og gjenta oppsettet

For bedriftseiere: tilby programvaren din

Hvis du er en programvareutvikler som er distribuert og brukt på VPS, kan vi inkludere deg på markedet. Slik kan vi hjelpe deg med å bringe nye kunder, trafikk og bevissthet. Skriv til oss

Fortell oss i kommentarfeltet hvilket bilde du mangler?

Og vi vil forberede det selv

Opprette en VPS-mal med Drupal 9 på Centos 8

Opprette en VPS-mal med Drupal 9 på Centos 8

Kilde: www.habr.com