Het creƫren van een VPS-sjabloon met Drupal 9 op Centos 8

We blijven onze marktplaats uitbreiden. Onlangs vertelden we hoe we een Gitlab-image hebben gemaakt, en deze week is Drupal aan onze marktplaats toegevoegd.

Hier volgt waarom we juist voor hem hebben gekozen en hoe het image tot stand is gekomen.

Het creƫren van een VPS-sjabloon met Drupal 9 op Centos 8

Drupal — een gebruiksvriendelijk en krachtig platform voor het creĆ«ren van alle soorten websites: van micro-sites en blogs tot grote sociale projecten, dat ook dient als basis voor webapplicaties, geschreven in PHP en gebruikmakend van relationele databases voor gegevensopslag.

Drupal 9 omvat alle functies die in versie 8.9 zijn gerealiseerd. Het belangrijkste verschil tussen versie 9 en versie 8 is dat er ook na november 2021 updates en beveiligingspatches voor het platform zullen worden uitgebracht. Ook is het upgraden naar versie 9 eenvoudiger gemaakt, waardoor het proces van upgraden van versie 8 nog eenvoudiger is.

Serververeisten

Voor het gebruik van Drupal wordt aangeraden om 2 GB RAM en 2 CPU-kernen te hebben.

De belangrijkste bestanden van Drupal nemen ongeveer 100 MB in beslag, daarnaast heeft u opslagruimte nodig voor afbeeldingen, databases, thema's, extra modules en back-ups, wat afhankelijk is van de grootte van uw site.

Voor Drupal 9 is PHP 7.4 of hoger vereist met een minimale geheugenlimiet (memory_limit) van 64 MB; bij gebruik van extra modules wordt aanbevolen om 128 MB in te stellen.

Als webserver kan Drupal Apache of Nginx gebruiken, en als database MySQL, PostgreSQL of SQLite.

We zullen Drupal installeren met gebruik van Nginx en MySQL.

Installatie

Laten we de geĆÆnstalleerde pakketten upgraden naar de laatste versie:

sudo dnf update -y

Laten we permanente regels toevoegen voor binnenkomend verkeer op de poorten http/80 en https/443:

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

Toepassen van de nieuwe firewallregels:

sudo systemctl reload firewalld

Laten we Nginx installeren:

sudo dnf install nginx -y

Start en activeer de Nginx-server:

sudo systemctl start nginx
sudo systemctl enable nginx

Aangezien momenteel in de hoofdrepository van CentOS versie PHP 7.2 wordt gebruikt, voegen we de REMI-repository toe met PHP 7.4 (de minimale versie voor Drupal 9).
Om dit te doen, voegen we de EPEL-repository toe (vereist door de REMI-repository):

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

Voeg de REMI-repository toe:

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

Schakel de module php:remi-7.4 in voor de installatie van php 7.4:

sudo dnf module enable php:remi-7.4 -y

Installeer php-fpm en php-cli:

sudo dnf install -y php-fpm php-cli

Installeer de PHP-modules die nodig zijn voor het functioneren van 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

Laten we ook de aanbevolen PHP-modules mbstring en opcache installeren:

sudo dnf install -y php-mbstring php-opcache

Laten we de MySQL-server installeren:

sudo dnf install mysql-server -y

Laten we de MySQL-server inschakelen en starten:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Aangezien we een sjabloon voor VDS maken, en deze traag kunnen zijn, voegen we een startvertraging van 30 seconden voor mysqld toe; anders kunnen er problemen optreden bij het opstarten van de server tijdens de eerste opstart van het systeem:

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

We wijzigen de groep en gebruiker waaronder nginx zal draaien door wijzigingen aan te brengen in /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

We wijzigen ook de eigenaar van de sessiemap van PHP naar nginx:

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

We verwijderen de regels met opmerkingen uit het configuratiebestand /etc/nginx/nginx.conf (om dubbele uitvoeringen voor sed te voorkomen):

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

We voegen gzip-compressie-instellingen toe aan /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

We voegen de instellingen voor het indexbestand index.php toe aan /etc/nginx/nginx.conf:

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

We voegen instellingen voor de standaardserver toe, waarbij PHP via de php-fpm socket wordt verwerkt. We schakelen de log voor statische bestanden uit, verhogen de vervaltijd, schakelen de toegang- en foutlog voor favicon.ico en robots.txt uit en verbieden de toegang tot .ht-bestanden voor iedereen:

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

Laten we wget installeren, wat nodig is voor het installeren van certbot:

sudo dnf install wget -y

We downloaden het uitvoerbare bestand certbot van de officiƫle site:

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

We verplaatsen certbot naar /usr/local/bin/:

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

En we stellen de rechten en eigenaar in op root:

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

We installeren de dependencies voor certbot en onderbreken het op dit punt (Antwoorden: Y, c):

certbot-auto

We downloaden het archief met de laatste versie van Drupal 9 van de officiƫle site:

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

We installeren tar om het archief uit te pakken:

sudo dnf install tar -y

We verwijderen de standaardbestanden in de map /usr/share/nginx/html/:

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

We pakken de bestanden uit in de map van de webserver:

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

We verplaatsen de bestanden uit de submap naar de hoofdmap van de webserver:

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

We verwijderen de submap:

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

We verwijderen het archief met installatiefiles:

rm -f ./tar.gz

We stellen de eigenaar van de bestanden in op nginx:

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

Op dit punt schakelen we de server uit en maken we een snapshot:

shutdown -h now

Na het opstarten van de VDS vanuit de snapshot voeren we de initiƫle configuratie van de MySQL-server uit door het script te starten:

mysql_secure_installation

We schakelen de wachtwoordvalidator in:

Would you like to setup VALIDATE PASSWORD component? : y

Stel een wachtwoord in voor de MySQL-gebruiker root:

New password:
Re-enter new password:

We verwijderen anonieme gebruikers:

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

We beperken root-login op afstand:

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

We verwijderen de testdatabase:

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

We herladen de privilege-tabellen:

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

Daarna, om de installatie te voltooien, kunnen we naar het adres gaan vps_ip_address
Op dit adres zien we de installatiepagina van Drupal.

Kies de gewenste taal. Bijvoorbeeld: Nederlands. Klik op 'Opslaan en doorgaan'

Kies het installatieprofiel (demo wordt uitsluitend gebruikt voor kennismaking met het systeem). In ons geval kiezen we 'standaard'.

Op de volgende pagina geven we een naam op voor de database, bijvoorbeeld 'drupal'. We geven de gebruikersnaam van de database root op en het wachtwoord dat we hebben ingesteld bij het uitvoeren van mysql_secure_installation. Klik op 'Opslaan en doorgaan'.

We wachten tot de installatie is voltooid en de vertalingen zijn bijgewerkt (dit kan enkele minuten duren).

Laten we de naam van de website opgeven, het e-mailadres van de website (waarmee de meldingen van de website worden verzonden), de gebruikersnaam, het wachtwoord en het e-mailadres van het Drupal-beheerdersaccount instellen. We geven ook het land en de tijdzone op in de regionale instellingen. We ronden de installatie af door op "Opslaan en doorgaan" te klikken.

Daarna kunnen we inloggen op het bedieningspaneel met de gemaakte gebruikersnaam en het wachtwoord van de Drupal-beheerder.

HTTPS-configuratie (optioneel)

Voor de configuratie van HTTPS moet de VDS een geldige DNS-naam hebben; geef deze op in

/etc/nginx/nginx.conf

de sectie servernaam (bijvoorbeeld):

server_name  domainname.nl;

Herstart nginx:

service nginx restart

Start certbot:

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

Voer je e-mailadres in, ga akkoord met de voorwaarden van de service (A), abonnement op de nieuwsbrief (optioneel) (N), kies de domeinnamen waarvoor het certificaat moet worden uitgegeven (Enter voor alle).

Als alles zonder fouten is verlopen, zien we een bericht over het succesvol uitgeven van certificaten en het instellen van de server:

Gefeliciteerd! Je hebt ... succesvol ingeschakeld.

Na deze verbinding worden poorten 80 doorgestuurd naar 443 (https).

Voeg het toe aan /etc/crontab voor automatische updates van certificaten:

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

Configuratie van Trusted Host Security (aanbevolen)

Deze configuratie is bedoeld als oplossing voor het probleem van de dynamische bepaling van base_url en is bedoeld om HTTP HOST Header-aanvallen te voorkomen (wanneer je website denkt dat hij iemand anders is).

Hiervoor moet je de vertrouwde domeinnamen van de site in het configuratiebestand opgeven.

In het bestand

/usr/share/nginx/html/sites/default/settings.php de commentaarverwijdering of toevoeging van de configuratie met patronen van actuele namen van de site, bijvoorbeeld:

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

Installatie van PHP APCu (AANBEVOLEN)

Drupal ondersteunt APCu — Alternative PHP User Cache, versies 8 en 9 gebruiken APCu intensiever als kortetermijncache dan eerdere versies. De standaard cachegrootte (32 MB) is geschikt voor de meeste websites en mag niet groter zijn dan 512 MB.

Om het te activeren, installeren we de PHP APCu-module:

dnf -y install php-pecl-apcu

Herstart nginx en php-fpm:

service nginx restart
service php-fpm restart

In het geval van het gebruik van de Russische taal en APCu met de aanbevolen geheugengrootte voor de cache, kun je in het bedieningspaneel een waarschuwing zien dat de toegewezen geheugengrootte voor de cache verschilt van de aanbevolen, maar feitelijk werkt alles correct, en de incorrecte waarschuwing zal waarschijnlijk in de nabije updates worden opgelost.

Of als de waarschuwing hinderlijk is, kan je gebruik maken van de juiste patch van de externe site.

We willen u herinneren dat u ook een afbeelding voor ons kunt maken

Er zijn drie manieren om deel te nemen.

Bereid zelf de afbeelding voor en ontvang 3000 roebels op uw saldo

Als u meteen aan de slag wilt gaan en zelf de afbeelding wilt maken die u mist, zullen we u 3000 roebels op uw interne saldo bijschrijven – dit kunt u besteden aan servers.

Hoe uw eigen afbeelding te maken:

  1. Maak een account bij ons op website
  2. Informeer de support dat u van plan bent om afbeeldingen te maken en te testen
  3. We bijschrijven 3000 roebels en schakelen de mogelijkheid in om snapshots te maken
  4. Bestel een virtuele server met een schone besturingssysteem
  5. Installeer de software op deze VPS en configureer deze
  6. Stel een handleiding of script op voor het implementeren van de software
  7. Maak een snapshot voor de geconfigureerde server
  8. Bestel een nieuwe virtuele server, waarbij u in de keuzelijst 'Server Template' de eerder gemaakte snapshot kiest
  9. In het geval van succesvolle servercreatie, stuur de materialen verkregen in fase 6 naar de technische ondersteuning
  10. In geval van een fout kunt u bij de support navragen wat de oorzaak is en de configuratie opnieuw uitvoeren

Voor bedrijfseigenaren: bied uw software aan

Als u een softwareontwikkelaar bent die op VPS's werkt en deze gebruikt, kunnen we u opnemen in de marktplaats. Zo kunnen we u helpen nieuwe klanten, verkeer en naamsbekendheid te genereren. Neem contact met ons op

Vertel in de reacties welke afbeelding u mist?

En wij bereiden deze zelf voor

Het creƫren van een VPS-sjabloon met Drupal 9 op Centos 8

Het creƫren van een VPS-sjabloon met Drupal 9 op Centos 8

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers šŸ”„ Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster