Een VPS-sjabloon maken met Drupal 9 op Centos 8

We blijven onze marktplaats uitbreiden. We hebben onlangs gesproken over hoe een Gitlab-image gemaakt, en deze week verscheen Drupal op onze marktplaats.

We vertellen waarom we ervoor hebben gekozen en hoe de afbeelding tot stand is gekomen.

Een VPS-sjabloon maken met Drupal 9 op Centos 8

Drupal is een handig en krachtig platform voor het maken van elk type site: van microsites en blogs tot grote sociale projecten, dat ook wordt gebruikt als basis voor webapplicaties, geschreven in PHP en met behulp van relationele databases als gegevensopslag.

Drupal 9 bevat alle functies die in versie 8.9 zijn geïntroduceerd. Het belangrijkste verschil tussen versie 9 en versie 8 is dat het platform na november 2021 updates en beveiligingsoplossingen blijft ontvangen. Ook in versie 9 is het upgradeproces vereenvoudigd, waardoor het upgradeproces vanaf versie 8 nog eenvoudiger is geworden.

Serververeisten

Om Drupal te gebruiken, wordt aanbevolen om 2 GB RAM en 2 CPU-cores te gebruiken.

De belangrijkste Drupal-bestanden zijn ongeveer 100 MB, daarnaast heb je ruimte nodig om afbeeldingen, database, thema's, add-ons en back-ups op te slaan, afhankelijk van de grootte van je site.

Drupal 9 vereist PHP 7.4 of hoger met een minimale limiet (memory_limit) tot 64 MB geheugen, bij gebruik van extra modules wordt aanbevolen om 128 MB te installeren.

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

We zullen Drupal installeren met behulp van Nginx en MySQL.

installatie

Werk de geïnstalleerde pakketten bij naar de nieuwste versie:

sudo dnf update -y

Laten we een permanente toestemming toevoegen voor inkomend verkeer naar http/80- en https/443-poorten:

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

Pas de nieuwe firewallregels toe:

sudo systemctl reload firewalld

Nginx installeren:

sudo dnf install nginx -y

Laten we beginnen en de Nginx-server inschakelen:

sudo systemctl start nginx
sudo systemctl enable nginx

Aangezien PHP 7.2 momenteel wordt gebruikt in de hoofdrepository van Centos, laten we de REMI-repository toevoegen met PHP 7.4 (de minimale versie voor Drupal 9).
Voeg hiervoor de EPEL-repository toe (vereist door de REMI-repository):

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

Laten we de REMI-repository toevoegen:

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

Activeer de php:remi-7.4 module om php 7.4 te installeren:

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 om Drupal te laten werken:

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

We zullen ook de aanbevolen PHP-modules mbstring opcache installeren:

sudo dnf install -y php-mbstring php-opcache

MySQL-server installeren:

sudo dnf install mysql-server -y

Activeer en start de MySQL-server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

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

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

Laten we de groep en gebruiker wijzigen 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

Wijzig dienovereenkomstig de eigenaar van de PHP-sessiemap in nginx:

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

Laten we de commentaarregels uit het configuratiebestand /etc/nginx/nginx.conf verwijderen (zodat er geen dubbele hits zijn voor sed):

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

Voeg 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

Laten we de instellingen van het index.php indexbestand toevoegen 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

Laten we instellingen toevoegen voor de standaardserver die php verwerkt via de php-fpm-socket, het logboek voor statische bestanden uitschakelen, de vervaltijd verlengen, het toegangs- en foutenlogboek voor favicon.ico en robots.txt uitschakelen en de toegang tot .ht-bestanden weigeren 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

Installeer wget vereist om certbot te installeren:

sudo dnf install wget -y

Download het uitvoerbare bestand van certbot van een andere locatie:

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

Verplaats certbot naar /usr/local/bin/:

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

En wijs rechten en eigendom toe aan root:

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

Installeer de afhankelijkheden van certbot en stop het in dit stadium (Antwoorden: Y, c):

certbot-auto

Download het archief met de nieuwste versie van Drupal 9 van offsite:

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

Installeer tar om het archief uit te pakken:

sudo dnf install tar -y

Verwijder de standaardbestanden in de map /usr/share/nginx/html/:

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

Pak de bestanden uit naar de map van de webserver:

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

Verplaats de bestanden van de subdirectory naar de rootdirectory van de webserver:

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

Submap verwijderen:

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

Verwijder het archief met de installatiebestanden:

rm -f ./tar.gz

Stel de eigenaar van de nginx-bestanden in:

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

In dit stadium zullen we de server uitschakelen en een momentopname maken:

shutdown -h now

Nadat we de VDS vanaf de snapshot hebben gestart, voeren we de initiële installatie van de MySQL-server uit door het script uit te voeren:

mysql_secure_installation

Schakel de wachtwoordvalidator in:

Would you like to setup VALIDATE PASSWORD component? : y

Stel het MySQL-rootgebruikerswachtwoord in:

New password:
Re-enter new password:

Verwijder anonieme gebruikers:

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

Laten we voorkomen dat root op afstand verbinding maakt:

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

Laten we de testdatabase verwijderen:

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

Laad de privilegetabellen opnieuw:

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

Daarna kunnen we naar gaan om de installatie te voltooien vps_ip_adres
Op dit adres zien we een pagina met de installatie van Drupal.

Selecteer de te gebruiken taal. Bijvoorbeeld: Russisch. Klik op "Opslaan en doorgaan"

Laten we een installatieprofiel kiezen (demo wordt alleen gebruikt om vertrouwd te raken met het systeem). Laat het in ons geval "standaard" zijn.

Geef op de volgende pagina de database een naam, bijvoorbeeld "drupal". Specificeer de gebruikersnaam root van de database en het wachtwoord dat hem is gegeven bij het starten van mysql_secure_install. Klik op "Opslaan en doorgaan".

Laten we wachten tot de installatie en update van vertalingen is voltooid (dit proces kan enkele minuten duren).

Geef de naam van de site op, stel de e-mail van de site in (namens welke sitemeldingen zullen komen), login, wachtwoord en e-mail van het Drupal-beheerdersaccount. We zullen ook het land en de tijdzone instellen in de regionale instellingen. En voltooi de installatie door op "Opslaan en doorgaan" te klikken.

Daarna kunt u naar het configuratiescherm gaan met de aangemaakte Drupal administrator login en paswoord.

HTTPS-instelling (optioneel)

Om HTTPS te configureren, moet de VDS een geldige DNS-naam hebben, specificeer in

/etc/nginx/nginx.conf

in het servergedeelte de servernaam (bijvoorbeeld):

server_name  domainname.ru;

Start nginx opnieuw op:

service nginx restart

Laten we certbot starten:

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

Voer uw e-mailadres in, ga akkoord met de servicevoorwaarden (A), Abonneer u op de nieuwsbrief (optioneel) (N), selecteer de domeinnamen waarvoor u een certificaat wilt uitgeven (Enter for all).

Als alles zonder fouten is verlopen, zien we een bericht over de succesvolle uitgifte van certificaten en serverconfiguratie:

Congratulations! You have successfully enabled ...

Daarna worden verbindingen op poort 80 omgeleid naar 443 (https).

Voeg toe aan /etc/crontab om certificaten automatisch te verlengen:

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

Trusted Host Security instellen (aanbevolen)

Deze instelling is bedoeld als oplossing voor het probleem van dynamische base_url-detectie en is bedoeld om HTTP HOST-headeraanvallen te voorkomen (wanneer uw site denkt dat het iemand anders is).

Om dit te doen, moet u de vertrouwde domeinnamen van de site opgeven in het instellingenbestand.

In bestand

/usr/share/nginx/html/sites/default/settings.php verwijder commentaar of voeg een instelling toe met patronen van daadwerkelijke sitenamen, bijvoorbeeld:

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

PHP APCu installeren (AANBEVOLEN)

Drupal ondersteunt APCu - Alternative PHP User Cache, versies 8 en 9 gebruiken APCu intensiever als lokale cache voor de korte termijn dan eerdere versies. De standaardcachegrootte (32 MB) is geschikt voor de meeste sites en mag niet groter zijn dan 512 MB.

Installeer de PHP APCu-module om te activeren:

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 cachegeheugengrootte, kunt u een waarschuwing in het configuratiescherm zien dat de grootte van het toegewezen cachegeheugen verschilt van de aanbevolen, maar in feite werkt alles correct en de onjuiste waarschuwing zal hoogstwaarschijnlijk worden opgelost in de volgende updates.

Of als de waarschuwing pijn doet aan het oog, kunt u gebruiken overeenkomstige patch van een andere locatie.

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

Er zijn drie mogelijkheden om mee te doen.

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

Als je klaar bent om onmiddellijk de strijd aan te gaan en het imago te creëren dat je zelf niet hebt, zullen we je 3000 roebel bijschrijven op je interne saldo - je kunt het uitgeven aan servers.

Hoe u uw afbeelding maakt:

  1. Maak een account bij ons aan Online
  2. Vertel support dat je afbeeldingen gaat maken en testen
  3. We zullen u 3000 roebel crediteren en de mogelijkheid inschakelen om snapshots te maken
  4. Bestel een virtuele server met een schoon besturingssysteem
  5. Installeer de software op deze VPS en stel deze in
  6. Schrijf instructies of script voor software-implementatie
  7. Maak een momentopname voor de geconfigureerde server
  8. Bestel een nieuwe virtuele server door de eerder gemaakte snapshot te selecteren in de vervolgkeuzelijst "Serversjabloon".
  9. Als de server succesvol is gemaakt, draagt ​​u de materialen die u bij stap 6 hebt ontvangen over aan de technische ondersteuning
  10. In het geval van een fout kunt u contact opnemen met de ondersteuning voor de reden en de installatie herhalen

Voor ondernemers: bied uw software aan

Als u een softwareontwikkelaar bent die wordt geïmplementeerd en gebruikt op een VPS, dan kunnen we u opnemen in de marktplaats. Zo kunnen we u helpen nieuwe klanten, verkeer en zichtbaarheid binnen te halen. Schrijf ons

Laat in de reacties weten welk beeld jij mist?

En we zullen het zelf bereiden

Een VPS-sjabloon maken met Drupal 9 op Centos 8

Een VPS-sjabloon maken met Drupal 9 op Centos 8

Bron: www.habr.com