GNU/Linux >> LINUX-Kenntnisse >  >> Cent OS

Installieren und konfigurieren Sie Drupal 8 mit Nginx und Lets Encrypt unter CentOS 8

Drupal ist ein kostenloses, skalierbares Open-Source-Content-Management-System, das von Einzelpersonen zum Erstellen und Verwalten beliebiger Arten von Websites verwendet werden kann. Es ist in PHP geschrieben und verwendet MySQL/MariaDB, um seine Daten zu speichern. Drupal bietet eine Vielzahl von Funktionen, die durch Tausende von Add-Ons erweitert werden können. Drupal unterstützt viele Webserver, darunter Apache, Nginx, IIS, Lighttpd und die Datenbanken MySQL, MariaDB, MongoDB, SQLite, PostgreSQL und MS SQL Server. Drupal verfügt über eine einfache und benutzerfreundliche Web-Benutzeroberfläche, mit der Sie Websites ohne Programmierkenntnisse erstellen können.

In diesem Tutorial zeigen wir Ihnen, wie Sie Drupal 8 auf einem CentOS 8-Server installieren und mit Let's Encrypt Free SSL sichern.

Anforderungen

  • Ein Server mit CentOS 8.
  • Ein gültiger Domainname, auf den Ihre Server-IP verweist
  • Auf dem Server ist ein Root-Passwort konfiguriert.

Nginx, MariaDB und PHP installieren

Bevor Sie beginnen, müssen Sie den LEMP-Server auf Ihrem Server installieren. Sie können es installieren, indem Sie den folgenden Befehl ausführen:

dnf install nginx mariadb-server php php-fpm php-cli php-mbstring php-gd php-xml php-curl php-mysqlnd php-pdo php-json php-opcache -y

Starten Sie nach der Installation den Nginx-, MariaDB- und php-fpm-Dienst und ermöglichen Sie ihnen, nach dem Systemneustart mit dem folgenden Befehl zu starten:

systemctl start nginx
systemctl start php-fpm
systemctl start mariadb
systemctl enable nginx
systemctl enable php-fpm
systemctl enable mariadb

Datenbank konfigurieren

Standardmäßig ist MariaDB nicht gesichert, daher müssen Sie es sichern. Sie können es sichern, indem Sie den folgenden Befehl ausführen:

mysql_secure_installation

Beantworten Sie alle Fragen wie unten gezeigt:

Enter current password for root (enter for none):
Set root password? [Y/n] Y
New password:
Re-enter new password:
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] Y
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y

Wenn Sie fertig sind, melden Sie sich mit dem folgenden Befehl bei der MariaDB-Shell an:

mysql -u root -p

Geben Sie Ihr Root-Passwort ein, wenn Sie dazu aufgefordert werden, und erstellen Sie dann mit dem folgenden Befehl eine Datenbank und einen Benutzer für Drupal:

MariaDB [(none)]> CREATE DATABASE drupaldb CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDB [(none)]> CREATE USER [email protected] IDENTIFIED BY "password";

Als nächstes erteilen Sie drupaldb alle Privilegien mit dem folgenden Befehl:

MariaDB [(none)]> GRANT ALL ON drupaldb.* TO [email protected] IDENTIFIED BY "password";

Leeren Sie als Nächstes die Berechtigungen und beenden Sie die MariaDB-Shell mit dem folgenden Befehl:

MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> EXIT;

Drupal herunterladen

Zuerst müssen Sie die neueste Version von Drupal von der offiziellen Website herunterladen. Sie können es mit dem folgenden Befehl herunterladen:

wget https://ftp.drupal.org/files/projects/drupal-8.7.10.tar.gz

Extrahieren Sie die heruntergeladene Datei nach dem Herunterladen mit dem folgenden Befehl:

tar -xvzf drupal-8.7.10.tar.gz

Verschieben Sie als Nächstes das extrahierte Verzeichnis mit dem folgenden Befehl in das Nginx-Webstammverzeichnis:

mv drupal-8.7.10 /var/www/html/drupal

Erstellen Sie als Nächstes ein Verzeichnis zum Speichern von Website-Dateien und benennen Sie die Datei default.settings.php wie unten gezeigt um:

mkdir /var/www/html/drupal/sites/default/files
cp /var/www/html/drupal/sites/default/default.settings.php /var/www/html/drupal/sites/default/settings.php

Als nächstes ändern Sie den Besitz des Drupal-Verzeichnisses auf nginx, wie unten gezeigt:

chown -R nginx:nginx /var/www/html/drupal/

Nginx für Drupal konfigurieren

Erstellen Sie zunächst mit dem folgenden Befehl eine php-fpm-Konfigurationsdatei für Drupal:

nano /etc/php-fpm.d/drupal.conf

Fügen Sie die folgenden Zeilen hinzu:

[drupal]
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen = /run/php-fpm/drupal.sock
pm = ondemand
pm.max_children =  50
pm.process_idle_timeout = 10s
pm.max_requests = 500
chdir = /

Speichern und schließen Sie die Datei, wenn Sie fertig sind. Erstellen Sie dann eine virtuelle Nginx-Host-Konfigurationsdatei für Drupal:

nano /etc/nginx/conf.d/drupal.conf

Fügen Sie die folgenden Zeilen hinzu:

server {
    listen 80;
    server_name example.com;

    root /var/www/html/drupal;

    access_log /var/log/nginx/example.com.access.log;
    error_log /var/log/nginx/example.com.error.log;

    location = /favicon.ico {
        log_not_found off;
        access_log off;
    }

    location = /robots.txt {
        allow all;
        log_not_found off;
        access_log off;
    }

    location ~ \..*/.*\.php$ {
        return 403;
    }

    location ~ ^/sites/.*/private/ {
        return 403;
    }

    # Block access to scripts in site files directory
    location ~ ^/sites/[^/]+/files/.*\.php$ {
        deny all;
    }
    location ~ (^|/)\. {
        return 403;
    }

    location / {
        try_files $uri /index.php?$query_string;
    }

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }
    location ~ /vendor/.*\.php$ {
        deny all;
        return 404;
    }


    location ~ '\.php$|^/update.php' {
        fastcgi_split_path_info ^(.+?\.php)(|/.*)$;
        include fastcgi_params;
       	# Block httpoxy attacks. See https://httpoxy.org/.
        fastcgi_param HTTP_PROXY "";
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        fastcgi_param QUERY_STRING $query_string;
        fastcgi_intercept_errors on;
        fastcgi_pass unix:/run/php-fpm/drupal.sock;
    }
    location ~ ^/sites/.*/files/styles/ { # For Drupal >= 7
        try_files $uri @rewrite;
    }

    # Handle private files through Drupal. Private file's path can come
    # with a language prefix.
    location ~ ^(/[a-z\-]+)?/system/files/ { # For Drupal >= 7
        try_files $uri /index.php?$query_string;
    }

    location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg)$ {
        try_files $uri @rewrite;
        expires max;
        log_not_found off;
    }
}

Speichern und schließen Sie die Datei. Starten Sie dann php-fpm und den Nginx-Dienst neu, um die Änderungen zu übernehmen:

systemctl restart php-fpm
systemctl restart nginx

Konfigurieren Sie SELinux und die Firewall

Standardmäßig ist SELinux in CentOS 8 aktiviert. Daher müssen Sie SELinux konfigurieren, damit Drupal ordnungsgemäß funktioniert.

Erstens erlaubt Drupal mit dem folgenden Befehl, in die öffentlichen und privaten Dateiverzeichnisse zu schreiben:

semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html/drupal(/.*)?"
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/settings.php'
semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/html/drupal/sites/default/files'
restorecon -Rv /var/www/html/drupal
restorecon -v /var/www/html/drupal/sites/default/settings.php
restorecon -Rv /var/www/html/drupal/sites/default/files

Als nächstes erlaubt Drupal mit dem folgenden Befehl, ausgehende E-Mails zu senden:

setsebool -P httpd_can_sendmail on

Als Nächstes müssen Sie eine Firewall-Regel erstellen, um den HTTP- und HTTPS-Dienst von externen Netzwerken zuzulassen. Sie können es mit dem folgenden Befehl zulassen:

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

Drupal mit Let's Encrypt SSL sichern

Drupal ist nun installiert und konfiguriert. Es ist an der Zeit, es mit dem kostenlosen SSL von Let's Encrypt zu sichern.

Dazu müssen Sie den certbot-Client auf Ihren Server herunterladen. Sie können die richtige Berechtigung herunterladen und festlegen, indem Sie den folgenden Befehl ausführen:

wget https://dl.eff.org/certbot-auto
mv certbot-auto /usr/local/bin/certbot-auto
chown root /usr/local/bin/certbot-auto
chmod 0755 /usr/local/bin/certbot-auto

Führen Sie nun den folgenden Befehl aus, um ein SSL-Zertifikat für Ihre Drupal-Website zu erhalten und zu installieren.

certbot-auto --nginx -d example.com

Der obige Befehl installiert zunächst alle erforderlichen Abhängigkeiten auf Ihrem Server. Nach der Installation werden Sie aufgefordert, eine E-Mail-Adresse anzugeben und die Nutzungsbedingungen wie unten gezeigt zu akzeptieren:

Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): [email protected]

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Please read the Terms of Service at
https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must
agree in order to register with the ACME server at
https://acme-v02.api.letsencrypt.org/directory
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(A)gree/(C)ancel: A

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Would you be willing to share your email address with the Electronic Frontier
Foundation, a founding partner of the Let's Encrypt project and the non-profit
organization that develops Certbot? We'd like to send you email about our work
encrypting the web, EFF news, campaigns, and ways to support digital freedom.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
(Y)es/(N)o: Y 


Obtaining a new certificate
Performing the following challenges:
http-01 challenge for example.com
Waiting for verification...
Cleaning up challenges
Deploying Certificate to VirtualHost /etc/nginx/conf.d/drupal.conf

Als Nächstes müssen Sie auswählen, ob der HTTP-Datenverkehr wie unten gezeigt auf HTTPS umgeleitet werden soll:

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2

Geben Sie 2 ein und drücken Sie die Eingabetaste, um fortzufahren. Sobald die Installation abgeschlossen ist, sollten Sie die folgende Ausgabe sehen:

Redirecting all traffic on port 80 to ssl in /etc/nginx/conf.d/drupal.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://example.com

You should test your configuration at:
https://www.ssllabs.com/ssltest/analyze.html?d=example.com
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

IMPORTANT NOTES:
 - Congratulations! Your certificate and chain have been saved at:
   /etc/letsencrypt/live/example.com/fullchain.pem
   Your key file has been saved at:
   /etc/letsencrypt/live/example.com/privkey.pem
   Your cert will expire on 2020-03-23. To obtain a new or tweaked
   version of this certificate in the future, simply run certbot-auto
   again with the "certonly" option. To non-interactively renew *all*
   of your certificates, run "certbot-auto renew"
 - If you like Certbot, please consider supporting our work by:

   Donating to ISRG / Let's Encrypt:   https://letsencrypt.org/donate
   Donating to EFF:                    https://eff.org/donate-le

Zugriff auf die Drupal-Website

Öffnen Sie nun Ihren Webbrowser und geben Sie die URL https://example.com ein . Sie werden auf die folgende Seite weitergeleitet:

Wählen Sie Ihre gewünschte Sprache und klicken Sie auf Speichern und fortfahren Taste. Sie sollten die folgende Seite sehen:

Wählen Sie Ihr Installationsprofil und klicken Sie auf Speichern und fortfahren Taste. Sie sollten die folgende Seite sehen:

Geben Sie Ihre Datenbankdetails ein und klicken Sie auf Speichern und fortfahren Taste. Sie sollten die folgende Seite sehen:

Geben Sie Ihren Site-Namen, Admin-Benutzernamen und Ihr Passwort ein und klicken Sie auf Speichern und fortfahren Taste. Sie sollten Ihr Drupal-Dashboard auf der folgenden Seite sehen:

Herzliche Glückwünsche! Sie haben Drupal erfolgreich auf dem CentOS 8-Server installiert und gesichert.


Cent OS
  1. So installieren und konfigurieren Sie Nginx unter CentOS 7

  2. Sichern Sie Nginx mit Lets Encrypt unter CentOS 7

  3. Sichern Sie Apache mit Lets Encrypt unter CentOS 7

  4. So installieren und konfigurieren Sie Askbot mit Nginx unter CentOS 7

  5. So installieren Sie OwnCloud 8 mit Nginx und MariaDB auf CentOS 7

So installieren Sie Askbot mit Nginx und sichern mit Lets Encrypt unter CentOS 8

So installieren Sie Drupal mit Nginx und Lets Encrypt SSL unter Ubuntu 20.04 LTS

So installieren Sie Drupal 9 mit Nginx und Lets Encrypt SSL unter Debian 10

So installieren Sie Shopware 6 mit NGINX und Lets Encrypt unter CentOS 8

So installieren Sie PrestaShop mit Apache und Lets Encrypt SSL unter CentOS 8

Installation und Konfiguration von PhpMyAdmin mit Nginx unter CentOS 7