Skapa en VPS-mall med Drupal 9 pÄ CentOS 8

Vi fortsÀtter att utöka vÄr marknadsplats. Nyligen berÀttade vi hur vi skapade en bild av Gitlab, och denna vecka har vÄr marknadsplats fÄtt Drupal.

Vi berÀttar varför vi valde just det och hur bilden skapades.

Skapa en VPS-mall med Drupal 9 pÄ CentOS 8

Drupal — en anvĂ€ndarvĂ€nlig och kraftfull plattform för att skapa alla typer av webbplatser: frĂ„n mikrosajter och bloggar till stora sociala projekt, som Ă€ven anvĂ€nds som grund för webbapplikationer, skriven i PHP och anvĂ€nder relationsdatabaser som datalagring.

Drupal 9 inkluderar alla funktioner som implementerades i version 8.9. Den viktigaste skillnaden mellan version 9 och version 8 Àr att plattformen kommer att fÄ uppdateringar och sÀkerhetsfixar Àven efter november 2021. Dessutom har uppdateringsprocessen förenklats i version 9, vilket gör uppdateringen frÄn version 8 Ànnu enklare.

Serverkrav

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

De grundlÀggande filerna för Drupal tar upp cirka 100 MB, och du kommer ocksÄ att behöva utrymme för lagring av bilder, databaser, teman, ytterligare moduler och sÀkerhetskopior, vilket kommer att bero pÄ storleken pÄ din webbplats.

För Drupal 9 krÀvs PHP 7.4 eller högre med ett minimalt grÀns (memory_limit) pÄ 64 MB, och om du anvÀnder ytterligare moduler rekommenderas att stÀlla in 128 MB.

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

Vi kommer att installera Drupal med hjÀlp av Nginx och MySQL.

Installation

Vi uppdaterar de installerade paketen till den senaste versionen:

sudo dnf update -y

Vi lÀgger till permanent tillÄtelse för inkommande trafik pÄ http/80 och https/443 portar:

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

Vi tillÀmpar de nya brandvÀggsreglerna:

sudo systemctl reload firewalld

Vi installerar Nginx:

sudo dnf install nginx -y

Vi startar och aktiverar Nginx-servern:

sudo systemctl start nginx
sudo systemctl enable nginx

Eftersom den nuvarande huvudförrÄdet för Centos anvÀnder PHP 7.2, lÀgger vi till REMI-förrÄdet med PHP 7.4 (minimiversion för Drupal 9).
För detta lÀgger vi till EPEL-förrÄdet (krÀvs av REMI-förrÄdet):

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

Vi lÀgger till REMI-förrÄdet:

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

Vi aktiverar modulen php:remi-7.4 för att installera php 7.4:

sudo dnf module enable php:remi-7.4 -y

Vi installerar php-fpm och php-cli:

sudo dnf install -y php-fpm php-cli

Vi installerar de PHP-moduler som krÀvs för att Drupals 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 installerar Àven de rekommenderade PHP-modulerna mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Vi installerar MySQL-servern:

sudo dnf install mysql-server -y

Vi aktiverar och startar 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, lÀgger vi till en fördröjning pÄ 30 sekunder för mysqld sÄ att det inte blir problem med serverstarten vid systemets första uppstart:

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

Vi Àndrar gruppen och anvÀndaren som nginx kommer att arbeta som 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

Vi Àndrar ÀganderÀtten för PHP:s sessionskatalog till nginx:

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

Vi tar bort kommentarerna frÄn konfigurationsfilen /etc/nginx/nginx.conf (för att undvika dubbla aktiveringar för sed):

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

Vi lÀgger till gzip-komprimeringsinstÀllningar i /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

Vi lÀgger till indexfilens instÀllningar för index.php i /etc/nginx/nginx.conf:

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

Vi lÀgger till instÀllningar för standardservern för att bearbeta php via socket php-fpm, stÀnger av loggning för statiska filer, ökar utgÄngstiden, stÀnger av loggning av tillgÄngar och fel för favicon.ico och robots.txt, och nekar Ä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

Vi installerar wget som krÀvs för att installera certbot:

sudo dnf install wget -y

Vi laddar ner certbot-körfilen frÄn den officiella sidan:

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

Vi flyttar certbot till /usr/local/bin/:

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

Och sÀtter rÀttigheterna och Àgaren till root:

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

Vi installerar certbot-beroenden och pausar dess körning (Svaren: Y, c):

certbot-auto

Vi laddar ner en arkivfil med den senaste versionen av Drupal 9 frÄn den officiella sidan:

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

Vi installerar tar för att packa upp arkivet:

sudo dnf install tar -y

Vi tar bort standardfilerna i katalogen /usr/share/nginx/html/:

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

Vi packar upp filerna till webbserverns katalog:

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

Vi flyttar filerna frÄn underkatalogen till webbserverns rotkatalog:

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

Vi tar bort underkatalogen:

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

Vi tar bort arkivet med installationsfilerna:

rm -f ./tar.gz

Vi sÀtter Àgaren av filerna till nginx:

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

I detta steg stÀnger vi ner servern och gör en snapshot:

shutdown -h now

Efter att VDS har startats frÄn snapshotet utför vi den första konfigurationen av MySQL-servern genom att köra skriptet:

mysql_secure_installation

Vi aktiverar lösenordsvalideraren:

Would you like to setup VALIDATE PASSWORD component? : y

Vi stÀller in root-anvÀndarens lösenord för MySQL:

New password:
Re-enter new password:

Vi tar bort anonyma anvÀndare:

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

Vi förhindrar att root loggar in pÄ distans:

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

Vi tar bort testdatabasen:

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

Vi laddar om privilegietabellerna:

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

Efter det kan vi, för att avsluta installationen, besöka adressen vps_ip_address
PÄ denna adress kommer vi se installationssidan för Drupal.

Vi vÀljer det sprÄk som ska anvÀndas. Till exempel: ryska. Vi klickar pÄ "Spara och fortsÀtt"

Vi vÀljer installationsprofilen (demoversionen anvÀnds endast för att bekanta sig med systemet). I vÄrt fall vÀljer vi "standard".

PÄ nÀsta sida anger vi databasens namn, till exempel "drupal". Vi anger databasanvÀndarnamnet root och det lösenord vi angav under mysql_secure_installation. Vi klickar pÄ "Spara och fortsÀtt".

Vi vÀntar pÄ att installationen ska avslutas och översÀttningarna ska uppdateras (processen kan ta nÄgra minuter).

Ange webbplatsens namn, ange webbplatsens e-postadress (frÄn vilken webbplatsens meddelanden kommer att skickas), anvÀndarnamn, lösenord och e-postadress för Drupal-administratörskontot. Ange ocksÄ land och tidszon i de regionala instÀllningarna. Avsluta installationen genom att trycka pÄ "Spara och fortsÀtt".

DÀrefter kan du gÄ till kontrollpanelen med det skapade anvÀndarnamnet och lösenordet för Drupal-administratören.

InstÀllning av HTTPS (valfritt)

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

/etc/nginx/nginx.conf

i serveravsnittet servernamnet (t.ex.):

server_name  domainname.ru;

Vi startar om nginx:

service nginx restart

Vi kör certbot:

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

Ange din e-postadress, godkÀnn tjÀnstevillkoren (A), prenumeration pÄ nyhetsbrev (valfritt) (N), vÀlj domÀnnamn för vilka certifikatet ska utfÀrdas (tryck Enter för alla).

Om allt gick utan fel, kommer vi att se ett meddelande om att certifikaten och servern har konfigurerats framgÄngsrikt:

Grattis! Du har framgÄngsrikt aktiverat ...

Efter denna anslutning kommer port 80 att omdirigeras till 443 (https).

LÀgg till i /etc/crontab för automatisk uppdatering av certifikat:

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

InstÀllning av Trusted Host Security (rekommenderas)

Denna instÀllning Àr en lösning pÄ problemet med dynamisk bestÀmning av base_url, och syftar till att förhindra HTTP HOST Header-attacker (nÀr din webbplats tror att den Àr nÄgon annan).

För detta behöver du ange betrodda domÀnnamn för webbplatsen i konfigurationsfilen.

I filen

/usr/share/nginx/html/sites/default/settings.php avkommentera eller lÀgg till instÀllningen med mönstren för aktuella domÀnnamn, till exempel:

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

Installation av PHP APCu (REKOMMENDERAS)

Drupal stöder APCu — Alternative PHP User Cache, versioner 8 och 9 anvĂ€nder APCu som kortvarigt cache mer intensivt Ă€n tidigare versioner. Standardcachens storlek (32 MB) Ă€r tillrĂ€cklig för de flesta webbplatser och fĂ„r inte överstiga 512 MB.

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

dnf -y install php-pecl-apcu

Vi startar om nginx och php-fpm:

service nginx restart
service php-fpm restart

Vid anvÀndning av ryska sprÄket och APCu med den rekommenderade storleken för minnescache, kan du i kontrollpanelen se en varning om att den tilldelade cache-minnesstorleken avviker frÄn den rekommenderade, men egentligen fungerar allt korrekt, och den felaktiga varningen kommer troligen att rÀttas till i kommande uppdateringar.

Eller om varningen stör, kan du anvÀnda motsvarande patch frÄn off-site.

Vi vill pÄminna dig om att du ocksÄ kan göra en bild för oss

Det finns tre sÀtt att delta.

Skapa bilden sjÀlv och fÄ 3000 kronor pÄ ditt konto

Om du Ă€r redo att kasta dig in i striden och skapa den bild du saknar, kommer vi att sĂ€tta in 3000 kronor pĂ„ ditt interna balanskonto – som du kan anvĂ€nda för servrar.

Hur man skapar sin egen bild:

  1. Skapa ett konto hos oss pÄ webbplats
  2. Informera supporten om att du tÀnker skapa och testa bilder
  3. Vi sÀtter in 3000 kronor och aktiverar möjligheten att skapa snapshots
  4. BestÀll en virtuell server med ett rent operativsystem
  5. Installera programvaran pÄ denna VPS och konfigurera den
  6. Skriv en instruktion eller ett script för att distribuera programvaran
  7. Skapa en snapshot för den konfigurerade servern
  8. BestÀll en ny virtuell server genom att vÀlja den tidigare skapade snapshoten i rullgardinsmenyn "Servermall"
  9. Vid framgÄngsrik skapelse av servern, överlÀmna materialen som erhölls i steg 6 till teknisk support
  10. Vid fel kan du frÄga supporten om orsaken och upprepa konfigurationen

För företagare: erbjud din programvara

Om du Àr mjukvaruutvecklare som distribuerar och anvÀnder programvara pÄ VPS, kan vi inkludera dig i marknadsplatsen. PÄ sÄ sÀtt kan vi hjÀlpa dig att fÄ nya kunder, trafik och kÀnnedom. Kontakta oss

BerÀtta i kommentarerna vilken bild du saknar?

SÄ ordnar vi den sjÀlva

Skapa en VPS-mall med Drupal 9 pÄ CentOS 8

Skapa en VPS-mall med Drupal 9 pÄ CentOS 8

KĂ€lla: habr.com

Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar đŸ”„ Köp pĂ„litlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster