Erstellung einer VPS-Vorlage mit Drupal 9 auf CentOS 8

Wir erweitern weiterhin unseren Marktplatz. Kürzlich haben wir erzählt, wie wir ein Gitlab-Image erstellt haben,und diese Woche ist Drupal auf unserem Marktplatz verfügbar.

Hier erklären wir, warum wir uns für es entschieden haben und wie das Image entstanden ist.

Erstellung einer VPS-Vorlage mit Drupal 9 auf CentOS 8

Drupal – eine benutzerfreundliche und leistungsstarke Plattform zur Erstellung aller Arten von Websites: von Microsites und Blogs bis hin zu großen sozialen Projekten, die auch als Grundlage für Webanwendungen dient, geschrieben in PHP und als Datenspeicher relationale Datenbanken verwendet.

Drupal 9 umfasst alle Funktionen, die in Version 8.9 implementiert wurden. Der Hauptunterschied zwischen Version 9 und Version 8 besteht darin, dass nach November 2021 weiterhin Sicherheitsupdates und -korrekturen für die Plattform veröffentlicht werden. Außerdem wurde der Aktualisierungsprozess in Version 9 vereinfacht, sodass das Upgrade von Version 8 noch einfacher wird.

Serveranforderungen

Für die Nutzung von Drupal wird empfohlen, 2 GB RAM und 2 CPU-Kerne zu verwenden.

Die Basisdateien von Drupal benötigen etwa 100 MB, zusätzlich benötigen Sie Speicherplatz für Bilder, Datenbanken, Themen, zusätzliche Module und Sicherungen, der von der Größe Ihrer Website abhängt.

Für Drupal 9 wird PHP 7.4 oder höher mit einem minimalen Limit vonmemory_limit) für den Arbeitsspeicher von 64 MB benötigt; bei Verwendung zusätzlicher Module wird empfohlen, 128 MB einzustellen.

Als Webserver kann Drupal entweder Apache oder Nginx verwenden, und als Datenbank MySQL, PostgreSQL oder SQLite.

Wir werden Drupal mit Nginx und MySQL installieren.

Installation von

Aktualisieren wir die installierten Pakete auf die neueste Version:

sudo dnf update -y

Fügen wir eine dauerhafte Regel für eingehenden Traffic auf den Ports http/80 und https/443 hinzu:

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

Wenden wir die neuen Firewall-Regeln an:

sudo systemctl reload firewalld

Installieren wir Nginx:

sudo dnf install nginx -y

Starten und aktivieren wir den Nginx-Server:

sudo systemctl start nginx
sudo systemctl enable nginx

Da derzeit in den Hauptrepositorys von CentOS die PHP-Version 7.2 verwendet wird, fügen wir das REMI-Repository mit PHP 7.4 hinzu (minimale Version für Drupal 9).
Dazu fügen wir das EPEL-Repository hinzu (wird vom REMI-Repository benötigt):

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

Fügen wir das REMI-Repository hinzu:

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

Aktivieren wir das Modul php:remi-7.4 zur Installation von PHP 7.4:

sudo dnf module enable php:remi-7.4 -y

Installieren wir php-fpm und php-cli:

sudo dnf install -y php-fpm php-cli

Wir installieren die erforderlichen PHP-Module für den Betrieb von 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

Außerdem installieren wir die empfohlenen PHP-Module mbstring und opcache:

sudo dnf install -y php-mbstring php-opcache

Wir installieren den MySQL-Server:

sudo dnf install mysql-server -y

Wir aktivieren und starten den MySQL-Server:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Da wir eine Vorlage für VDS erstellen und diese möglicherweise langsam sein können, fügen wir eine Startverzögerung von 30 Sekunden für mysqld hinzu, um Probleme beim Start des Servers beim ersten Hochfahren des Systems zu vermeiden:

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

Wir ändern die Gruppe und den Benutzer, unter dem nginx arbeiten wird, indem wir Änderungen in /etc/php-fpm.d/www.conf vornehmen:

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

Wir ändern auch den Besitzer des PHP-Sessionsverzeichnisses entsprechend auf nginx:

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

Wir entfernen die Kommentarzeichen aus der Konfigurationsdatei /etc/nginx/nginx.conf (um doppelte Auslösungen für sed zu vermeiden):

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

Wir fügen die Gzip-Kompressionseinstellungen in /etc/nginx/nginx.conf hinzu.

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

Fügen wir die Einstellungen für die Indexdatei index.php in /etc/nginx/nginx.conf hinzu:

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

Wir fügen Einstellungen für den Standardserver hinzu, um PHP über den Socket php-fpm zu verarbeiten, deaktivieren die Protokollierung für statische Dateien, erhöhen die Ablaufzeit, deaktivieren die Zugriff- und Fehlerprotokollierung für favicon.ico und robots.txt und verbieten den Zugriff auf .ht-Dateien für alle:

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

Wir installieren wget, das für die Installation von certbot benötigt wird:

sudo dnf install wget -y

Wir laden die ausführbare Datei certbot von der offiziellen Webseite herunter:

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

Wir verschieben certbot nach /usr/local/bin/:

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

Und setzen die Berechtigungen und den Besitzer auf root:

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

Wir installieren die Abhängigkeiten von certbot und unterbrechen an dieser Stelle seine Ausführung (Antworten: Y, c):

certbot-auto

Wir laden das Archiv mit der neuesten Version von Drupal 9 von der offiziellen Webseite herunter:

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

Wir installieren tar zum Entpacken des Archivs:

sudo dnf install tar -y

Wir löschen die Standarddateien im Verzeichnis /usr/share/nginx/html/:

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

Entpacken Sie die Dateien in das Verzeichnis des Webservers:

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

Wir verschieben die Dateien aus dem Unterverzeichnis in das Hauptverzeichnis des Webservers:

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

Wir löschen das Unterverzeichnis:

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

Wir entfernen das Archiv mit den Installationsdateien:

rm -f ./tar.gz

Wir weisen nginx als Eigentümer der Dateien zu:

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

An dieser Stelle werden wir den Server herunterfahren und einen Snapshot erstellen:

shutdown -h now

Nach dem Start des VDS aus dem Snapshot führen wir die Erstkonfiguration des MySQL-Servers durch, indem wir das Skript ausführen:

mysql_secure_installation

Wir aktivieren den Passwortvalidator:

Möchten Sie die VALIDATE PASSWORD-Komponente einrichten? : y

Setzen Sie das Passwort für den MySQL-Benutzer root:

Neues Passwort:
Neues Passwort erneut eingeben:

Wir entfernen anonyme Benutzer:

Anonyme Benutzer entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : y

Wir verbieten den Remote-Zugriff für root:

Remote-Login für root verbieten? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : y

Wir löschen die Testdatenbank:

Testdatenbank und Zugriff darauf entfernen? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : y

Wir laden die Berechtigungstabellen neu:

Berechtigungstabellen jetzt neu laden? (Drücken Sie y|Y für Ja, eine andere Taste für Nein) : y

Danach, um die Installation abzuschließen, können wir die Adresse aufrufen vps_ip_address
An dieser Adresse sehen wir die Installationsseite von Drupal.

Wählen Sie die verwendete Sprache aus. Zum Beispiel: Deutsch. Klicken Sie auf „Speichern und fortfahren“

Wählen Sie das Installationsprofil aus (Demo wird ausschließlich zur Systemerkundung verwendet). In unserem Fall sollte es „Standard“ sein.

Auf der nächsten Seite vergeben wir einen Namen für die Datenbank, zum Beispiel „drupal“. Geben Sie den Benutzernamen der Datenbank root und das entsprechend zugewiesene Passwort beim Start von mysql_secure_installation an. Klicken Sie auf „Speichern und fortfahren“.

Warten Sie, bis die Installation und die Aktualisierung der Übersetzungen abgeschlossen sind (dieser Prozess kann einige Minuten dauern).

Geben Sie den Namen der Website an, sowie die E-Mail-Adresse der Website (von der die Benachrichtigungen der Website gesendet werden), den Benutzernamen, das Passwort und die E-Mail-Adresse des Administrators von Drupal. Legen Sie auch das Land und die Zeitzone in den regionalen Einstellungen fest und schließen Sie die Installation ab, indem Sie auf „Speichern und fortfahren“ klicken.

Jetzt können Sie sich mit dem erstellten Benutzernamen und Passwort des Drupal-Administrators im Kontrollpanel anmelden.

HTTPS konfigurieren (optional)

Um HTTPS einzurichten, muss der VDS einen gültigen DNS-Namen haben. Geben Sie in

/etc/nginx/nginx.conf

dem Abschnitt server den Servernamen an (zum Beispiel):

server_name domainname.de;

Starten Sie nginx neu:

service nginx restart

Starten Sie certbot:

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

Geben Sie Ihre E-Mail-Adresse ein, stimmen Sie den Nutzungsbedingungen des Dienstes zu (A), abonnieren Sie den Newsletter (optional) (N), und wählen Sie die Domainnamen aus, für die ein Zertifikat ausgestellt werden soll (Enter für alle).

Wenn alles fehlerfrei ablief, sehen wir die Nachricht über die erfolgreiche Ausstellung der Zertifikate und die Serverkonfiguration:

Herzlichen Glückwunsch! Sie haben erfolgreich ... aktiviert.

Nach dieser Verbindung werden die Anfragen an Port 80 auf 443 (https) umgeleitet.

Fügen Sie in /etc/crontab hinzu, um die Zertifikate automatisch zu aktualisieren:

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

Konfiguration der Trusted Host Security (empfohlen)

Diese Einstellung dient als Lösung für Probleme mit der dynamischen Definition von base_url und soll HTTP HOST Header-Angriffe verhindern (wenn Ihre Website denkt, sie sei jemand anderes).

Dazu müssen Sie die vertrauenswürdigen Domainnamen der Website in der Konfigurationsdatei angeben.

In der Datei

/usr/share/nginx/html/sites/default/settings.php Kommentieren Sie die Einstellung mit den Mustern der aktuellen Domainnamen aus oder fügen Sie sie hinzu, zum Beispiel:

$settings['trusted_host_patterns'] = [
  '^www.meinedomain.de$',
];

Installation von PHP APCu (EMPFOHLEN)

Drupal unterstützt APCu – Alternative PHP User Cache, die Versionen 8 und 9 nutzen APCu intensiver als kurzfristigen lokalen Cache als frühere Versionen. Die Standardgröße des Caches (32 MB) ist für die meisten Websites geeignet und darf 512 MB nicht überschreiten.

Um APCu zu aktivieren, installieren wir das PHP APCu-Modul:

dnf -y install php-pecl-apcu

Starten Sie nginx und php-fpm neu:

service nginx restart
service php-fpm restart

Wenn Sie die russische Sprache verwenden und APCu mit der empfohlenen Cache-Speichergröße nutzen, sehen Sie möglicherweise in der Verwaltungsoberfläche eine Warnung, dass die zugewiesene Cache-Speichergröße von der empfohlenen abweicht, aber tatsächlich funktioniert alles richtig, und die fehlerhafte Warnung wird wahrscheinlich in den nächsten Updates behoben.

Wenn die Warnung störend ist, können Sie einen entsprechenden Patch von der offiziellen Website verwenden..

Wir möchten Sie daran erinnern, dass auch Sie ein Image für uns erstellen können.

Es gibt drei Möglichkeiten, wie Sie teilnehmen können.

Bereiten Sie selbst ein Image vor und erhalten Sie 3000 Rubel auf Ihr Konto.

Wenn Sie bereit sind, sofort loszulegen und das fehlende Image selbst zu erstellen, gutschreiben wir Ihnen 3000 Rubel auf Ihr internes Guthaben – Sie können es für Server ausgeben.

So erstellen Sie Ihr eigenes Image:

  1. Erstellen Sie ein Konto bei uns auf Webseite
  2. Teilen Sie dem Support mit, dass Sie versuchen, Images zu erstellen und zu testen
  3. Wir gutschreiben Ihnen 3000 Rubel und aktivieren die Möglichkeit, Snapshots zu erstellen
  4. Bestellen Sie einen virtuellen Server mit einem sauberen Betriebssystem
  5. Installieren Sie Software auf diesem VPS und konfigurieren Sie sie
  6. Erstellen Sie eine Anleitung oder ein Skript für die Bereitstellung der Software
  7. Erstellen Sie einen Snapshot für den konfigurierten Server
  8. Bestellen Sie einen neuen virtuellen Server, indem Sie im Dropdown-Menü den zuvor erstellten Snapshot als 'Servervorlage' auswählen
  9. Wenn der Server erfolgreich erstellt wurde, übergeben Sie die Materialien aus Schritt 6 an den technischen Support
  10. Bei einem Fehler können Sie den Support nach dem Grund fragen und die Konfiguration erneut durchführen

Für Geschäftsinhaber: Bieten Sie Ihre Software an

Wenn Sie Softwareentwickler sind, die auf VPS bereitgestellt und verwendet wird, können wir Sie in den Marktplatz aufnehmen. Damit können wir Ihnen helfen, neue Kunden, Traffic und Bekanntheit zu gewinnen. Kontaktieren Sie uns

In den Kommentaren, welchen Image-Typ benötigen Sie?

Und wir werden es selbst vorbereiten

Erstellung einer VPS-Vorlage mit Drupal 9 auf CentOS 8

Erstellung einer VPS-Vorlage mit Drupal 9 auf CentOS 8

Quelle: habr.com

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster