Skapa en VPS-mall med Drupal 9 på Centos 8

Vi fortsätter att expandera vår marknadsplats. Vi berättade nyligen hur gjorde en Gitlab-bild, och den här veckan dök Drupal upp på vår marknadsplats.

Vi berättar varför vi valde honom och hur bilden skapades.

Skapa en VPS-mall med Drupal 9 på Centos 8

Drupal — en bekväm och kraftfull plattform för att skapa alla typer av webbplatser: från mikrosajter och bloggar till stora sociala projekt, som också används som bas för webbapplikationer, skrivna i PHP och använder relationsdatabaser som datalagring.

Drupal 9 innehåller alla funktioner som introducerades i version 8.9. Den viktigaste skillnaden mellan version 9 och version 8 är att plattformen kommer att fortsätta att ta emot uppdateringar och säkerhetskorrigeringar efter november 2021. Version 9 förenklar också uppdateringsprocessen, vilket gör processen att uppgradera från version 8 ännu enklare.

Serverkrav

För att använda Drupal rekommenderas det att använda 2 GB RAM och 2 CPU-kärnor.

De viktigaste Drupal-filerna tar upp cirka 100 MB, dessutom behöver du utrymme för att lagra bilder, databas, teman, ytterligare moduler och säkerhetskopior, vilket beror på storleken på din webbplats.

Drupal 9 kräver PHP 7.4 eller högre med en minimibegränsning (memory_limit) för 64 MB minne; om ytterligare moduler används rekommenderas det att installera 128 MB.

Drupal kan använda Apache eller Nginx som webbserver och MySQL, PostgreSQL eller SQLite som databas.

Vi kommer att installera Drupal med Nginx och MySQL.

Installation

Låt oss uppdatera de installerade paketen till den senaste versionen:

sudo dnf update -y

Låt oss lägga till permanent behörighet för inkommande trafik till portarna http/80 och https/443:

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

Låt oss tillämpa de nya brandväggsreglerna:

sudo systemctl reload firewalld

Låt oss installera Nginx:

sudo dnf install nginx -y

Låt oss starta och aktivera Nginx-servern:

sudo systemctl start nginx
sudo systemctl enable nginx

Eftersom Centos huvudförvare för närvarande använder PHP 7.2, låt oss lägga till ett REMI-förråd med PHP 7.4 (minimumversion för Drupal 9).
För att göra detta, lägg till EPEL-förvaret (krävs av REMI-förvaret):

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

Låt oss lägga till REMI-förvaret:

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

Låt oss aktivera php:remi-7.4-modulen för att installera php 7.4:

sudo dnf module enable php:remi-7.4 -y

Installera php-fpm och php-cli:

sudo dnf install -y php-fpm php-cli

Låt oss installera PHP-modulerna som krävs för att Drupal ska fungera:

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 kommer också att installera de rekommenderade PHP mbstring opcache-modulerna:

sudo dnf install -y php-mbstring php-opcache

Låt oss installera MySQL-servern:

sudo dnf install mysql-server -y

Låt oss slå på och starta MySQL-servern:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Eftersom vi gör en mall för VDS, och de kan vara långsamma, kommer vi att lägga till en mysqld-startfördröjning på 30 sekunder, annars kan det bli problem med att servern startar under den första systemstarten:

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

Låt oss ändra gruppen och användaren som nginx körs under genom att göra ändringar 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

Låt oss ändra ägaren av PHP-sessionskatalogen till nginx i enlighet med detta:

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

Låt oss ta bort raderna med kommentarer från konfigurationsfilen /etc/nginx/nginx.conf (så att det inte finns några dubbla triggers för sed):

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

Lägg till gzip-komprimeringsinställningar till /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

Låt oss lägga till inställningarna för indexfilen index.php till /etc/nginx/nginx.conf:

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

Låt oss lägga till inställningar för standardservern: PHP-bearbetning via php-fpm-socket, inaktivera loggen för statiska filer, öka utgångstiden, inaktivera åtkomst- och felloggen för favicon.ico och robots.txt och neka åtkomst till .ht filer för alla:

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

Installera wget som krävs för att installera certbot:

sudo dnf install wget -y

Ladda ner den körbara filen certbot från offsite:

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

Flytta certbot till /usr/local/bin/:

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

Och låt oss tilldela rättigheterna som ägare till root:

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

Låt oss installera certbot-beroendena och i detta skede avbryta dess arbete (Svar: Y, c):

certbot-auto

Låt oss ladda ner arkivet med den senaste versionen av Drupal 9 från offsite:

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

Installera tar för att packa upp arkivet:

sudo dnf install tar -y

Låt oss ta bort standardfilerna i katalogen /usr/share/nginx/html/:

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

Låt oss packa upp filerna i webbserverkatalogen:

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

Låt oss flytta filerna från underkatalogen till rotkatalogen på webbservern:

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

Låt oss ta bort underkatalogen:

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

Låt oss ta bort arkivet med installationsfiler:

rm -f ./tar.gz

Låt oss tilldela ägaren av nginx-filerna:

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

I detta skede kommer vi att stänga av servern och ta en ögonblicksbild:

shutdown -h now

Efter att ha startat VDS från ögonblicksbilden kommer vi att utföra den första installationen av MySQL-servern genom att köra skriptet:

mysql_secure_installation

Låt oss aktivera lösenordsvalideraren:

Would you like to setup VALIDATE PASSWORD component? : y

Låt oss ställa in lösenordet för MySQL root-användaren:

New password:
Re-enter new password:

Låt oss ta bort anonyma användare:

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

Låt oss förhindra att root ansluter på distans:

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

Låt oss ta bort testdatabasen:

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

Låt oss ladda om privilegietabellerna:

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

Efter detta, för att slutföra installationen, kan vi gå till vps_ip_adress
På den här adressen kommer vi att se installationssidan för Drupal.

Låt oss välja vilket språk som ska användas. Till exempel: ryska. Klicka på "Spara och fortsätt"

Låt oss välja en installationsprofil (demon används endast för att bekanta dig med systemet). I vårt fall, låt det vara "standard".

På nästa sida kommer vi att ge databasen ett namn, till exempel "drupal". Låt oss ange databasens användarnamn root och lösenordet som han fick när han körde mysql_secure_installation. Klicka på "Spara och fortsätt".

Låt oss vänta tills installationen och uppdateringen av översättningarna är klara (processen kan ta flera minuter).

Vi kommer att ange namnet på webbplatsen, ställa in webbplatsens e-postadress (på uppdrag av vilken webbplatsmeddelanden kommer att skickas), inloggning, lösenord och e-postadress för Drupal-administratörskontot. Vi kommer också att ställa in land och tidszon i de regionala inställningarna. Och slutför installationen genom att klicka på "Spara och fortsätt".

Efter detta kan du gå till kontrollpanelen med den skapade Drupal-administratörsinloggningen och lösenordet.

Konfigurera HTTPS (valfritt)

För att konfigurera HTTPS måste VDS ha ett giltigt DNS-namn, specificera i

/etc/nginx/nginx.conf

i serversektionen servernamnet (till exempel):

server_name  domainname.ru;

Låt oss starta om nginx:

service nginx restart

Låt oss starta certbot:

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

Ange din e-post, godkänn användarvillkoren (A), Prenumerera på nyhetsbrevet (valfritt) (N), välj de domännamn som du vill utfärda ett certifikat för (Ange för alla).

Om allt gick utan fel kommer vi att se ett meddelande om framgångsrikt utfärdande av certifikat och serverkonfiguration:

Congratulations! You have successfully enabled ...

Efter detta kommer anslutningar till port 80 att omdirigeras till 443 (https).

Lägg till i /etc/crontab för att automatiskt uppdatera certifikat:

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

Konfigurera Trusted Host Security (rekommenderas)

Den här inställningen är avsedd som en lösning på problemet med dynamisk base_url-bestämning och är utformad för att förhindra HTTP HOST Header-attacker (när din webbplats tror att det är någon annan).

För att göra detta måste du ange betrodda domännamn för webbplatsen i inställningsfilen.

I fil

/usr/share/nginx/html/sites/default/settings.php Låt oss avkommentera eller lägga till en inställning med mönster av faktiska webbplatsnamn, till exempel:

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

Installera PHP APCu (REKOMMENDERAS)

Drupal stöder APCu - Alternativ PHP User Cache, version 8 och 9 använder APCu i större utsträckning som en kortvarig lokal cache än tidigare versioner. Standardcachestorleken (32 MB) är lämplig för de flesta webbplatser och kan inte överstiga 512 MB.

För att aktivera, installera PHP APCu-modulen:

dnf -y install php-pecl-apcu

Starta om nginx och php-fpm:

service nginx restart
service php-fpm restart

Om du använder det ryska språket och APCu med den rekommenderade minnesstorleken för cachen, kan du se en varning i kontrollpanelen om att storleken på det tilldelade minnet för cachen skiljer sig från det rekommenderade, men i själva verket fungerar allt korrekt, och den felaktiga varningen kommer med största sannolikhet att korrigeras i nästa uppdatering.

Eller om varningen gör ont i ögonen kan du använda motsvarande patch från offsite.

Vi vill påminna dig om att du även kan göra en bild åt oss

Det finns tre alternativ för hur man deltar.

Förbered bilden själv och få 3000 XNUMX rubel till ditt saldo

Om du är redo att genast rusa in i striden och skapa bilden som du saknar, kommer vi att kreditera dig med 3000 XNUMX rubel till ditt interna saldo, som du kan spendera på servrar.

Så här skapar du din egen bild:

  1. Skapa ett konto hos oss på Online
  2. Låt supporten veta att du ska skapa och testa bilder
  3. Vi kommer att kreditera dig 3000 XNUMX rubel och möjliggöra möjligheten att skapa ögonblicksbilder
  4. Beställ en virtuell server med ett rent operativsystem
  5. Installera programvaran på denna VPS och konfigurera den
  6. Skriv instruktioner eller skript för programdistribution
  7. Skapa en ögonblicksbild för den konfigurerade servern
  8. Beställ en ny virtuell server genom att välja den tidigare skapade ögonblicksbilden i rullgardinsmenyn "Servermall".
  9. Om servern har skapats framgångsrikt, överför materialet som togs emot i steg 6 till teknisk support
  10. Om det finns ett fel kan du kolla med supporten för orsaken och upprepa installationen

För företagare: erbjuda din programvara

Om du är en mjukvaruutvecklare som distribueras och används på VPS, då kan vi inkludera dig på marknaden. Så här kan vi hjälpa dig att få nya kunder, trafik och medvetenhet. Skriv till oss

Berätta för oss i kommentarerna vilken bild du saknar?

Och vi kommer att förbereda det själva

Skapa en VPS-mall med Drupal 9 på Centos 8

Skapa en VPS-mall med Drupal 9 på Centos 8

Källa: will.com