GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Drupal na CentOS 7

Drupal je jednou z předních platforem open-source CMS po celém světě. Je flexibilní, škálovatelný a lze jej použít k vytváření různých typů webových stránek, od malých osobních blogů až po velké firemní, politické a vládní stránky.

V tomto tutoriálu vysvětlíme, jak nainstalovat Drupal 8.6 na CentOS 7.

Existuje několik způsobů, jak nainstalovat Drupal. Tato příručka popisuje kroky nezbytné pro instalaci Drupalu pomocí šablony pro skladatele pro projekty Drupal s názvem drupal-project.

Budeme používat Nginx jako webový server, nejnovější PHP 7.2 a MySQL/MariaDB jako databázový server.

Předpoklady #

Před zahájením instalace se ujistěte, že jste splnili následující předpoklady:

  • Mějte název domény odkazující na IP vašeho veřejného serveru. Použijeme example.com .
  • Mějte nainstalovaný Nginx.
  • Mějte nainstalovaný certifikát SSL pro svou doménu. Bezplatný certifikát Let’s Encrypt SSL si můžete nainstalovat podle těchto pokynů.
  • Přihlášeni jako uživatel s právy sudo.

Vytvořit databázi MySQL #

Prvním krokem je vytvoření nové databáze a uživatelského účtu a udělení příslušných oprávnění uživateli.

Pokud je na vašem serveru již nainstalována MySQLor MariaDB, můžete tento krok přeskočit, pokud ne, můžete nainstalovat serverový balíček MariaDB 5.5 z výchozích úložišť CentOS zadáním:

sudo yum install mariadb-server
Pro čerstvé instalace MariaDB/MySQL se doporučuje spustit mysql_secure_installation ke zlepšení zabezpečení vašeho databázového serveru.

Přihlaste se do prostředí MySQL zadáním následujícího příkazu a po výzvě zadejte heslo:

mysql -u root -p

Chcete-li vytvořit databázi s názvem drupal , uživatel se jménem drupaluser a k udělení nezbytných oprávnění uživateli spusťte následující příkazy:

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';

Instalovat PHP #

CentOS 7 se dodává s verzí PHP 5.4, která je zastaralá a již není podporována. Doporučená verze PHP pro Drupal je PHP 7.2.

Chcete-li nainstalovat PHP 7.2 na CentOS 7, musíme nejprve povolit úložiště EPELand Remi:

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

Jakmile je v úložištích povolena instalace PHP 7.2 a všechna požadovaná rozšíření PHP spusťte následující příkazy:

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

Nainstalovali jsme PHP FPM, protože budeme používat Nginx jako webový server.

Ve výchozím nastavení PHP FPM poběží jako uživatel apache na portu 9000. Změníme uživatele na nginx a přepněte z TCP socketu na Unix socket. Chcete-li tak učinit, otevřete /etc/php-fpm.d/www.conf soubor a upravte řádky zvýrazněné žlutě:

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

Ujistěte se, že /var/lib/php adresář má správné vlastnictví pomocí následujícího příkazu chown:

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

Nakonec povolte a spusťte službu PHP FPM:

sudo systemctl enable php-fpmsudo systemctl start php-fpm

Instalovat Composer #

Composer je správce závislostí pro PHP. Stáhneme si šablonu Drupalu a nainstalujeme všechny potřebné komponenty Drupalu se skladatelem.

Následující příkaz nainstaluje Composerglobally stažením instalačního programu Composer pomocí curl a přesunutí souboru do /usr/local/bin adresář:

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

Ověřte instalaci spuštěním následujícího příkazu, který vytiskne verzi skladatele:

composer --version

Výstup by měl vypadat nějak takto:

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

Instalovat Drupal #

Nyní, když je skladatel nainstalován, vytvořte nový projekt Drupal pomocí šablony Drupal v /var/www/my_drupal adresář:

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

Výše uvedený příkaz stáhne šablonu, načte všechny požadované balíčky php a spustí skripty potřebné k přípravě projektu k instalaci. Proces může trvat několik minut a pokud bude úspěšný, bude výstup vypadat takto:

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

Dalším krokem je instalace Drupalu pomocí Drush. V níže uvedeném příkazu předáváme databázi MySQL a uživatelské informace, které jsme vytvořili v první sekci:

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

Instalační program vás vyzve následující zprávou, pokračujte stisknutím klávesy Enter.

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

Po dokončení instalace skript vytiskne administrativní uživatelské jméno a heslo. Výstup by měl vypadat nějak takto:

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

Nakonec nastavte správná oprávnění, aby webový server mohl mít plný přístup k souborům a adresářům webu:

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

Nakonfigurujte Nginx #

Nyní byste již měli mít Nginx s certifikátem SSL nainstalovaný ve svém systému, pokud ne, zkontrolujte předpoklady pro tento tutoriál.

K vytvoření nového bloku serveru pro náš nový projekt Drupal použijeme recept Nginx z oficiální stránky Nginx.

Otevřete textový editor a vytvořte následující soubor:

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;
    }

}
Nezapomeňte nahradit example.com svou doménou Drupal a nastavit správnou cestu k souborům certifikátu SSL. Všechny požadavky HTTP budou přesměrovány na HTTPS. Fragmenty použité v této konfiguraci jsou vytvořeny v této příručce.

Před restartováním služby Nginx proveďte test, abyste se ujistili, že neexistují žádné syntaktické chyby:

sudo nginx -t

Restartujte službu Nginx, aby se změny projevily zadáním:

sudo systemctl restart nginx

Otestujte instalaci #

Otevřete prohlížeč, zadejte svou doménu a za předpokladu, že instalace proběhla úspěšně, zobrazí se obrazovka podobná následující:

Můžete se přihlásit jako správce a začít přizpůsobovat svou novou instalaci Drupalu.

Instalovat Drupal moduly a motivy #

Nyní, když máte nainstalovaný projekt Drupal, budete chtít nainstalovat některé moduly a motivy. Moduly a témata Drupalu jsou hostovány ve vlastním úložišti skladatelů, které nám drupal-project nakonfiguruje hned po vybalení.

Chcete-li nainstalovat modul nebo téma, vše, co musíte udělat, je cd do adresáře projektu a zadejte composer require drupal/module_or_theme_name . Například, pokud chceme nainstalovat Pathautomodule, musíme spustit následující příkaz:

cd /var/www/my_drupalsudo -u nginx /usr/local/bin/composer require drupal/pathauto
Předřazením sudo -u nginx spouštíme příkaz jako uživatel nginx
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

Jak můžete vidět z výstupu výše, skladatel za nás také nainstaluje všechny závislosti balíčku.

Aktualizovat Drupal Core #

Před upgradem je vždy dobré vytvořit zálohu souborů a databáze. Můžete buď použít modul Backup and Migratemodule nebo ručně zálohovat databázi a soubory.

K zálohování instalačních souborů můžete použít následující příkaz rsync, samozřejmě budete muset použít správnou cestu k instalačnímu adresáři:

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

K zálohování databáze můžeme použít buď standardní mysqldump příkaz:

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

nebo drush sql-dump :

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

Nyní, když jsme vytvořili zálohu, můžeme pokračovat a aktualizovat všechny základní soubory Drupal spuštěním následujícího příkazu:

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

Cent OS
  1. Jak nainstalovat PHP 7.4 / 7.3 / 7.2 na CentOS 7 / RHEL 7 &CentOS 6 / RHEL 6

  2. Jak nainstalovat PHP 7.4 / 7.3 na CentOS 8 / RHEL 8

  3. Jak nainstalovat PHP 5.5 na CentOS

  1. Jak nainstalovat PHP 5.6 na CentOS 7

  2. Jak nainstalovat PHP 7.3 na CentOS 8

  3. Jak nainstalovat PHP 8 na CentOS 7

  1. Jak nainstalovat PHP 8 na CentOS 8

  2. Jak nainstalovat PHP 7.4 na CentOS 7

  3. Jak nainstalovat Drupal 7 na CentOS 7