In VPS-sjabloan oanmeitsje mei Drupal 9 op Centos 8

Wy bliuwe ús merk útwreidzje. Wy hawwe jo koartlyn ferteld hoe makke in Gitlab-ôfbylding, en dizze wike Drupal ferskynde yn ús merk.

Wy fertelle jo wêrom't wy him keazen hawwe en hoe't it byld makke is.

In VPS-sjabloan oanmeitsje mei Drupal 9 op Centos 8

drupal - in handich en krêftich platfoarm foar it meitsjen fan elk type webside: fan mikrosites en blogs oant grutte sosjale projekten, ek brûkt as basis foar webapplikaasjes, skreaun yn PHP en mei help fan relationele databases as gegevensopslach.

Drupal 9 omfettet alle funksjes yntrodusearre yn ferzje 8.9. It wichtichste ferskil tusken ferzje 9 en ferzje 8 is dat it platfoarm sil trochgean mei it ûntfangen fan updates en befeiligingsfixes nei novimber 2021. Ferzje 9 ferienfâldiget ek it fernijingsproses, wêrtroch it proses fan opwurdearjen fan ferzje 8 noch makliker wurdt.

Tsjinner easken

Om Drupal te brûken, wurdt it oanrikkemandearre om 2 GB RAM en 2 CPU-kearnen te brûken.

De wichtichste Drupal-bestannen nimme sawat 100 MB yn beslach, boppedat sille jo romte nedich hawwe om ôfbyldings, database, tema's, ekstra modules en backups op te slaan, dy't ôfhinklik binne fan 'e grutte fan jo side.

Drupal 9 fereasket PHP 7.4 of heger mei in minimale beheining (memory_limit) foar 64 MB ûnthâld; as ekstra modules wurde brûkt, wurdt it oanrikkemandearre om 128 MB te ynstallearjen.

Drupal kin Apache of Nginx brûke as webserver, en MySQL, PostgreSQL of SQLite as databank.

Wy sille Drupal ynstallearje mei Nginx en MySQL.

ynstelling

Litte wy de ynstalleare pakketten bywurkje nei de lêste ferzje:

sudo dnf update -y

Litte wy permaninte tastimming tafoegje foar ynkommende ferkear oan http/80- en https/443-poarten:

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

Litte wy de nije firewall-regels tapasse:

sudo systemctl reload firewalld

Litte wy Nginx ynstallearje:

sudo dnf install nginx -y

Litte wy de Nginx-tsjinner begjinne en ynskeakelje:

sudo systemctl start nginx
sudo systemctl enable nginx

Sûnt it haad Centos-repository op it stuit PHP 7.2 brûkt, litte wy in REMI-repository tafoegje mei PHP 7.4 (minimum ferzje foar Drupal 9).
Om dit te dwaan, foegje it EPEL-repository ta (fereaske troch it REMI-repository):

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

Litte wy it REMI-repository tafoegje:

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

Litte wy de php:remi-7.4-module ynskeakelje om php 7.4 te ynstallearjen:

sudo dnf module enable php:remi-7.4 -y

Ynstallearje php-fpm en php-cli:

sudo dnf install -y php-fpm php-cli

Litte wy de PHP-modules ynstallearje dy't nedich binne foar Drupal om te wurkjen:

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

Wy sille ek de oanbefellende PHP mbstring opcache-modules ynstallearje:

sudo dnf install -y php-mbstring php-opcache

Litte wy de MySQL-tsjinner ynstallearje:

sudo dnf install mysql-server -y

Litte wy de MySQL-tsjinner ynskeakelje en begjinne:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Om't wy in sjabloan meitsje foar VDS, en se kinne stadich wêze, sille wy in mysqld-startfertraging fan 30 sekonden taheakje, oars kinne d'r problemen wêze mei de server dy't begjint by de earste systeemboot:

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

Litte wy de groep en brûker feroarje wêrunder nginx sil rinne troch wizigingen te meitsjen oan /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

Litte wy de eigner fan 'e PHP-sesje-map feroarje nei nginx dêrmei:

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

Litte wy de rigels mei opmerkingen fan it konfiguraasjetriem /etc/nginx/nginx.conf fuortsmite (sadat d'r gjin dûbele triggers binne foar sed):

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

Foegje gzip-kompresje-ynstellingen ta oan /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

Litte wy de ynstellingen fan it yndeksbestân index.php tafoegje oan /etc/nginx/nginx.conf:

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

Litte wy ynstellings tafoegje foar de standerttsjinner: PHP-ferwurking fia de php-fpm-socket, útskeakelje it log foar statyske bestannen, fergrutsje de ferrintiid, útskeakelje it tagongs- en flaterlog foar favicon.ico en robots.txt, en wegerje tagong ta .ht triemmen foar elkenien:

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

Ynstallearje wget nedich foar it ynstallearjen fan certbot:

sudo dnf install wget -y

Download it útfierbere certbot-bestân fan 'e offsite:

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

Ferpleats certbot nei /usr/local/bin/:

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

En lit ús de rjochten as eigner tawize oan root:

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

Litte wy de certbot-ôfhinklikens ynstallearje en har wurk op dit stadium ûnderbrekke (Antwurden: Y, c):

certbot-auto

Litte wy it argyf downloade mei de lêste ferzje fan Drupal 9 fan 'e offsite:

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

Ynstallearje tar om it argyf út te pakken:

sudo dnf install tar -y

Litte wy de standertbestannen wiskje yn 'e map /usr/share/nginx/html/:

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

Litte wy de bestannen útpakke yn 'e webservermap:

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

Litte wy de bestannen ferpleatse fan 'e submap nei de rootmap fan' e webserver:

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

Litte wy de submap wiskje:

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

Litte wy it argyf mei ynstallaasjebestannen wiskje:

rm -f ./tar.gz

Litte wy de eigner fan 'e nginx-bestannen tawize:

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

Op dit stadium sille wy de tsjinner útsette en in momintopname nimme:

shutdown -h now

Nei it starten fan de VDS fanút de snapshot, sille wy de earste opset fan 'e MySQL-tsjinner útfiere troch it skript út te fieren:

mysql_secure_installation

Litte wy de wachtwurdvalidator ynskeakelje:

Would you like to setup VALIDATE PASSWORD component? : y

Litte wy it wachtwurd ynstelle foar de MySQL root-brûker:

New password:
Re-enter new password:

Litte wy anonime brûkers fuortsmite:

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

Litte wy foarkomme dat root op ôfstân ferbine:

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

Litte wy de testdatabase wiskje:

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

Litte wy de privileezjetabellen opnij laden:

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

Nei dit, om de ynstallaasje te foltôgjen, kinne wy ​​​​gean nei vps_ip_adres
Op dit adres sille wy de Drupal ynstallaasje side sjen.

Litte wy de taal selektearje om te brûken. Bygelyks: Russysk. Klik op "Bewarje en trochgean"

Litte wy in ynstallaasjeprofyl selektearje (de demo wurdt allinich brûkt om josels fertroud te meitsjen mei it systeem). Yn ús gefal, lit it wêze "standert".

Op de folgjende side sille wy in namme jaan oan de databank, bygelyks "drupal". Litte wy de root fan 'e brûkersnamme fan' e database oanjaan en it wachtwurd dat him wurdt jûn by it útfieren fan mysql_secure_installation. Klik op "Bewarje en trochgean."

Litte wy wachtsje oant de ynstallaasje en fernijing fan oersettingen foltôge binne (it proses kin ferskate minuten duorje).

Wy sille de namme fan 'e side oanjaan, de side-e-post ynstelle (út namme fan hokker side-notifikaasjes sille wurde ferstjoerd), oanmelde, wachtwurd en e-post fan it Drupal-behearderakkount. Wy sille ek it lân en de tiidsône ynstelle yn 'e regionale ynstellings. En foltôgje de ynstallaasje troch te klikken op "Bewarje en trochgean".

Hjirnei kinne jo nei it kontrôlepaniel gean mei de oanmakke Drupal administrator login en wachtwurd.

HTTPS ynstelle (opsjoneel)

Om HTTPS te konfigurearjen, moat de VDS in jildige DNS-namme hawwe, spesifisearje yn

/etc/nginx/nginx.conf

yn de tsjinner seksje de tsjinner namme (bygelyks):

server_name  domainname.ru;

Litte wy nginx opnij starte:

service nginx restart

Litte wy certbot starte:

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

Fier jo e-post yn, akkoard mei de tsjinstbetingsten (A), Abonnearje op de nijsbrief (opsjoneel) (N), selektearje de domeinnammen wêrfoar jo in sertifikaat wolle útjaan (Enter foar elkenien).

As alles sûnder flaters gie, sille wy in berjocht sjen oer de suksesfolle útjefte fan sertifikaten en serverkonfiguraasje:

Congratulations! You have successfully enabled ...

Hjirnei wurde ferbinings nei poarte 80 omlaat nei 443 (https).

Taheakje oan /etc/crontab om sertifikaten automatysk te aktualisearjen:

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

Fertroude hostfeiligens ynstelle (oanrikkemandearre)

Dizze ynstelling is bedoeld as in oplossing foar it probleem ferbûn mei dynamyske base_url fêststelling, en is ûntwurpen om foar te kommen HTTP HOST Header oanfallen (as jo side tinkt dat it is immen oars).

Om dit te dwaan, moatte jo fertroude domeinnammen foar de side opjaan yn it ynstellingsbestân.

Yn triem

/usr/share/nginx/html/sites/default/settings.php Litte wy kommentaar jaan of in ynstelling tafoegje mei patroanen fan werklike sidenammen, bygelyks:

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

Ynstallearje PHP APCu (oanbefelle)

Drupal stipet APCu - Alternative PHP User Cache, ferzjes 8 en 9 meitsje mear gebrûk fan APCu as in koarte termyn lokale cache dan eardere ferzjes. De standert cachegrutte (32 MB) is geskikt foar de measte siden, en kin net mear as 512 MB wêze.

Om te aktivearjen, ynstallearje de PHP APCu-module:

dnf -y install php-pecl-apcu

Restart nginx en php-fpm:

service nginx restart
service php-fpm restart

As jo ​​de Russyske taal en APCu brûke mei de oanrikkemandearre ûnthâldgrutte foar de cache, kinne jo in warskôging sjen yn it kontrôlepaniel dat de grutte fan it tawiisde ûnthâld foar de cache oars is as de oanrikkemandearre, mar feitlik wurket alles goed, en de ferkearde warskôging sil nei alle gedachten wurde korrizjearre yn de folgjende updates.

Of as de warskôging jo eagen sear docht, kinne jo brûke oerienkommende patch fan offsite.

Wy wolle jo deroan herinnerje dat jo ek in ôfbylding foar ús meitsje kinne

D'r binne trije opsjes foar hoe't jo meidwaan kinne.

Tariede it byld sels en krije 3000 roebel nei jo lykwicht

As jo ​​​​klear binne om daliks yn 'e slach te rinnen en it byld te meitsjen dat jo misse, sille wy jo 3000 roebel kredytje oan jo ynterne saldo, dat jo kinne besteegje oan servers.

Hoe meitsje jo eigen ôfbylding:

  1. Meitsje in akkount by ús op side
  2. Lit stipe witte dat jo ôfbyldings sille meitsje en testen
  3. Wy sille jo 3000 roebel kredytje en de mooglikheid ynskeakelje om snapshots te meitsjen
  4. Bestel in firtuele tsjinner mei in skjin bestjoeringssysteem
  5. Ynstallearje de software op dizze VPS en konfigurearje it
  6. Skriuw ynstruksjes of skript foar software-ynset
  7. Meitsje in momintopname foar de ynstelde tsjinner
  8. Bestel in nije firtuele tsjinner troch de earder makke momintopname te selektearjen yn 'e dellûklist "Tsjinner sjabloan".
  9. As de tsjinner is makke mei súkses, oerdrage de materialen ûntfongen op poadium 6 nei technyske stipe
  10. As d'r in flater is, kinne jo kontrolearje mei stipe foar de reden en de opset werhelje

Foar bedriuwseigners: biede jo software oan

As jo ​​​​in softwareûntwikkelder binne dy't wurdt ynset en brûkt op VPS, dan kinne wy ​​jo opnimme op 'e merke. Dit is hoe't wy jo kinne helpe om nije klanten, ferkear en bewustwêzen te bringen. Skriuw ús

Fertel ús yn 'e opmerkings hokker ôfbylding jo misse?

En wy sille it sels tariede

In VPS-sjabloan oanmeitsje mei Drupal 9 op Centos 8

In VPS-sjabloan oanmeitsje mei Drupal 9 op Centos 8

Boarne: www.habr.com