Drupal — это система управления контентом (CMS) с открытым исходным кодом, написанная на PHP. Многие организации по всему миру используют ее для создания блогов, правительственных сайтов, корпоративных веб-сайтов и т. д. Она поставляется с растущим набором функций и модулей для расширения ее функциональности, что позволяет создавать любые веб-сайты.
В этом руководстве вы узнаете, как установить Drupal с помощью Docker на сервере Ubuntu 22.04. Drupal работает с PHP 8.2 и MySQL. Он также поддерживает PostgreSQL с версии 9, но есть некоторые ошибки. Поэтому в нашем руководстве мы будем использовать MySQL. Мы будем использовать Docker Compose для интеграции Drupal с Nginx и инструментом Certbot для обслуживания сайта Drupal по безопасному протоколу HTTPS.
Необходимые условия
- Сервер под управлением Ubuntu 22.04 с минимум 1 ГБ ОЗУ для небольших сообществ. Для размещения более крупных сообществ вам понадобится сервер с минимум 2 ГБ ОЗУ или более.
- Пользователь без прав root с привилегиями sudo.
- Полное доменное имя (FQDN), указывающее на ваш сервер. Для наших целей мы будем использовать
example.comв качестве доменного имени. - Убедитесь, что все обновлено.
$ sudo apt update
- Установите базовые пакеты утилит. Некоторые из них могут быть уже установлены.
$ sudo apt install wget curl nano software-properties-common dirmngr apt-transport-https gnupg gnupg2 ca-certificates lsb-release ubuntu-keyring unzip -y
Шаг 1 — Настройте брандмауэр
Первый шаг — настроить брандмауэр. Ubuntu по умолчанию поставляется с ufw (Uncomplicated Firewall).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Вы должны получить следующий результат.
Status: inactive
Разрешите порт SSH, чтобы брандмауэр не прервал текущее соединение при его включении.
$ sudo ufw allow OpenSSH
Разрешите также порты HTTP и HTTPS.
$ sudo ufw allow http $ sudo ufw allow https
Включите брандмауэр.
$ sudo ufw enable Command may disrupt existing ssh connections. Proceed with operation (y|n)? y Firewall is active and enabled on system startup
Снова проверьте состояние брандмауэра.
$ sudo ufw status
Вы должны увидеть похожий результат.
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere 80/tcp ALLOW Anywhere 443 ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) 80/tcp (v6) ALLOW Anywhere (v6) 443 (v6) ALLOW Anywhere (v6)
Шаг 2 — Установите Docker и Docker Compose
Ubuntu 22.04 поставляется с более старой версией Docker. Чтобы установить последнюю версию, сначала импортируйте ключ GPG Docker.
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
Создайте файл репозитория Docker.
$ echo \ "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Обновите список системных репозиториев.
$ sudo apt update
Установите последнюю версию Docker.
$ sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Убедитесь, что он работает.
$ sudo systemctl status docker
? docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sat 2023-01-14 10:41:35 UTC; 2min 1s ago
TriggeredBy: ? docker.socket
Docs: https://docs.docker.com
Main PID: 2054 (dockerd)
Tasks: 52
Memory: 22.5M
CPU: 248ms
CGroup: /system.slice/docker.service
?? 2054 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
По умолчанию Docker требует прав root. Если вы хотите избежать использования sudo каждый раз при запуске команды docker , добавьте свое имя пользователя в группу docker .
$ sudo usermod -aG docker $(whoami)
Чтобы это изменение вступило в силу, вам необходимо выйти из системы и снова войти под тем же именем пользователя или использовать следующую команду.
$ su - ${USER}
Убедитесь, что ваш пользователь добавлен в группу Docker.
$ groups navjot wheel docker
Шаг 3 — Создание файла Docker Compose для Drupal
Создайте каталог для Drupal.
$ mkdir ~/drupal
Перейдите в этот каталог.
$ cd ~/drupal
Создайте и откройте файл docker-compose.yml для редактирования.
$ nano docker-compose.yml
Вставьте в него следующий код.
services:
mysql:
image: mysql:8.0
container_name: mysql
restart: unless-stopped
env_file: .env
volumes:
- db-data:/var/lib/mysql
networks:
- internal
drupal:
image: drupal:10-fpm-alpine
container_name: drupal
depends_on:
- mysql
restart: unless-stopped
networks:
- internal
- external
volumes:
- drupal-data:/var/www/html
webserver:
image: nginx:1.22.1-alpine
container_name: webserver
depends_on:
- drupal
restart: unless-stopped
ports:
- 80:80
volumes:
- drupal-data:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- certbot-etc:/etc/letsencrypt
networks:
- external
certbot:
depends_on:
- webserver
image: certbot/certbot
container_name: certbot
volumes:
- certbot-etc:/etc/letsencrypt
- drupal-data:/var/www/html
command: certonly --webroot --webroot-path=/var/www/html --email sammy@your_domain --agree-tos --no-eff-email --staging -d example.com -d www.example.com
networks:
external:
driver: bridge
internal:
driver: bridge
volumes:
drupal-data:
db-data:
certbot-etc:
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Давайте рассмотрим каждую службу, определенную в вышеуказанном файле.
Служба MySQL Docker
Здесь мы загружаем последнюю версию mysql:8.0 из Docker hub. Мы используем версию 8.x вместо последней версии. Таким образом, мы можем использовать стабильную и проверенную версию MySQL, которая работает с Drupal. Мы установили имя для контейнера, которое можно использовать с командами Docker для остановки, запуска и просмотра журналов. Контейнер будет продолжать работать, пока его не остановят вручную. Мы определили файл .env который будем заполнять учетными данными MySQL. Мы также подключили именованный том db-data к каталогу /var/lib/mysql в контейнере. Служба MySQL будет использовать внутреннюю сеть для подключения к Drupal.
Служба Drupal
Мы используем образ Drupal 10 Alpine. Образы Alpine docker имеют меньший размер. Этот образ также содержит PHP-FPM для обработки PHP. Он будет работать вместе с Nginx для обслуживания сайта. Опция depends_on указывает Drupal подключиться к службе MySQL. Она также гарантирует, что контейнер Drupal всегда будет запускаться после контейнера MySQL. Drupal использует внутреннюю сеть для подключения к MySQL и внешнюю сеть для доступа к другим контейнерам. Мы также создали именованный том для Drupal, чтобы он указывал на /var/www/html каталог в контейнере.
Служба Nginx
Мы используем образ Alpine для Nginx. Он открывает порт 80 для хоста. Мы используем два именованных тома, один для общедоступного каталога Drupal, а другой для хранения SSL-сертификатов Let’s Encrypt. Третий том привязан к каталогу конфигурации Nginx на хосте, который мы определим позже. Nginx также подключается к внешней сети Docker, чтобы сайт Drupal мог работать.
Сервис Certbot
И, наконец, мы загружаем образ Certbot для установки SSL-сертификатов. Он делится своими томами с сервисом Nginx для сертификатов и определения веб-корня. Мы также включили команду, которая будет запускаться при создании контейнера. Здесь команда использует флаг --staging чтобы впервые получить тестовый сервер. Нам нужен nginx для проверки сертификатов, но Nginx не запустится, если сертификаты отсутствуют. Поэтому мы создадим промежуточный сертификат, используем его для запуска Nginx, а затем создадим настоящие сертификаты.
Шаг 4 — Создание конфигурации Nginx
Создайте каталог для конфигурации Nginx.
$ mkdir nginx-conf
Создайте и откройте файл для Nginx.
$ nano nginx-conf/drupal.conf
Вставьте в него следующий код.
server {
listen 80;
listen [::]:80;
server_name drupal.example.com;
index index.php index.html index.htm;
root /var/www/html;
location ~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass drupal:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
В этот файл мы добавим блок сервера с директивами для имени нашего сервера и корня документов, а также блоки расположения, чтобы направлять запросы клиента Certbot на сертификаты, обработку PHP и запросы на статические ресурсы. На данный момент Nginx будет прослушивать только порт 80, чтобы Certbot мог запросить промежуточный сертификат, поместив временный файл в каталог /var/www/html/.well-known/acme-challenge для проверки DNS. Это позволяет нам использовать Certbot с плагином webroot.
Шаг 5 — Создание SSL-сертификатов
Для создания SSL-сертификатов мы запустим наши контейнеры. Правильные промежуточные сертификаты будут доступны в папке /etc/letsencrypt/live в контейнере Nginx.
$ docker compose up -d
Проверьте статус служб.
$ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS certbot certbot/certbot "certbot certonly --…" certbot 6 minutes ago Exited (1) 5 minutes ago drupal drupal:10-fpm-alpine "docker-php-entrypoi…" drupal 6 minutes ago Up 6 minutes 9000/tcp mysql mysql:8.0 "docker-entrypoint.s…" mysql 6 minutes ago Up 6 minutes 3306/tcp, 33060/tcp webserver nginx:1.22.1-alpine "/docker-entrypoint.…" webserver 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp
Контейнер Certbot успешно завершает работу после генерации сертификата. Проверьте расположение сертификатов в контейнере Nginx.
$ docker compose exec webserver ls -la /etc/letsencrypt/live
Вы получите следующий результат.
total 16 drwx------ 3 root root 4096 Jan 17 09:15 . drwxr-xr-x 9 root root 4096 Jan 17 09:15 .. -rw-r--r-- 1 root root 740 Jan 17 09:15 README drwxr-xr-x 2 root root 4096 Jan 17 09:15 drupal.example.com
Это подтверждает, что все прошло успешно. Следующим шагом является генерация фактических сертификатов.
Откройте файл docker-compose.yml для редактирования.
$ nano docker-compose.yml
Замените флаг --staging в разделе службы Certbot и замените его флагом --force-renewal . Это указывает Certbot запросить новые сертификаты для вашего домена. Флаг обновления используется, потому что он будет использоваться для обновления сертификатов с этого момента.
certbot:
depends_on:
- webserver
image: certbot/certbot
container_name: certbot
volumes:
- certbot-etc:/etc/letsencrypt
- drupal-data:/var/www/html
command: certonly --webroot --webroot-path=/var/www/html --email [email protected] --agree-tos --no-eff-email --staple-ocsp --force-renewal -d drupal.example.com
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Запустите команду docker compose up еще раз, чтобы воссоздать контейнер Certbot. Флаг --no-deps указатель Certbot пропускает запуск webserver контейнера, поскольку он уже запущен.
$ docker compose up --force-recreate --no-deps certbot
Вы получите следующий результат.
[+] Running 1/0 ? Container certbot Recreated 0.1s Attaching to certbot certbot | Saving debug log to /var/log/letsencrypt/letsencrypt.log certbot | Account registered. certbot | Renewing an existing certificate for drupal.example.com certbot | certbot | Successfully received certificate. certbot | Certificate is saved at: /etc/letsencrypt/live/drupal.example.com/fullchain.pem certbot | Key is saved at: /etc/letsencrypt/live/drupal.example.com/privkey.pem certbot | This certificate expires on 2023-04-17. certbot | These files will be updated when the certificate renews. certbot | NEXT STEPS: certbot | - The certificate will need to be renewed before it expires. Certbot can automatically renew the certificate in the background, but you may need to take steps to enable that functionality. See https://certbot.org/renewal-setup for instructions. certbot | certbot | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot | If you like Certbot, please consider supporting our work by: certbot | * Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate certbot | * Donating to EFF: https://eff.org/donate-le certbot | - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - certbot exited with code 0
Шаг 6 — Настройте Nginx для SSL
Теперь, когда наши сертификаты активны, нам нужно настроить Nginx для их обслуживания и перенаправления HTTP-запросов на HTTPS.
Остановите сервер Nginx.
$ docker stop webserver
Создайте новый файл Nginx для настройки SSL и откройте его для редактирования.
$ nano nginx-conf/drupal-ssl.conf
Вставьте в него следующий код.
server {
listen 80;
listen [::]:80;
server_name drupal.example.com;
location ~ /.well-known/acme-challenge {
allow all;
root /var/www/html;
}
location / {
rewrite ^ https://$host$request_uri? permanent;
}
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name drupal.example.com;
index index.php index.html index.htm;
root /var/www/html;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/drupal.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/drupal.example.com/privkey.pem;
ssl_trusted_certificate /etc/letsencrypt/live/drupal.example.com/chain.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;
ssl_prefer_server_ciphers off;
ssl_ecdh_curve secp384r1;
ssl_dhparam /etc/ssl/certs/dhparam.pem;
# OCSP stapling
ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header X-Content-Type-Options "nosniff" always;
add_header Referrer-Policy "no-referrer-when-downgrade" always;
add_header Content-Security-Policy "default-src * data: 'unsafe-eval' 'unsafe-inline'" always;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
rewrite ^/core/authorize.php/core/authorize.php(.*)$ /core/authorize.php$1;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass drupal:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off; access_log off;
}
location = /robots.txt {
log_not_found off; access_log off; allow all;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png)$ {
expires max;
log_not_found off;
}
}
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Блок HTTP указывает местоположение плагина Certbot webroot и перенаправляет любой HTTP-запрос на HTTPS.
Следующим шагом является проверка того, что контейнер Nginx прослушивает порт 443. Откройте файл docker-compose.yml для редактирования.
$ nano docker-compose.yml
В разделе Nginx файла внесите изменения, чтобы открыть порт 443 и включить SSL, как показано ниже.
webserver:
image: nginx:1.22.1-alpine
container_name: webserver
depends_on:
- drupal
restart: unless-stopped
ports:
- 80:80
- 443:443
volumes:
- drupal-data:/var/www/html
- ./nginx-conf:/etc/nginx/conf.d
- certbot-etc:/etc/letsencrypt
- /etc/ssl/certs/dhparam.pem:/etc/ssl/certs/dhparam.pem
networks:
- external
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Теперь, когда мы включили и добавили конфигурацию SSL для Nginx, вы можете удалить старый файл конфигурации HTTP.
$ rm nginx-conf/drupal.conf
Перед перезапуском Nginx нам необходимо сгенерировать сертификат группы Diffie-Hellman который мы уже настроили выше.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Пересоздайте контейнер Nginx.
$ docker compose up -d --force-recreate --no-deps webserver
Проверьте состояние контейнеров.
$ docker compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS certbot certbot/certbot "certbot certonly --…" certbot 3 hours ago Exited (0) 3 hours ago drupal drupal:10-fpm-alpine "docker-php-entrypoi…" drupal 3 hours ago Up 3 hours 9000/tcp mysql mysql:8.0 "docker-entrypoint.s…" mysql 3 hours ago Up 3 hours 3306/tcp, 33060/tcp webserver nginx:1.22.1-alpine "/docker-entrypoint.…" webserver 15 seconds ago Up 13 seconds 0.0.0.0:80->80/tcp, :::80->80/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp
Шаг 7 — Запуск веб-установщика Drupal
Пришло время запустить веб-установщик Drupal. Откройте URL-адрес https://drupal.example.com в браузере, и вы увидите следующий экран.

Нажмите кнопку Сохранить и продолжить чтобы перейти на страницу профиля установки.

Мы остановимся на стандартном профиле. Нажмите кнопку Сохранить и продолжить чтобы перейти на страницу настройки базы данных.

Введите учетные данные базы данных, которые мы использовали в файле среды, разверните раздел Дополнительные параметры и введите mysql в качестве хоста базы данных. Это соответствует имени службы MySQL в нашем файле Docker compose, к которой Drupal должен будет подключиться.
Нажмите кнопку Сохранить и продолжить чтобы продолжить. Drupal начнет установку модулей и тем по умолчанию.

Далее вы перейдете на страницу настройки Drupal. Введите название сайта, адрес электронной почты, имя пользователя, пароль и региональные настройки. По завершении нажмите кнопку Сохранить и продолжить .
Наконец, вы попадаете на панель управления Drupal. Вы можете начать использовать Drupal для создания своего веб-сайта.

Шаг 8 — Настройка Drupal
Этот шаг не является обязательным, но помогает улучшить производительность Drupal. Первый шаг — настроить уровень изоляции транзакций MySQL. По умолчанию уровень изоляции транзакций для MySQL, MariaDB и аналогичных баз данных — «REPEATABLE READ». Эта настройка в Drupal может привести к тупиковым ситуациям в таблицах, в результате чего сайт будет работать очень медленно или вообще не отвечать. Рекомендуемый уровень изоляции транзакций для сайтов Drupal — «READ COMMITTED».
Войдите в SSH-оболочку контейнера MySQL.
$ docker exec -it mysql bash
Откройте оболочку MySQL, используя пользователя root.
bash-4.4# mysql -u root -p Enter password:
Выполните следующую команду, чтобы изменить уровень транзакций глобально.
mysql> SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED;
Выйдите из оболочки MySQL и контейнера, дважды набрав exit .
Следующим шагом является ввод вашего домена в качестве доверенного хоста для защиты от атак HTTP HOST Header. Для этого нам нужно отредактировать файл /var/www/html/sites/default/settings.php в контейнере Drupal. Поскольку мы используем именованный том для файлов Drupal, рекомендуемый способ внесения изменений — скопировать файл из контейнера на хост, внести изменения и скопировать его обратно в контейнер. Вы можете сделать это с любым файлом, который необходимо изменить в установке Drupal.
Скопируйте файл настроек из контейнера на хост.
$ docker cp drupal:/var/www/html/sites/default/settings.php settings.php
Файл находится в режиме «только для чтения». Предоставьте ему права на запись.
$ chmod+w settings.php
Откройте файл для редактирования.
$ nano settings.php
Найдите в файле следующий раздел.
#$settings['trusted_host_patterns'] = [ # '^www\.example\.com
Удалите комментарий, удалив знак решетки и добавив свой домен Drupal, как показано ниже.
$settings['trusted_host_patterns'] = [ '^drupal\.example\.com
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Снова удалите права на запись.
$ chmod -w settings.php
Скопируйте файл обратно в контейнер.
$ docker cp settings.php drupal:/var/www/html/sites/default
Шаг 9 — Резервное копирование Drupal
Мы будем использовать командную строку для резервного копирования базы данных Drupal. Перейдите в каталог Drupal.
$ cd ~/drupal
Создайте каталог для резервных копий.
$ mkdir backup-data
Используйте следующую команду для резервного копирования базы данных Drupal. Вам будет предложено ввести пароль root MySQL.
$ docker compose exec mysql sh -c "exec mysqldump drupal -uroot -p" | tee backup-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null Enter password: root_password
Вышеуказанная команда создаст резервную копию SQL в каталоге ~/drupal/backup-data .
Проверьте содержимое каталога.
$ ls -al backup-data total 6716 drwxrwxr-x 2 navjot navjot 4096 Jan 19 13:59 . drwxrwxr-x 4 navjot navjot 4096 Jan 19 13:35 .. -rw-rw-r-- 1 navjot navjot 6868325 Jan 19 13:37 data_19-01-2023_13_36_58.sql
Вы можете увидеть резервную копию базы данных в каталоге. Вы можете восстановить эту базу данных с помощью инструмента phpMyAdmin или с помощью следующей команды.
$ docker compose exec mysql sh -c "exec mysql -uroot -p"
You can create a cron job to back up the database regularly.
Create the backup script in the /etc/cron.daily directory and open it for editing.
$ sudo nano /etc/cron.daily/drupalbackup.sh
Вставьте в него следующий код.
#!/bin/bash cd /home/navjot/drupal/ /usr/bin/docker compose exec mysql sh -c "exec mysqldump drupal -uroot -p" | tee backup-data/data_`date +%d-%m-%Y"_"%H_%M_%S`.sql >/dev/null
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Сделайте скрипт исполняемым.
$ sudo chmod +x /etc/cron.daily/drupalbackup.sh
Теперь ваша база данных будет ежедневно резервироваться.
Шаг 10 — Обновление Drupal
Первым шагом при обновлении Drupal является резервное копирование базы данных Drupal с помощью команды из шага 9.
Затем перейдите в каталог.
$ cd ~/drupal
Остановите контейнеры.
$ docker compose down
Загрузите последние образы контейнеров.
$ docker compose pull drupal:10-fpm-alpine
Если вы хотите обновить систему до следующей основной версии, вам необходимо соответствующим образом изменить имя образа и ознакомиться с примечаниями к выпуску Drupal, чтобы проверить наличие каких-либо проблем.
При необходимости внесите необходимые изменения в docker-compose.yml . Остальные образы можно обновить, изменив их определение в файле Docker compose.
Перезапустите контейнеры Drupal. Это также позволит загрузить последние образы для второстепенных версий других пакетов.
$ docker compose up -d
Заключение
На этом заканчивается наше руководство по установке Drupal с помощью Docker на сервере Ubuntu 22.04. Если у вас есть вопросы, задавайте их в комментариях ниже.
, #];
Удалите комментарий, удалив знак решетки и добавив свой домен Drupal, как показано ниже.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Снова удалите права на запись.
Скопируйте файл обратно в контейнер.
Шаг 9 — Резервное копирование Drupal
Мы будем использовать командную строку для резервного копирования базы данных Drupal. Перейдите в каталог Drupal.
Создайте каталог для резервных копий.
Используйте следующую команду для резервного копирования базы данных Drupal. Вам будет предложено ввести пароль root MySQL.
Вышеуказанная команда создаст резервную копию SQL в каталоге ~/drupal/backup-data .
Проверьте содержимое каталога.
Вы можете увидеть резервную копию базы данных в каталоге. Вы можете восстановить эту базу данных с помощью инструмента phpMyAdmin или с помощью следующей команды.
Вставьте в него следующий код.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Сделайте скрипт исполняемым.
Теперь ваша база данных будет ежедневно резервироваться.
Шаг 10 — Обновление Drupal
Первым шагом при обновлении Drupal является резервное копирование базы данных Drupal с помощью команды из шага 9.
Затем перейдите в каталог.
Остановите контейнеры.
Загрузите последние образы контейнеров.
Если вы хотите обновить систему до следующей основной версии, вам необходимо соответствующим образом изменить имя образа и ознакомиться с примечаниями к выпуску Drupal, чтобы проверить наличие каких-либо проблем.
При необходимости внесите необходимые изменения в docker-compose.yml . Остальные образы можно обновить, изменив их определение в файле Docker compose.
Перезапустите контейнеры Drupal. Это также позволит загрузить последние образы для второстепенных версий других пакетов.
Заключение
На этом заканчивается наше руководство по установке Drupal с помощью Docker на сервере Ubuntu 22.04. Если у вас есть вопросы, задавайте их в комментариях ниже.
, ];
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Снова удалите права на запись.
Скопируйте файл обратно в контейнер.
Шаг 9 — Резервное копирование Drupal
Мы будем использовать командную строку для резервного копирования базы данных Drupal. Перейдите в каталог Drupal.
Создайте каталог для резервных копий.
Используйте следующую команду для резервного копирования базы данных Drupal. Вам будет предложено ввести пароль root MySQL.
Вышеуказанная команда создаст резервную копию SQL в каталоге ~/drupal/backup-data .
Проверьте содержимое каталога.
Вы можете увидеть резервную копию базы данных в каталоге. Вы можете восстановить эту базу данных с помощью инструмента phpMyAdmin или с помощью следующей команды.
Вставьте в него следующий код.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Сделайте скрипт исполняемым.
Теперь ваша база данных будет ежедневно резервироваться.
Шаг 10 — Обновление Drupal
Первым шагом при обновлении Drupal является резервное копирование базы данных Drupal с помощью команды из шага 9.
Затем перейдите в каталог.
Остановите контейнеры.
Загрузите последние образы контейнеров.
Если вы хотите обновить систему до следующей основной версии, вам необходимо соответствующим образом изменить имя образа и ознакомиться с примечаниями к выпуску Drupal, чтобы проверить наличие каких-либо проблем.
При необходимости внесите необходимые изменения в docker-compose.yml . Остальные образы можно обновить, изменив их определение в файле Docker compose.
Перезапустите контейнеры Drupal. Это также позволит загрузить последние образы для второстепенных версий других пакетов.
Заключение
На этом заканчивается наше руководство по установке Drupal с помощью Docker на сервере Ubuntu 22.04. Если у вас есть вопросы, задавайте их в комментариях ниже.
, #];
Удалите комментарий, удалив знак решетки и добавив свой домен Drupal, как показано ниже.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Снова удалите права на запись.
Скопируйте файл обратно в контейнер.
Шаг 9 — Резервное копирование Drupal
Мы будем использовать командную строку для резервного копирования базы данных Drupal. Перейдите в каталог Drupal.
Создайте каталог для резервных копий.
Используйте следующую команду для резервного копирования базы данных Drupal. Вам будет предложено ввести пароль root MySQL.
Вышеуказанная команда создаст резервную копию SQL в каталоге ~/drupal/backup-data .
Проверьте содержимое каталога.
Вы можете увидеть резервную копию базы данных в каталоге. Вы можете восстановить эту базу данных с помощью инструмента phpMyAdmin или с помощью следующей команды.
Вставьте в него следующий код.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Сделайте скрипт исполняемым.
Теперь ваша база данных будет ежедневно резервироваться.
Шаг 10 — Обновление Drupal
Первым шагом при обновлении Drupal является резервное копирование базы данных Drupal с помощью команды из шага 9.
Затем перейдите в каталог.
Остановите контейнеры.
Загрузите последние образы контейнеров.
Если вы хотите обновить систему до следующей основной версии, вам необходимо соответствующим образом изменить имя образа и ознакомиться с примечаниями к выпуску Drupal, чтобы проверить наличие каких-либо проблем.
При необходимости внесите необходимые изменения в docker-compose.yml . Остальные образы можно обновить, изменив их определение в файле Docker compose.
Перезапустите контейнеры Drupal. Это также позволит загрузить последние образы для второстепенных версий других пакетов.