Skep 'n VPS-sjabloon met Drupal 9 op Centos 8

Ons gaan voort om ons mark uit te brei. Ons het onlangs gepraat oor hoe het 'n Gitlab-prent gemaak, en hierdie week het Drupal in ons mark verskyn.

Ons vertel hoekom ons dit gekies het en hoe die beeld geskep is.

Skep 'n VPS-sjabloon met Drupal 9 op Centos 8

Drupal is 'n gerieflike en kragtige platform vir die skep van enige tipe webwerwe: van mikrowebwerwe en blogs tot groot sosiale projekte, wat ook gebruik word as die basis vir webtoepassings, geskryf in PHP en met behulp van relasionele databasisse as databerging.

Drupal 9 bevat al die kenmerke wat in weergawe 8.9 bekendgestel is. Die belangrikste verskil tussen weergawe 9 en weergawe 8 is dat die platform na November 2021 steeds opdaterings en sekuriteitsoplossings sal ontvang. Ook in weergawe 9 is die opgraderingsproses vereenvoudig, wat die opgraderingsproses vanaf weergawe 8 selfs makliker maak.

Bedienervereistes

Om Drupal te gebruik, word dit aanbeveel om 2 GB RAM en 2 SVE-kerne te gebruik.

Die belangrikste Drupal-lêers is ongeveer 100 MB, en u benodig ook spasie om beelde, databasis, temas, byvoegings en rugsteun te stoor, wat afhang van die grootte van u webwerf.

Drupal 9 vereis PHP 7.4 of hoër met 'n minimum limiet (memory_limit) tot 64 MB geheue, in die geval van die gebruik van bykomende modules, word dit aanbeveel om 128 MB te installeer.

Drupal kan Apache of Nginx as 'n webbediener gebruik, en MySQL, PostgreSQL of SQLite as 'n databasis.

Ons sal Drupal installeer met behulp van Nginx en MySQL.

installasie

Dateer die geïnstalleerde pakkette op na die nuutste weergawe:

sudo dnf update -y

Kom ons voeg 'n permanente toestemming vir inkomende verkeer by http/80- en https/443-poorte:

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

Pas die nuwe firewall-reëls toe:

sudo systemctl reload firewalld

Installeer Nginx:

sudo dnf install nginx -y

Kom ons begin en aktiveer die Nginx-bediener:

sudo systemctl start nginx
sudo systemctl enable nginx

Aangesien PHP 7.2 tans in die hoof Centos-bewaarplek gebruik word, kom ons voeg die REMI-bewaarplek by PHP 7.4 (die minimum weergawe vir Drupal 9).
Om dit te doen, voeg die EPEL-bewaarplek by (vereis deur die REMI-bewaarplek):

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

Kom ons voeg die REMI-bewaarplek by:

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

Aktiveer die php:remi-7.4-module om php 7.4 te installeer:

sudo dnf module enable php:remi-7.4 -y

Installeer php-fpm en php-cli:

sudo dnf install -y php-fpm php-cli

Installeer die PHP-modules wat nodig is vir Drupal om te werk:

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

Ons sal ook die aanbevole PHP-modules mbstring opcache installeer:

sudo dnf install -y php-mbstring php-opcache

Installeer MySQL-bediener:

sudo dnf install mysql-server -y

Aktiveer en begin die MySQL-bediener:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Aangesien ons 'n sjabloon vir VDS maak, en hulle kan stadig wees, sal ons 'n mysqld-beginvertraging van 30 sekondes byvoeg, anders kan daar probleme wees om die bediener te begin tydens die aanvanklike stelsellaai:

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

Kom ons verander die groep en gebruiker waaronder nginx sal loop deur veranderinge aan te bring aan /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

Verander die eienaar van die PHP-sessiegids na nginx dienooreenkomstig:

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

Kom ons verwyder die kommentaarlyne van die /etc/nginx/nginx.conf konfigurasielêer (sodat daar geen dubbeltreffers vir sed is nie):

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

Voeg gzip-kompressie-instellings by /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

Kom ons voeg die instellings van die index.php-indekslêer by /etc/nginx/nginx.conf:

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

Kom ons voeg instellings by vir die verstek bediener wat php verwerk deur die php-fpm-sok, deaktiveer die log vir statiese lêers, verhoog die vervaltyd, deaktiveer die toegang en foutlog vir favicon.ico en robots.txt en weier toegang tot .ht-lêers vir almal:

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

Installeer wget nodig om certbot te installeer:

sudo dnf install wget -y

Laai die certbot-uitvoerbare lêer af vanaf die terrein:

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

Skuif certbot na /usr/local/bin/:

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

En ken regte en eienaarskap toe aan root:

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

Installeer die afhanklikhede van certbot en stop dit op hierdie stadium (Antwoorde: Y, c):

certbot-auto

Laai die argief af met die nuutste weergawe van Drupal 9 van buite af:

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

Installeer teer om die argief uit te pak:

sudo dnf install tar -y

Vee die versteklêers in die /usr/share/nginx/html/-gids uit:

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

Pak die lêers uit na die webbedienergids:

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

Skuif die lêers van die subgids na die wortelgids van die webbediener:

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

Vee subgids uit:

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

Vee die argief uit met die installasielêers:

rm -f ./tar.gz

Stel die eienaar van die nginx-lêers:

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

Op hierdie stadium sal ons die bediener afskakel en 'n momentopname neem:

shutdown -h now

Nadat ons die VDS vanaf die momentopname begin het, sal ons die aanvanklike opstelling van die MySQL-bediener uitvoer deur die skrip uit te voer:

mysql_secure_installation

Aktiveer die wagwoord valideerder:

Would you like to setup VALIDATE PASSWORD component? : y

Stel die MySQL wortel gebruiker wagwoord:

New password:
Re-enter new password:

Verwyder anonieme gebruikers:

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

Kom ons verhoed dat root op afstand koppel:

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

Kom ons verwyder die toetsdatabasis:

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

Herlaai die voorregtetabelle:

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

Daarna, om die installasie te voltooi, kan ons gaan na vps_ip_adres
By hierdie adres sal ons 'n bladsy sien met die installering van Drupal.

Kies die taal wat gebruik moet word. Byvoorbeeld: Russies. Klik "Stoor en gaan voort"

Kom ons kies 'n installasieprofiel (demo word slegs gebruik om vertroud te raak met die stelsel). Laat dit in ons geval "standaard" wees.

Op die volgende bladsy, gee die databasis 'n naam, soos "drupal". Spesifiseer die databasisgebruikersnaamwortel en die wagwoord wat aan hom gegee is wanneer mysql_secure_installation begin. Klik op "Stoor en gaan voort".

Kom ons wag vir die installering en opdatering van vertalings om te voltooi (die proses kan 'n paar minute neem).

Spesifiseer die naam van die werf, stel die e-posadres van die werf in (namens wie werfkennisgewings sal kom), login, wagwoord en e-pos van die Drupal-administrateurrekening. Ons sal ook die land en tydsone in die streekinstellings stel. En voltooi die installasie deur op "Stoor en gaan voort" te klik.

Daarna kan u na die kontrolepaneel gaan met die geskepde Drupal-administrateuraanmelding en wagwoord.

HTTPS-instelling (opsioneel)

Om HTTPS op te stel, moet die VDS 'n geldige DNS-naam hê, spesifiseer in

/etc/nginx/nginx.conf

in die bedienerafdeling die bedienernaam (byvoorbeeld):

server_name  domainname.ru;

Herbegin nginx:

service nginx restart

Kom ons begin certbot:

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

Voer jou e-pos in, stem in tot die diensbepalings (A), Teken in op die nuusbrief (opsioneel) (N), kies die domeinname waarvoor jy 'n sertifikaat wil uitreik (Voer vir almal in).

As alles sonder foute verloop het, sal ons 'n boodskap sien oor die suksesvolle uitreiking van sertifikate en bedieneropstelling:

Congratulations! You have successfully enabled ...

Daarna sal verbindings op poort 80 na 443 (https) herlei word.

Voeg by /etc/crontab om sertifikate outomaties te hernu:

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

Die opstel van Trusted Host Security (aanbeveel)

Hierdie instelling is bedoel as 'n oplossing vir die probleem van dinamiese base_url opsporing, en is bedoel om HTTP HOST Header aanvalle te voorkom (wanneer jou webwerf dink dit is iemand anders).

Om dit te doen, moet u die vertroude domeinname van die webwerf in die instellingslêer spesifiseer.

In lêer

/usr/share/nginx/html/sites/default/settings.php maak kommentaar of voeg 'n instelling by met patrone van werklike werfname, byvoorbeeld:

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

Installeer PHP APCu (AANBEVEEL)

Drupal ondersteun APCu - Alternatiewe PHP User Cache, weergawes 8 en 9 gebruik APCu meer intensief as 'n korttermyn plaaslike kas as vorige weergawes. Die verstekkasgrootte (32 MB) is geskik vir die meeste werwe en kan nie 512 MB oorskry nie.

Om te aktiveer, installeer die PHP APCu-module:

dnf -y install php-pecl-apcu

Herbegin nginx en php-fpm:

service nginx restart
service php-fpm restart

In die geval van die gebruik van die Russiese taal en APCu met die aanbevole kasgeheue-grootte, kan u 'n waarskuwing in die beheerpaneel sien dat die grootte van die toegekende kasgeheue verskil van die aanbevole een, maar in werklikheid werk alles korrek, en die verkeerde waarskuwing sal heel waarskynlik in die volgende opdaterings reggestel word.

Of as die waarskuwing die oog seermaak, kan jy dit gebruik ooreenstemmende pleister vanaf offsite.

Ons wil jou herinner dat jy ook vir ons 'n prent kan maak

Daar is drie opsies vir hoe om deel te neem.

Berei self die beeld voor en kry 3000 roebels op jou balans

As jy gereed is om dadelik in die geveg te jaag en die beeld te skep wat jy self ontbreek, sal ons jou krediet gee met 3000 XNUMX roebels tot jou interne balans - jy kan dit op bedieners spandeer.

Hoe om jou beeld te skep:

  1. Skep 'n rekening by ons Online
  2. Sê vir ondersteuning dat jy beelde gaan skep en toets
  3. Ons sal u 3000 roebels krediet gee en die vermoë moontlik maak om momentopnames te skep
  4. Bestel 'n virtuele bediener met 'n skoon bedryfstelsel
  5. Installeer die sagteware op hierdie VPS en stel dit op
  6. Skryf instruksies of skrip vir sagteware-ontplooiing
  7. Skep 'n momentopname vir die gekonfigureerde bediener
  8. Bestel 'n nuwe virtuele bediener deur die voorheen geskepde momentopname in die "Server template" aftreklys te kies
  9. In die geval van suksesvolle skepping van die bediener, dra die materiaal wat by stap 6 ontvang is oor na tegniese ondersteuning
  10. In die geval van 'n fout, kan u die rede by ondersteuning raadpleeg en die opstelling herhaal

Vir sake-eienaars: bied jou sagteware aan

As jy 'n sagteware-ontwikkelaar is wat op 'n VPS ontplooi en gebruik word, dan kan ons jou by die mark insluit. Dit is hoe ons jou kan help om nuwe kliënte, verkeer en sigbaarheid in te bring. Skryf vir ons

Laat weet ons in die kommentaar watter beeld mis jy?

En ons sal dit self voorberei

Skep 'n VPS-sjabloon met Drupal 9 op Centos 8

Skep 'n VPS-sjabloon met Drupal 9 op Centos 8

Bron: will.com