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 lavede et Gitlab-billede, og i denne uge dukkede den op på vores markedsplads Drupal.

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 praktisk og kraftfuld platform til at oprette enhver type hjemmeside: fra mikrosider og blogs til store sociale projekter, der også bruges som grundlag for webapplikationer, er skrevet i PHP og bruger relationelle databaser som datalagring.

Drupal Version 9 indeholder alle de funktioner, der blev implementeret i version 8.9. Den væsentligste forskel mellem version 9 og version 8 er, at platformen fortsat vil modtage opdateringer og sikkerhedsrettelser efter november 2021. Version 9 forenkler også opdateringsprocessen, hvilket gør det endnu nemmere at opgradere fra version 8.

Serverkrav

At bruge Drupal Det anbefales at bruge 2 GB RAM og 2 CPU-kerner.

Hovedfiler Drupal Hvis det fylder omkring 100 MB, skal du også bruge plads til at gemme billeder, en database, temaer, yderligere moduler og sikkerhedskopier, hvilket afhænger af størrelsen på dit websted.

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

Som en webserver Drupal kan bruge Apache eller Nginx, 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 det i øjeblikket er i hovedarkivet Centos PHP version 7.2 bruges, lad os tilføje REMI-arkivet med PHP 7.4 (minimumsversionen for Drupal 9).
For at gøre dette tilføjer vi EPEL-arkivet (påkrævet af REMI-arkivet):

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

Lad os tilføje REMI-arkivet:

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

Vi installerer de PHP-moduler, der kræves til arbejdet. Drupal:

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 installerer også de anbefalede PHP-moduler mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Lad os installere MySQL-serveren:

sudo dnf install mysql-server -y

Lad os aktivere 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 30-sekunders mysqld opstartsforsinkelse, ellers kan der være problemer med at starte serveren under den første 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 skal fungere under, ved at foretage ændringer 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

Lad os også ændre ejeren af ​​PHP-sessionsmappen til nginx:

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

Lad os fjerne de kommenterede linjer fra konfigurationsfilen /etc/nginx/nginx.conf (for at undgå dobbelt udløsning af 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 til at behandle PHP via php-fpm-socket'en, deaktivere loggen for statiske filer, øge udløbstiden, deaktivere adgangs- og fejlloggen for favicon.ico og robots.txt og forbyde adgang 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

Lad os installere wget, som kræves for at installere certbot:

sudo dnf install wget -y

Lad os downloade den eksekverbare certbot-fil fra det officielle websted:

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

Lad os flytte certbot til /usr/local/bin/:

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

Og vi vil tildele rettigheder og ejer til root:

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

Lad os installere certbot-afhængigheder og stoppe det på dette tidspunkt (Svar: Y, c):

certbot-auto

Download arkivet med den nyeste version fra den officielle hjemmeside. Drupal 9:

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

Lad os installere tar for at udpakke arkivet:

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 webserverens mappe:

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

Lad os flytte filerne fra undermappen til webserverens rodmappe:

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 installationsfilerne:

rm -f ./tar.gz

Lad os tildele nginx som ejer af filerne:

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

På dette tidspunkt lukker vi serveren ned og tager et snapshot:

shutdown -h now

Efter at have startet VDS'en fra snapshot'et, 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 en adgangskode 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 oprette forbindelse 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

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

Lad os vælge det sprog, vi vil bruge. For eksempel: russisk. Klik på "Gem og fortsæt"

Lad os vælge installationsprofilen (demoen bruges udelukkende til at blive fortrolig med systemet). I vores tilfælde, lad det være "standard".

På næste side giver vi databasen et navn, for eksempel "drupal". Lad os angive databasebrugernavnet root og den angivne adgangskode til det, når mysql_secure_installation køres. Klik på "Gem og fortsæt".

Vent, indtil installationen er færdig, og oversættelserne er opdateret (processen kan tage flere minutter).

Vi angiver navnet på webstedet, indstiller webstedets e-mail (hvorfra webstedsmeddelelser sendes), login, adgangskode og e-mail til administratorkontoen. DrupalVi indstiller også land og tidszone i de regionale indstillinger. Fuldfør derefter installationen ved at klikke på "Gem og fortsæt".

Derefter kan du gå til kontrolpanelet med det oprettede administratorlogin og den oprettede adgangskode. Drupal.

Opsætning af HTTPS (valgfrit)

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

/etc/nginx/nginx.conf

i serversektionen servernavnet (for eksempel):

server_name  domainname.ru;

Lad os genstarte nginx:

service nginx restart

Lad os køre certbot:

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

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

Hvis alt gik uden fejl, vil vi se en besked om den vellykkede udstedelse af certifikater og serverkonfiguration:

Congratulations! You have successfully enabled ...

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

Lad os tilføje 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, ​​det er en anden).

For at gøre dette skal du angive webstedets betroede domænenavne 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 aktuelle webstedsnavne, for eksempel:

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

Installation af PHP APCu (ANBEFALET)

Drupal Understøtter APCu (Alternative PHP User Cache). Version 8 og 9 bruger APCu mere intensivt som en kortvarig lokal cache end tidligere versioner. Standardcachestørrelsen (32 MB) er egnet til de fleste websteder og må ikke overstige 512 MB.

For at aktivere skal du installere PHP APCu-modulet:

dnf -y install php-pecl-apcu

Lad os genstarte nginx og php-fpm:

service nginx restart
service php-fpm restart

Hvis du bruger russisk sprog og APCu med anbefalet cachehukommelsesstørrelse, kan du i kontrolpanelet se en advarsel om, at den tildelte cachehukommelsesstørrelse afviger 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 er for skæmmende, kan du bruge tilsvarende patch fra den officielle hjemmeside.

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

Der er tre muligheder for, hvordan man kan deltage.

Forbered billedet selv og få 3000 rubler på din saldo

Hvis du er klar til straks at storme ind i kampen og skabe det image, du mangler, krediterer vi dig 3000 rubler til din interne saldo - du kan bruge dem på servere.

Sådan skaber du dit eget billede:

  1. Opret en konto hos os på Online
  2. Giv support besked om, at du vil oprette og teste billeder.
  3. Vi krediterer dig med 3000 rubler og giver dig mulighed for at lave snapshots
  4. Bestil en virtuel server med et rent operativsystem
  5. Installer software på denne VPS og konfigurer den
  6. Opret instruktioner eller et script til implementering af software
  7. Opret et snapshot af den konfigurerede server
  8. Bestil en ny virtuel server ved at vælge det tidligere oprettede snapshot fra rullemenuen "Serverskabelon".
  9. Hvis serveren er oprettet, bedes du indsende materialerne fra trin 6 til teknisk support.
  10. I tilfælde af en fejl kan du kontakte support for at finde årsagen og gentage opsætningen.

Til virksomhedsejere: Tilbyd din software

Hvis du er softwareudvikler, der implementeres og bruges på en VPS, kan vi inkludere dig i markedet. På denne måde kan vi hjælpe dig med at tiltrække nye kunder, trafik og opmærksomhed. Skriv til os

Fortæl os i kommentarerne hvilket billede du mangler?

Og vi vil selv forberede det.

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

Køb pålidelig hosting til websteder med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster