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

So installieren Sie Drupal auf CentOS 7

Drupal ist eine der weltweit führenden Open-Source-CMS-Plattformen. Es ist flexibel, skalierbar und kann verwendet werden, um verschiedene Arten von Websites zu erstellen, von kleinen persönlichen Blogs bis hin zu großen Unternehmens-, Politik- und Regierungswebsites.

In diesem Tutorial erklären wir, wie man Drupal 8.6 auf CentOS 7 installiert.

Es gibt mehrere Möglichkeiten, Drupal zu installieren. Diese Anleitung behandelt die notwendigen Schritte zur Installation von Drupal unter Verwendung einer Composer-Vorlage für Drupal-Projekte namens drupal-project.

Wir verwenden Nginx als Webserver, das neueste PHP 7.2 und MySQL/MariaDB als Datenbankserver.

Voraussetzungen #

Stellen Sie vor Beginn der Installation sicher, dass die folgenden Voraussetzungen erfüllt sind:

  • Haben Sie einen Domänennamen, der auf die IP Ihres öffentlichen Servers verweist. Wir verwenden example.com .
  • Nginx installiert haben.
  • Lassen Sie ein SSL-Zertifikat für Ihre Domain installieren. Sie können ein kostenloses SSL-Zertifikat von Let’s Encrypt installieren, indem Sie diesen Anweisungen folgen.
  • Als Benutzer mit sudo-Berechtigungen angemeldet.

Erstelle eine MySQL-Datenbank #

Der erste Schritt besteht darin, eine neue Datenbank und ein Benutzerkonto zu erstellen und dem Benutzer die entsprechenden Berechtigungen zu erteilen.

Wenn MySQL oder MariaDB bereits auf Ihrem Server installiert ist, können Sie diesen Schritt überspringen, andernfalls können Sie das MariaDB 5.5-Serverpaket aus den Standard-Repositories von CentOS installieren, indem Sie Folgendes eingeben:

sudo yum install mariadb-server
Für frische MariaDB/MySQL-Installationen wird empfohlen, die mysql_secure_installation auszuführen Befehl, um die Sicherheit Ihres Datenbankservers zu verbessern.

Melden Sie sich bei der MySQL-Shell an, indem Sie den folgenden Befehl eingeben, und geben Sie das Kennwort ein, wenn Sie dazu aufgefordert werden:

mysql -u root -p

So erstellen Sie eine Datenbank mit dem Namen drupal , Benutzer namens drupaluser und um dem Benutzer die erforderlichen Berechtigungen zu erteilen, führen Sie die folgenden Befehle aus:

CREATE DATABASE drupal CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal.* TO 'drupaluser'@'localhost' IDENTIFIED BY 'change-with-strong-password';

Installieren Sie PHP #

CentOS 7 wird mit der PHP-Version 5.4 ausgeliefert, die veraltet ist und nicht mehr unterstützt wird. Die empfohlene PHP-Version für Drupal ist PHP 7.2.

Um PHP 7.2 auf CentOS 7 zu installieren, müssen wir zuerst die EPELand Remi-Repositories aktivieren:

sudo yum install epel-release yum-utilssudo yum install http://rpms.remirepo.net/enterprise/remi-release-7.rpmsudo yum-config-manager --enable remi-php72

Sobald die Repositorys aktiviert sind, um PHP 7.2 und alle erforderlichen PHP-Erweiterungen zu installieren, führen Sie die folgenden Befehle aus:

sudo yum install php-cli php-fpm php-mysql php-json php-opcache php-mbstring php-xml php-gd php-curl git

Wir haben PHP FPM installiert, weil wir Nginx als Webserver verwenden werden.

Standardmäßig wird PHP FPM als Benutzer apache ausgeführt auf Port 9000. Wir ändern den Benutzer zu nginx und wechseln Sie von TCP-Socket zu Unix-Socket. Öffnen Sie dazu die /etc/php-fpm.d/www.conf Datei und bearbeiten Sie die gelb markierten Zeilen:

/etc/php-fpm.d/www.conf
...
user = nginx
...
group = nginx
...
listen = /run/php-fpm/www.sock
...
listen.owner = nginx
listen.group = nginx

Stellen Sie sicher, dass die Datei /var/lib/php Verzeichnis mit dem folgenden chown-Befehl den richtigen Besitz hat:

sudo chown -R root:nginx /var/lib/php

Aktivieren und starten Sie schließlich den PHP-FPM-Dienst:

sudo systemctl enable php-fpmsudo systemctl start php-fpm

Installieren Sie Composer #

Composer ist ein Abhängigkeitsmanager für PHP. Wir werden das Drupal-Template herunterladen und alle notwendigen Drupal-Komponenten mit Composer installieren.

Der folgende Befehl installiert Composerglobal, indem er das Composer-Installationsprogramm mit curl herunterlädt und die Datei nach /usr/local/bin verschieben Verzeichnis:

curl -sS https://getcomposer.org/installer | sudo php -- --install-dir=/usr/local/bin --filename=composer

Überprüfen Sie die Installation, indem Sie den folgenden Befehl ausführen, der die Composer-Version druckt:

composer --version

Die Ausgabe sollte in etwa so aussehen:

Composer version 1.8.4 2019-02-11 10:52:10

Installieren Sie Drupal #

Nachdem Composer installiert wurde, erstellen Sie ein neues Drupal-Projekt mit der Drupal-Vorlage in /var/www/my_drupal Verzeichnis:

sudo /usr/local/bin/composer create-project drupal-composer/drupal-project:8.x-dev /var/www/my_drupal --stability dev --no-interaction

Der obige Befehl lädt die Vorlage herunter, ruft alle erforderlichen PHP-Pakete ab und führt die Skripte aus, die zur Vorbereitung des Projekts für die Installation erforderlich sind. Der Vorgang kann einige Minuten dauern und wenn er erfolgreich ist, sieht das Ende der Ausgabe so aus:

Create a sites/default/settings.php file with chmod 0666
Create a sites/default/files directory with chmod 0777

Der nächste Schritt ist die Installation von Drupal mit Drush. Im folgenden Befehl übergeben wir die MySQL-Datenbank und Benutzerinformationen, die wir im ersten Abschnitt erstellt haben:

cd /var/www/my_drupalsudo vendor/bin/drush site-install --db-url=mysql://drupaluser:change-with-strong-password@localhost/drupal

Das Installationsprogramm wird Sie mit der folgenden Meldung auffordern, drücken Sie einfach die Eingabetaste, um fortzufahren.

You are about to DROP all tables in your 'drupal' database. Do you want to continue? (yes/no) [yes]:

Sobald die Installation abgeschlossen ist, gibt das Skript den administrativen Benutzernamen und das Kennwort aus. Die Ausgabe sollte in etwa so aussehen:

[notice] Starting Drupal installation. This takes a while.
[success] Installation complete.  User name: admin  User password: frxka2Db5v

Stellen Sie abschließend die richtigen Berechtigungen ein, damit der Webserver vollen Zugriff auf die Dateien und Verzeichnisse der Site hat:

sudo chown -R nginx: /var/www/my_drupal

Nginx konfigurieren #

Inzwischen sollte Nginx mit SSL-Zertifikat bereits auf Ihrem System installiert sein, wenn nicht, überprüfen Sie die Voraussetzungen für dieses Tutorial.

Um einen neuen Serverblock für unser neues Drupal-Projekt zu erstellen, verwenden wir das Nginx-Rezept von der offiziellen Nginx-Site.

Öffnen Sie Ihren Texteditor und erstellen Sie die folgende Datei:

sudo nano /etc/nginx/conf.d/example.com
/etc/nginx/conf.d/example.com
# Redirect HTTP -> HTTPS
server {
    listen 80;
    server_name www.example.com example.com;

    include snippets/letsencrypt.conf;
    return 301 https://example.com$request_uri;
}

# Redirect WWW -> NON WWW
server {
    listen 443 ssl http2;
    server_name www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    return 301 https://example.com$request_uri;
}

server {
    listen 443 ssl http2;
    server_name example.com;

    root /var/www/my_drupal/web;

    # SSL parameters
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
    ssl_trusted_certificate /etc/letsencrypt/live/example.com/chain.pem;
    include snippets/ssl.conf;

    # log files
    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;
    }

    # Block access to "hidden" files and directories whose names begin with a
    # period. This includes directories used by version control systems such
    # as Subversion or Git to store control files.
    location ~ (^|/)\. {
        return 403;
    }

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

    location @rewrite {
        rewrite ^/(.*)$ /index.php?q=$1;
    }

    # Don't allow direct access to PHP files in the vendor directory.
    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/www.sock;
    }

    # Fighting with Styles? This little gem is amazing.
    # location ~ ^/sites/.*/files/imagecache/ { # For Drupal <= 6
    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;
    }

}
Vergessen Sie nicht, example.com durch Ihre Drupal-Domain zu ersetzen und den richtigen Pfad zu den SSL-Zertifikatsdateien festzulegen. Alle HTTP-Anforderungen werden an HTTPS umgeleitet. Die in dieser Konfiguration verwendeten Snippets werden in diesem Handbuch erstellt.

Führen Sie vor dem Neustart des Nginx-Dienstes einen Test durch, um sicherzustellen, dass keine Syntaxfehler vorliegen:

sudo nginx -t

Starten Sie den Nginx-Dienst neu, damit die Änderungen wirksam werden, indem Sie Folgendes eingeben:

sudo systemctl restart nginx

Testen Sie die Installation #

Öffnen Sie Ihren Browser, geben Sie Ihre Domain ein und vorausgesetzt, die Installation ist erfolgreich, wird ein Bildschirm ähnlich dem folgenden angezeigt:

Sie können sich als Administrator anmelden und mit der Anpassung Ihrer neuen Drupal-Installation beginnen.

Installieren Sie Drupal-Module und -Designs #

Jetzt, da Sie Ihr Drupal-Projekt installiert haben, möchten Sie einige Module und Themen installieren. Drupal-Module und -Designs werden in einem benutzerdefinierten Composer-Repository gehostet, das drupal-project standardmäßig für uns konfiguriert.

Um ein Modul oder ein Thema zu installieren, brauchen Sie nur cd in das Projektverzeichnis und geben Sie composer require drupal/module_or_theme_name ein . Wenn wir beispielsweise das Pathautomodule installieren möchten, müssen wir den folgenden Befehl ausführen:

cd /var/www/my_drupalsudo -u nginx /usr/local/bin/composer require drupal/pathauto
Durch voranstellen von sudo -u nginx Wir führen den Befehl als Benutzer nginx aus
Using version ^1.3 for drupal/pathauto
./composer.json has been updated
> DrupalProject\composer\ScriptHandler::checkComposerVersion
Loading composer repositories with package information
Updating dependencies (including require-dev)
Package operations: 3 installs, 0 updates, 0 removals
  - Installing drupal/token (1.5.0): Downloading (100%) 
  - Installing drupal/ctools (3.2.0): Downloading (100%)
  - Installing drupal/pathauto (1.3.0): Downloading (100%)
Package phpunit/phpunit-mock-objects is abandoned, you should avoid using it. No replacement was suggested.
Writing lock file
Generating autoload files
> DrupalProject\composer\ScriptHandler::createRequiredFiles

Wie Sie der obigen Ausgabe entnehmen können, installiert Composer auch alle Paketabhängigkeiten für uns.

Drupal Core # aktualisieren

Vor dem Upgrade ist es immer eine gute Idee, eine Sicherungskopie Ihrer Dateien und Datenbank zu erstellen. Sie können entweder das Backup and Migrate-Modul verwenden oder Ihre Datenbank und Dateien manuell sichern.

Um die Installationsdateien zu sichern, können Sie den folgenden rsync-Befehl verwenden, Sie müssen natürlich den richtigen Pfad zum Installationsverzeichnis verwenden:

sudo rsync -a /var/www/my_drupal/  /var/www/my_drupal_$(date +%F)

Um die Datenbank zu sichern, können wir entweder den Standard mysqldump verwenden Befehl:

mysqldump -u root -p > /var/www/my_drupal_database_$(date +%F).sql

oder drush sql-dump :

cd /var/www/my_drupalvendor/bin/drush sql-dump > /var/www/my_drupal_database_$(date +%F).sql

Nachdem wir nun ein Backup erstellt haben, können wir fortfahren und alle Drupal-Core-Dateien aktualisieren, indem wir den folgenden Befehl ausführen:

sudo -u nginx /usr/local/bin/composer update drupal/core webflo/drupal-core-require-dev symfony/* --with-dependencies

Cent OS
  1. So installieren Sie PHP 7.3, 7.2, 7.1 unter CentOS/RHEL 6.10

  2. So installieren Sie PHP 7.3 auf CentOS 8

  3. So installieren Sie PHP 8 unter CentOS 7

  4. So installieren Sie PHP 8 unter CentOS 8

  5. So installieren Sie PHP 7.4 auf CentOS 7

So installieren Sie PHP unter CentOS 8

So installieren Sie PHP 7.4 unter CentOS 8 / RHEL 8

So installieren Sie TaskBoard unter CentOS 7

So installieren Sie PHP 7 unter CentOS 7

So installieren Sie PHP 7.4 auf CentOS 8

So installieren Sie PHP Composer unter CentOS 8