БозданиС шаблона VPS с Drupal 9 на Centos 8

ΠœΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Ρ€Π°ΡΡˆΠΈΡ€ΡΡ‚ΡŒ наш маркСтплСйс. НСдавно ΠΌΡ‹ рассказывали, ΠΊΠ°ΠΊ сдСлали ΠΎΠ±Ρ€Π°Π· Gitlab, Π° Π½Π° этой Π½Π΅Π΄Π΅Π»Π΅ Π² нашСм маркСтплСйсС появился Drupal.

РассказываСм, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π²Ρ‹Π±Ρ€Π°Π»ΠΈ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΅Π³ΠΎ ΠΈ ΠΊΠ°ΠΊ создавался ΠΎΠ±Ρ€Π°Π·.

БозданиС шаблона VPS с Drupal 9 на Centos 8

Drupal β€” удобная ΠΈ мощная ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ° для создания Π»ΡŽΠ±Ρ‹Ρ… Ρ‚ΠΈΠΏΠΎΠ² сайтов: ΠΎΡ‚ микросайтов ΠΈ Π±Π»ΠΎΠ³ΠΎΠ² Π΄ΠΎ ΠΊΡ€ΡƒΠΏΠ½Ρ‹Ρ… ΡΠΎΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Ρ‚Π°ΠΊΠΆΠ΅ ΠΊΠ°ΠΊ основа для Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, написанная Π½Π° языкС PHP ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π² качСствС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π΄Π°Π½Π½Ρ‹Ρ… рСляционныС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ….

Drupal 9 Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя всС особСнности Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² вСрсии 8.9. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ вСрсии 9 ΠΎΡ‚ вСрсии 8 состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ для ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΡ‹ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒΡΡ обновлСния ΠΈ исправлСния бСзопасности ΠΈ послС ноября 2021 Π³ΠΎΠ΄Π°. Π’Π°ΠΊΠΆΠ΅ Π² вСрсии 9 упростили процСсс обновлСния, дСлая процСсс обновлСния с вСрсии 8 Π΅Ρ‰Π΅ ΠΏΡ€ΠΎΡ‰Π΅.

ВрСбования ΠΊ сСрвСру

Для использования Drupal рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ 2 Π“Π± RAM ΠΈ 2 ядра CPU.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹ Drupal Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΎΠΊΠΎΠ»ΠΎ 100 Мб, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π²Π°ΠΌ понадобится мСсто для хранСния ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ, Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π΅ΠΌ, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ Ρ€Π΅Π·Π΅Ρ€Π²Π½Ρ‹Ρ… ΠΊΠΎΠΏΠΈΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΡ‚ΡŒ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° вашСго сайта.

Для Drupal 9 трСбуСтся PHP 7.4 ΠΈΠ»ΠΈ Π²Ρ‹ΡˆΠ΅ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ (memory_limit) Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ 64 Мб, Π² случаС использования Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ рСкомСндуСтся ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ 128 Мб.

Π’ качСствС Π²Π΅Π±-сСрвСра Drupal ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Apache ΠΈΠ»ΠΈ Nginx, Π° Π² качСствС Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… MySQL, PostgreSQL ΠΈΠ»ΠΈ SQLite.

ΠœΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒ Drupal с использованиСм Nginx ΠΈ MySQL.

Установка

ОбновлСним установлСнныС ΠΏΠ°ΠΊΠ΅Ρ‚Ρ‹ Π΄ΠΎ послСднСй вСрсии:

sudo dnf update -y

Π”ΠΎΠ±Π°Π²ΠΈΠΌ постоянноС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для входящСго Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° Π½Π° http/80 ΠΈ https/443 ΠΏΠΎΡ€Ρ‚Ρ‹:

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

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π° Ρ„Π°ΠΉΡ€Π²ΠΎΠ»Π°:

sudo systemctl reload firewalld

Установим Nginx:

sudo dnf install nginx -y

Запустим ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сСрвСр Nginx:

sudo systemctl start nginx
sudo systemctl enable nginx

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π² основном Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Centos ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ вСрсия PHP 7.2, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ REMI с PHP 7.4 (минимальная вСрсия для Drupal 9).
Для этого Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ EPEL (трСбуСтся Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠ΅ΠΌ REMI):

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ REMI:

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

Π’ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ php:remi-7.4 для установки php 7.4:

sudo dnf module enable php:remi-7.4 -y

Установим php-fpm ΠΈ php-cli:

sudo dnf install -y php-fpm php-cli

Установим PHP ΠΌΠΎΠ΄ΡƒΠ»ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ 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

Π’Π°ΠΊ ΠΆΠ΅ установим Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ PHP mbstring opcache:

sudo dnf install -y php-mbstring php-opcache

Установим сСрвСр MySQL:

sudo dnf install mysql-server -y

Π’ΠΊΠ»ΡŽΡ‡ΠΈΠΌ ΠΈ запустим сСрвСр MySQL:

sudo systemctl start mysqld
sudo systemctl enable mysqld

Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ шаблон для VDS, Π° ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ΅Π΄Π»Π΅Π½Π½Ρ‹ΠΌΠΈ, Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π·Π°Π΄Π΅Ρ€ΠΆΠΊΡƒ старта mysqld 30 сСкунд, ΠΈΠ½Π°Ρ‡Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ со стартом сСрвСра ΠΏΡ€ΠΈ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠ΅ систСмы:

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

ИзмСним Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ ΠΈΠ· ΠΏΠΎΠ΄ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ nginx внСся измСнСния Π² /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

ИзмСним Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π° ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° сСссий PHP Ρ‚Π°ΠΊ ΠΆΠ΅ соотвСтствСнно Π½Π° nginx:

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

Π£Π΄Π°Π»ΠΈΠΌ строки с комСнтариями ΠΈΠ· Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ /etc/nginx/nginx.conf (Ρ‡Ρ‚ΠΎ Π±Ρ‹ Π½Π΅ Π±Ρ‹Π»ΠΎ Π΄Π²ΠΎΠΉΠ½Ρ‹Ρ… срабатываний для sed):

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² /etc/nginx/nginx.conf настройки компрСссии gzip

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² /etc/nginx/nginx.conf настройки индСксного Ρ„Π°ΠΉΠ»Π° index.php:

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

Π”ΠΎΠ±Π°Π²ΠΈΠΌ настройки для Π΄Π΅Ρ„ΠΎΠ»Ρ‚Π½ΠΎΠ³ΠΎ сСрвСра ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ php Ρ‡Π΅Ρ€Π΅Π· сокСт php-fpm, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π»ΠΎΠ³ для статичСских Ρ„Π°ΠΉΠ»ΠΎΠ², ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠΌ врСмя expire, ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π»ΠΎΠ³ доступа ΠΈ ошибок для favicon.ico ΠΈ robots.txt ΠΈ Π·Π°ΠΏΡ€Π΅Ρ‚ΠΈΠΌ доступ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ .ht для всСх:

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

Установим wget Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ для установки certbot:

sudo dnf install wget -y

Π‘ΠΊΠ°Ρ‡Π°Π΅ΠΌ исполняСмый Ρ„Π°ΠΉΠ» certbot с оффсайта:

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

ΠŸΠ΅Ρ€Π΅ΠΌΠ΅ΡΡ‚ΠΈΠΌ certbot Π² /usr/local/bin/:

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

И Π½Π°Π·Π½Π°Ρ‡ΠΈΠΌ ΠΏΡ€Π°Π²Π° ΠΈ Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ root:

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

Установим зависимости certbot ΠΈ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΏΡ€Π΅Ρ€Π²Π΅ΠΌ Π΅Π³ΠΎ Ρ€Π°Π±ΠΎΡ‚Ρƒ (ΠžΡ‚Π²Π΅Ρ‚Ρ‹: Y, c):

certbot-auto

Π‘ΠΊΠ°Ρ‡Π°Π΅ΠΌ с оффсайта Π°Ρ€Ρ…ΠΈΠ² с послСднСй вСрсиСй Drupal 9:

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

Установим tar для распаковки Π°Ρ€Ρ…ΠΈΠ²Π°:

sudo dnf install tar -y

Π£Π΄Π°Π»ΠΈΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ /usr/share/nginx/html/:

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

РаспакуСм Ρ„Π°ΠΉΠ»Ρ‹ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π΅Π±-сСрвСра:

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

ΠŸΠ΅Ρ€Π΅Π½Π΅ΡΠ΅ΠΌ Ρ„Π°ΠΉΠ»Ρ‹ ΠΈΠ· ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π²Π΅Π±-сСрвСра:

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

Π£Π΄Π°Π»ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³:

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

Π£Π΄Π°Π»ΠΈΠΌ Π°Ρ€Ρ…ΠΈΠ² с установочными Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ:

rm -f ./tar.gz

Назначим Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅ΠΌ Ρ„Π°ΠΉΠ»ΠΎΠ² nginx:

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

На Π΄Π°Π½Π½ΠΎΠΌ этапС ΠΌΡ‹ Π²Ρ‹ΠΊΠ»ΡŽΡ‡ΠΈΠΌ сСрвСр ΠΈ сдСлаСм ΡΠ½Π°ΠΏΡˆΠΎΡ‚:

shutdown -h now

ПослС запуска VDS ΠΈΠ· ΡΠ½Π°ΠΏΡˆΠΎΡ‚Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ настройку MySQL сСрвСра запустив скрипт:

mysql_secure_installation

Π’ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π²Π°Π»ΠΈΠ΄Π°Ρ‚ΠΎΡ€ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΉ:

Would you like to setup VALIDATE PASSWORD component? : y

Π—Π°Π΄Π°Π΄ΠΈΠΌ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ root MySQL:

New password:
Re-enter new password:

Π£Π΄Π°Π»ΠΈΠΌ Π°Π½ΠΎΠ½ΠΈΠΌΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ:

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

Π—Π°ΠΏΡ€Π΅Ρ‚ΠΈΠΌ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ root ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎ:

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

Π£Π΄Π°Π»ΠΈΠΌ Ρ‚Π΅ΡΡ‚ΠΎΠ²ΡƒΡŽ Π±Π°Π·Ρƒ Π΄Π°Π½Π½Ρ‹Ρ…:

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

ΠŸΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠΌ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΠΉ:

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

ПослС этого, для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ ΠΏΠΎ адрСсу vps_ip_address
По этому адрСсу ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ страницу с установкой Drupal.

Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ язык. НапримСр: русский. НаТмСм Β«Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒΒ»

Π’Ρ‹Π±Π΅Ρ€Π΅ΠΌ установочный ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ (Π΄Π΅ΠΌΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ для ознакомлСния с систСмой). Π’ нашСм случаС ΠΏΡƒΡΡ‚ΡŒ это Π±ΡƒΠ΄Π΅Ρ‚ «стандарт».

На ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ страницС Π·Π°Π΄Π°Π΄ΠΈΠΌ имя Π±Π°Π·Π΅ Π΄Π°Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Β«drupalΒ». Π£ΠΊΠ°ΠΆΠ΅ΠΌ имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π‘Π” root ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ Π·Π°Π΄Π°Π½Π½Ρ‹ΠΉ Π΅ΠΌΡƒ, ΠΏΡ€ΠΈ запускС mysql_secure_installation. НаТмСм Β«Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒΒ».

ДоТдСмся Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ установки ΠΈ обновлСния ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ² (процСсс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π½ΡΡ‚ΡŒ нСсколько ΠΌΠΈΠ½ΡƒΡ‚).

Π£ΠΊΠ°ΠΆΠ΅ΠΌ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ сайта, Π·Π°Π΄Π°Π΄ΠΈΠΌ email сайта (ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ΡŒ увСдомлСния сайта), Π»ΠΎΠ³ΠΈΠ½, ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈ email ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи администратора Drupal. Π’Π°ΠΊΠΆΠ΅ Π·Π°Π΄Π°Π΄ΠΈΠΌ страну ΠΈ часовой пояс Π² Ρ€Π΅Π³ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… настройках. И Π·Π°Π²Π΅Ρ€ΡˆΠΈΠΌ установку Π½Π°ΠΆΠ°Π² Β«Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒΒ».

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² панСль управлСния с созданным Π»ΠΎΠ³ΠΈΠ½ΠΎΠΌ ΠΈ ΠΏΠ°Ρ€ΠΎΠ»Π΅ΠΌ администратора Drupal.

Настройка HTTPS (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ)

Для настройки HTTPS Ρƒ VDS Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ DNS имя, ΡƒΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²

/etc/nginx/nginx.conf

Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ server имя сСрвСра (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€):

server_name  domainname.ru;

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΠΌ nginx:

service nginx restart

Запустим certbot:

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

Π’Π²Π΅Π΄Π΅ΠΌ свой e-mail, cогласимся с условиями сСрвиса (A), Подписка Π½Π° рассылку (ΠΎΠΏΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎ) (N), Π²Ρ‹Π±Π΅Ρ€Π΅ΠΌ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° для ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½ΡƒΠΆΠ½ΠΎ ΠΈΠ·Π΄Π°Ρ‚ΡŒ сСртификат (Enter для всСх).

Π’ случаС, Ссли всС ΠΏΡ€ΠΎΡˆΠ»ΠΎ Π±Π΅Π· ошибок, ΠΌΡ‹ ΡƒΠ²ΠΈΠ΄ΠΈΠΌ сообщСниС ΠΎΠ± ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠΉ Π²Ρ‹Π΄Π°Ρ‡Π΅ сСртификатов ΠΈ настройкС сСрвСра:

Congratulations! You have successfully enabled ...

ПослС этого ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ Π½Π° 80 ΠΏΠΎΡ€Ρ‚ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π° 443 (https).

Π”ΠΎΠ±Π°Π²ΠΈΠΌ Π² /etc/crontab для автоматичСского обновлСния сСртификатов:

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

Настройка Trusted Host Security (рСкомСндуСтся)

Данная настройка ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ связанной с динамичСским ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ base_url, ΠΈ ΠΏΡ€ΠΈΠ·Π²Π°Π½Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π°Ρ‚Π°ΠΊΠΈ HTTP HOST Header (ΠΊΠΎΠ³Π΄Π° ваш сайт Π΄ΡƒΠΌΠ°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ).

Для этого Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ Π΄ΠΎΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΠΌΠ΅Π½Π° сайта Π² Ρ„Π°ΠΉΠ»Π΅ настроСк.

Π’ Ρ„Π°ΠΉΠ»Π΅

/usr/share/nginx/html/sites/default/settings.php расскомСнтируСм ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ настройку с ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈΠΌΠ΅Π½ сайта, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€:

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

Установка PHP APCu (Π Π•ΠšΠžΠœΠ•ΠΠ”Π£Π•Π’Π‘Π―)

Drupal ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ APCu β€” Alternative PHP User Cache, вСрсии 8 ΠΈ 9 интСнсивнСС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ APCu ΠΊΠ°ΠΊ краткосрочный Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ кСш, Ρ‡Π΅ΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠ΅ вСрсии. Π Π°Π·ΠΌΠ΅Ρ€ кСша ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ (32 Мб) ΠΏΠΎΠ΄ΠΎΠΉΠ΄Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Ρƒ сайтов, ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Ρ‚ΡŒ 512 Мб.

Для Π°ΠΊΡ‚ΠΈΠ²Π°Ρ†ΠΈΠΈ установим ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP APCu:

dnf -y install php-pecl-apcu

ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΡƒΡΡ‚ΠΈΠΌ nginx ΠΈ php-fpm:

service nginx restart
service php-fpm restart

Π’ случаС использования русского языка ΠΈ APCu с Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ памяти для кСша, Π² ΠΏΠ°Π½Π΅Π»ΠΈ управлСния Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти для кСша отличаСтся ΠΎΡ‚ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ, Π½ΠΎ фактичСски всС Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π° Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠ΅ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ скорСС всСго исправят Π² Π±Π»ΠΈΠΆΠ°ΠΉΡˆΠΈΡ… обновлСниях.

Или Ссли ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Ρ€Π΅ΠΆΠ΅Ρ‚ Π³Π»Π°Π·, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΠ°Ρ‚Ρ‡ с оффсайта.

Π₯ΠΎΡ‚ΠΈΠΌ Π½Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ для нас ΠΎΠ±Ρ€Π°Π·

Π•ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π°, ΠΊΠ°ΠΊ ΠΏΠΎΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ.

ΠŸΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΡŒΡ‚Π΅ ΠΎΠ±Ρ€Π°Π· сами ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ 3000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π½Π° баланс

Если Π²Ρ‹ Π³ΠΎΡ‚ΠΎΠ²Ρ‹ сразу Ρ€ΠΈΠ½ΡƒΡ‚ΡŒΡΡ Π² Π±ΠΎΠΉ ΠΈ самому ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚, ΠΌΡ‹ зачислим Π²Π°ΠΌ 3000 Ρ€ΡƒΠ±Π»Π΅ΠΉ Π½Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ баланс β€” Π²Ρ‹ смоТСтС ΠΏΠΎΡ‚Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° сСрвСры.

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой ΠΎΠ±Ρ€Π°Π·:

  1. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ Ρƒ нас Π½Π° сайтС
  2. Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚Π΅ Π² ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΡΠΎΠ±ΠΈΡ€Π°Π΅Ρ‚Π΅ΡΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ‚Π΅ΡΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π·Ρ‹
  3. ΠœΡ‹ зачислим Π²Π°ΠΌ 3000 Ρ€ΡƒΠ±Π»Π΅ΠΉ ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΡΠ½Π°ΠΏΡˆΠΎΡ‚Ρ‹
  4. Π—Π°ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр с чистой ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой
  5. УстановитС Π½Π° эту VPS ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈ настройтС Π΅Π³ΠΎ
  6. Π‘ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΊΡ†ΠΈΡŽ ΠΈΠ»ΠΈ скрипт для развСртывания ПО
  7. Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚ для настроСнного сСрвСра
  8. Π—Π°ΠΊΠ°ΠΆΠΈΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ сСрвСр, Π²Ρ‹Π±Ρ€Π°Π² Π² Π²Ρ‹ΠΏΠ°Π΄Π°ΡŽΡ‰Π΅ΠΌ спискС Β«Π¨Π°Π±Π»ΠΎΠ½ сСрвСра» созданный Ρ€Π°Π½Π΅Π΅ ΡΠ½Π°ΠΏΡˆΠΎΡ‚
  9. Π’ случаС ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎΠ³ΠΎ создания сСрвСра, ΠΏΠ΅Ρ€Π΅Π΄Π°ΠΉΡ‚Π΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π½Π° этапС 6 тСхничСской ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ΅
  10. Π’ случаС ошибки Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΡ‚ΠΎΡ‡Π½ΠΈΡ‚ΡŒ Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρƒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ настройку

Для Π²Π»Π°Π΄Π΅Π»ΡŒΡ†Π΅Π² бизнСса: ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚Π΅ свой софт

Если Π²Ρ‹ β€” Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ софта, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π·Π²ΠΎΡ€Π°Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π½Π° VPS, Ρ‚ΠΎ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вас Π² маркСтплСйс. Π’Π°ΠΊ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΠΌΠΎΡ‡ΡŒ Π²Π°ΠΌ привСсти Π½ΠΎΠ²Ρ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠ², Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ ΡƒΠ·Π½Π°Π²Π°Π΅ΠΌΠΎΡΡ‚ΡŒ. ΠŸΠΈΡˆΠΈΡ‚Π΅ Π½Π°ΠΌ

РасскаТитС Π² коммСнтариях, ΠΊΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±Ρ€Π°Π·Π° Π²Π°ΠΌ Π½Π΅ Ρ…Π²Π°Ρ‚Π°Π΅Ρ‚?

И ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠΌ Π΅Π³ΠΎ сами

БозданиС шаблона VPS с Drupal 9 на Centos 8

БозданиС шаблона VPS с Drupal 9 на Centos 8

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com