Oprettelse af en VPS-skabelon med Drupal 9 på Centos 8

Vi fortsætter med at udvide vores markedsplads. Vi fortalte dig for nylig hvordan lavet et Gitlab-billede, og i denne uge dukkede Drupal op på vores markedsplads.

Vi fortæller dig, hvorfor vi valgte ham, og hvordan billedet blev skabt.

Oprettelse af en VPS-skabelon med Drupal 9 på Centos 8

Drupal — en bekvem og kraftfuld platform til at skabe enhver form for websted: fra mikrosider og blogs til store sociale projekter, også brugt som grundlag for webapplikationer, skrevet i PHP og ved hjælp af relationelle databaser som datalagring.

Drupal 9 indeholder alle de funktioner, der blev introduceret i version 8.9. Den vigtigste forskel mellem version 9 og version 8 er, at platformen vil fortsætte med at modtage opdateringer og sikkerhedsrettelser efter november 2021. Version 9 forenkler også opdateringsprocessen, hvilket gør processen med at opgradere fra version 8 endnu nemmere.

Serverkrav

For at bruge Drupal anbefales det at bruge 2 GB RAM og 2 CPU-kerner.

De vigtigste Drupal-filer fylder omkring 100 MB, derudover skal du bruge plads til at gemme billeder, database, temaer, yderligere moduler og sikkerhedskopier, hvilket vil afhænge af størrelsen på dit websted.

Drupal 9 kræver PHP 7.4 eller højere med en minimumsbegrænsning (memory_limit) for 64 MB hukommelse; hvis der bruges yderligere moduler, anbefales det at installere 128 MB.

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

Vi vil installere Drupal ved hjælp af Nginx og MySQL.

Installation

Lad os opdatere de installerede pakker til den nyeste version:

sudo dnf update -y

Lad os tilføje permanent tilladelse til indgående trafik til http/80- og https/443-porte:

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

Lad os anvende de nye firewallregler:

sudo systemctl reload firewalld

Lad os installere Nginx:

sudo dnf install nginx -y

Lad os starte og aktivere Nginx-serveren:

sudo systemctl start nginx
sudo systemctl enable nginx

Da Centos' hovedlager i øjeblikket bruger PHP 7.2, lad os tilføje et REMI-lager med PHP 7.4 (minimumsversion for Drupal 9).
For at gøre dette skal du tilføje EPEL-depotet (påkrævet af REMI-depotet):

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

Lad os tilføje REMI-depotet:

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

Lad os aktivere php:remi-7.4-modulet for at 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

Lad os installere de PHP-moduler, der kræves for at Drupal kan 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 anbefalede PHP mbstring opcache-moduler:

sudo dnf install -y php-mbstring php-opcache

Lad os installere MySQL-serveren:

sudo dnf install mysql-server -y

Lad os tænde og starte MySQL-serveren:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Da vi laver en skabelon til VDS, og de kan være langsomme, tilføjer vi en mysqld-startforsinkelse på 30 sekunder, ellers kan der være problemer med, at serveren starter under den indledende systemopstart:

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

Lad os ændre gruppen og brugeren, som nginx kører under, ved at lave ændringer til /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

Lad os ændre ejeren af ​​PHP-sessionsmappen til nginx i overensstemmelse hermed:

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

Lad os fjerne linjerne med kommentarer fra konfigurationsfilen /etc/nginx/nginx.conf (så der ikke er dobbelt triggere for sed):

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

Tilføj gzip-komprimeringsindstillinger 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

Lad os tilføje indstillingerne 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

Lad os tilføje indstillinger for standardserveren: PHP-behandling via php-fpm-socket, deaktiver loggen for statiske filer, øge udløbstiden, deaktiver adgangs- og fejlloggen for favicon.ico og robots.txt, og nægt adgang til .ht filer til 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 påkrævet for at installere certbot:

sudo dnf install wget -y

Download den eksekverbare certbot-fil fra offsite:

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

Flyt certbot til /usr/local/bin/:

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

Og lad os tildele rettighederne som ejer til root:

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

Lad os installere certbot-afhængighederne og på dette stadium afbryde dets arbejde (Svar: Y, c):

certbot-auto

Lad os downloade arkivet med den seneste version af Drupal 9 fra offsite:

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

Installer tar for at pakke arkivet ud:

sudo dnf install tar -y

Lad os slette standardfilerne i mappen /usr/share/nginx/html/:

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

Lad os pakke filerne ud i webserverbiblioteket:

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

Lad os flytte filerne fra undermappen til rodmappen på webserveren:

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

Lad os slette undermappen:

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

Lad os slette arkivet med installationsfiler:

rm -f ./tar.gz

Lad os tildele ejeren af ​​nginx-filerne:

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

På dette tidspunkt slukker vi serveren og tager et øjebliksbillede:

shutdown -h now

Efter at have startet VDS'en fra snapshottet, udfører vi den indledende opsætning af MySQL-serveren ved at køre scriptet:

mysql_secure_installation

Lad os aktivere adgangskodevalidatoren:

Would you like to setup VALIDATE PASSWORD component? : y

Lad os indstille adgangskoden til MySQL root-brugeren:

New password:
Re-enter new password:

Lad os fjerne anonyme brugere:

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

Lad os forhindre root i at forbinde eksternt:

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

Lad os slette testdatabasen:

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

Lad os genindlæse privilegietabellerne:

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

Efter dette, for at fuldføre installationen, kan vi gå til vps_ip_adresse
På denne adresse vil vi se Drupal installationssiden.

Lad os vælge det sprog, der skal bruges. For eksempel: russisk. Klik på "Gem og fortsæt"

Lad os vælge en installationsprofil (demoen bruges udelukkende til at gøre dig bekendt med systemet). I vores tilfælde, lad det være "standard".

På næste side vil vi give databasen et navn, for eksempel "drupal". Lad os angive databasebrugernavnet root og adgangskoden, som han fik, når han kører mysql_secure_installation. Klik på "Gem og fortsæt".

Lad os vente på, at installationen og opdateringen af ​​oversættelser er fuldført (processen kan tage flere minutter).

Vi vil angive navnet på webstedet, angive webstedets e-mail (på vegne af hvilken webstedsmeddelelser vil blive sendt), login, adgangskode og e-mail til Drupal-administratorkontoen. Vi vil også indstille land og tidszone i de regionale indstillinger. Og fuldfør installationen ved at klikke på "Gem og fortsæt".

Herefter kan du gå til kontrolpanelet med det oprettede Drupal-administratorlogin og adgangskode.

Opsætning af HTTPS (valgfrit)

For at konfigurere HTTPS skal VDS'en have et gyldigt DNS-navn, angiv i

/etc/nginx/nginx.conf

i serverafsnittet servernavnet (for eksempel):

server_name  domainname.ru;

Lad os genstarte nginx:

service nginx restart

Lad os starte certbot:

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

Indtast din e-mail, accepter servicevilkårene (A), Tilmeld dig nyhedsbrevet (valgfrit) (N), vælg de domænenavne, som du vil udstede et certifikat for (Enter for alle).

Hvis alt gik uden fejl, vil vi se en meddelelse om vellykket udstedelse af certifikater og serverkonfiguration:

Congratulations! You have successfully enabled ...

Herefter vil forbindelser til port 80 blive omdirigeret til 443 (https).

Tilføj til /etc/crontab for automatisk at opdatere certifikater:

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

Opsætning af Trusted Host Security (anbefales)

Denne indstilling er tænkt som en løsning på problemet forbundet med dynamisk base_url-bestemmelse og er designet til at forhindre HTTP HOST Header-angreb (når dit websted tror, ​​at det er en anden).

For at gøre dette skal du angive pålidelige domænenavne for webstedet i indstillingsfilen.

I fil

/usr/share/nginx/html/sites/default/settings.php Lad os fjerne kommentarer eller tilføje en indstilling med mønstre af faktiske webstedsnavne, for eksempel:

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

Installation af PHP APCu (ANBEFALET)

Drupal understøtter APCu - Alternativ PHP User Cache, version 8 og 9 gør større brug af APCu som en kortsigtet lokal cache end tidligere versioner. Standard cachestørrelsen (32 MB) er velegnet til de fleste websteder og kan ikke overstige 512 MB.

For at aktivere skal du installere PHP APCu-modulet:

dnf -y install php-pecl-apcu

Genstart nginx og php-fpm:

service nginx restart
service php-fpm restart

Hvis du bruger det russiske sprog og APCu med den anbefalede hukommelsesstørrelse for cachen, kan du se en advarsel i kontrolpanelet om, at størrelsen på den tildelte hukommelse til cachen er forskellig fra den anbefalede, men faktisk fungerer alt korrekt, og den forkerte advarsel vil højst sandsynligt blive rettet i de næste opdateringer.

Eller hvis advarslen gør ondt i øjnene, kan du bruge tilsvarende patch fra offsite.

Vi vil gerne minde dig om, at du også kan lave et billede til os

Der er tre muligheder for, hvordan man deltager.

Forbered selv billedet og få 3000 rubler til din saldo

Hvis du er klar til straks at skynde dig ind i kamp og skabe det billede, du mangler, vil vi kreditere dig med 3000 rubler til din interne saldo, som du kan bruge på servere.

Sådan laver du dit eget billede:

  1. Opret en konto hos os på Online
  2. Lad support vide, at du vil oprette og teste billeder
  3. Vi krediterer dig 3000 rubler og gør det muligt at oprette øjebliksbilleder
  4. Bestil en virtuel server med et rent operativsystem
  5. Installer softwaren på denne VPS og konfigurer den
  6. Skriv instruktioner eller script til softwareimplementering
  7. Opret et øjebliksbillede for den konfigurerede server
  8. Bestil en ny virtuel server ved at vælge det tidligere oprettede snapshot på rullelisten "Serverskabelon".
  9. Hvis serveren er oprettet, skal du overføre materialerne modtaget på trin 6 til teknisk support
  10. Hvis der er en fejl, kan du kontakte support for årsagen og gentage opsætningen

For virksomhedsejere: Tilbyd din software

Hvis du er en softwareudvikler, der er implementeret og brugt på VPS, så kan vi inkludere dig på markedspladsen. Sådan kan vi hjælpe dig med at bringe nye kunder, trafik og opmærksomhed. Skriv til os

Fortæl os i kommentarerne, hvilket billede du mangler?

Og vi forbereder det selv

Oprettelse af en VPS-skabelon med Drupal 9 på Centos 8

Oprettelse af en VPS-skabelon med Drupal 9 på Centos 8

Kilde: www.habr.com